Total Pageviews

Thursday, 23 November 2023

sing-box

The universal proxy platform.

sing-box.sagernet.org

Packaging status

Documentation

https://sing-box.sagernet.org

Support

https://community.sagernet.org/c/sing-box/

from https://github.com/SagerNet/sing-box

--------------------------------------------------------------------------------

quic-go API wrapper and QUIC based protocol implementations  .

sing-quic

from https://github.com/SagerNet/sing-quic

------------------------------------------------------

 

https://www.youtube.com/watch?v=o-IFEu4GENE

---------------------------------------------------------------------------------------------

https://sing-box.sagernet.org/installation/package-manager/#managed-installation

https://sing-box.sagernet.org/installation/build-from-source/

-------------------------------------------------------------------------------------------------

Sing-box 全家桶 --- 一键多协议脚本  

Sing-box 全家桶】

目录

更新信息

2023.11.21 v1.1.1 1. XTLS + REALITY remove flow: xtls-reality-vision to support multiplexing and TCP brutal (requires reinstallation); 2. Clash meta add multiplexing parameter. 1. XTLS + REALITY 去掉 xtls-reality-vision 流控以支持多路复用和 TCP brutal (需要重新安装); 2. Clash meta 增加多路复用参数

2023.11.17 v1.1.0 1. Add [ H2 + Reality ] and [ gRPC + Reality ]. Reinstall is required; 2. Use beta verion instead of alpha; 3. Support TCP brutal and add the official install script; 1. 增加 [ H2 + Reality ] 和 [ gRPC + Reality ],需要重新安装; 2. 由于 Sing-box 更新极快,将使用 beta 版本替代 alpha 3. 支持 TCP brutal,并提供官方安装脚本

2023.11.15 v1.0.1 1. Support TCP brutal. Reinstall is required; 2. Use alpha verion instead of latest; 3. Change the default CDN to [ cn.azhz.eu.org ]; 1. 支持 TCP brutal,需要重新安装; 2. 由于 Sing-box 更新极快,将使用 alpha 版本替代 latest; 3. 默认优选改为 [ cn.azhz.eu.org ]

2023.10.29 v1.0 正式版 1. Sing-box Family bucket v1.0; 2. After installing, add [sb] shortcut; 3. Output the configuration for Sing-box Client; 1. Sing-box 全家桶 v1.0; 2. 安装后,增加 [sb] 的快捷运行方式; 3. 输出 Sing-box Client 配置

历史更新 history(点击即可展开或收起)

项目特点:

  • 一键部署多协议,可以单选、多选或全选 ShadowTLS v3 / XTLS Reality / Hysteria2 / Tuic V5 / ShadowSocks / Trojan / Vmess + ws / Vless + ws + tls / H2 Reality / gRPC Reality, 总有一款适合你
  • 节点信息输出到 V2rayN / Clash Meta / 小火箭 / Nekobox / Sing-box
  • 自定义端口,适合有限开放端口的 nat 小鸡
  • 内置 warp 链式代理解锁 chatGPT
  • 不需要域名 ( vmess / vless 方案例外)
  • 智能判断操作系统: Ubuntu 、Debian 、CentOS 、Alpine 和 Arch Linux,请务必选择 LTS 系统
  • 支持硬件结构类型: AMD 和 ARM,支持 IPv4 和 IPv6

Sing-box for VPS 运行脚本:

bash <(wget -qO- https://raw.githubusercontent.com/fscarmen/sing-box/main/sing-box.sh)
Option 参数 Remark 备注
-c Chinese 中文
-e English 英文
-u Uninstall 卸载
-n Export Nodes list 显示节点信息
-p Change the nodes start port 更改节点的起始端口
-o Stop / Start the Sing-box service 停止/开启 Sing-box 服务
-v Sync Argo Xray to the newest 同步 Argo Xray 到最新版本
-b Upgrade kernel, turn on BBR, change Linux system 升级内核、安装BBR、DD脚本
-r Add and remove protocols 添加和删除协议

Vmess / Vless 方案设置任意端口回源以使用 cdn

举例子 IPv6: vmess [2a01:4f8:272:3ae6:100b:ee7a:ad2f:1]:10006 image

  1. 解析域名
image
  1. 设置 Origin rule
image

Nekobox 设置 shadowTLS 方法

  1. 复制脚本输出的两个 Neko links 进去
image
  1. 设置链式代理,并启用 右键 -> 手动输入配置 -> 类型选择为 "链式代理"。

点击 "选择配置" 后,给节点起个名字,先后选 1-tls-not-use 和 2-ss-not-use,按 enter 或 双击 使用这个服务器。一定要注意顺序不能反了,逻辑为 ShadowTLS -> ShadowSocks。

image

主体目录文件及说明

/etc/sing-box/                               # 项目主体目录
|-- cert                                     # 存放证书文件目录
|   |-- cert.pem                             # SSL/TLS 安全证书文件
|   `-- private.key                          # SSL/TLS 证书的私钥信息
|-- conf                                     # sing-box server 配置文件目录
|   |-- 00_log.json                          # 日志配置文件
|   |-- 01_outbounds.json                    # 服务端出站配置文件,已加了 warp 账户信息
|   |-- 02_route.json                        # 路由配置文件,chatGPT 使用 warp ipv6 链式代理出站
|   |-- 11_SHADOWTLS_inbounds.json           # ShadowTLS 协议配置文件
|   |-- 12_REALITY_inbounds.json             # Reality 协议配置文件
|   |-- 13_HYSTERIA2_inbounds.json           # Hysteria2 协议配置文件
|   |-- 14_TUIC_inbounds.json                # Tuic V5 协议配置文件
|   |-- 15_SHADOWSOCKS_inbounds.json         # Shadowsocks 协议配置文件
|   |-- 16_TROJAN_inbounds.json              # Trojan 协议配置文件
|   |-- 17_VMESS_WS_inbounds.json            # vmess + ws 协议配置文件
|   `-- 18_VLESS_WS_inbounds.json            # vless + ws + tls 协议配置文件
|-- logs
|   `-- box.log                              # sing-box 运行日志文件
|-- geosite.db                               # 用于基于域名或网站分类来进行访问控制、内容过滤或安全策略
|-- geoip.db                                 # 用于根据 IP 地址来进行地理位置策略或访问控制
|-- language                                 # 存放脚本语言文件,E 为英文,C 为中文
|-- list                                     # 节点信息列表
|-- sing-box                                 # sing-box 主程序
`-- sb.sh                                    # 快捷方式脚本文件

鸣谢下列作者的文章和项目:

千歌 sing-box 模板: https://github.com/chika0801/sing-box-examples
瞎折腾 sing-box 模板: https://t.me/ztvps/37

from https://github.com/fscarmen/sing-box 

-------------------------------------------------------

Experimental iOS/macOS client for sing-box。

sing-box-for-apple

Experimental iOS/macOS/tvOS client for sing-box, the universal proxy platform.

Documentation

SFI | SFM

from https://github.com/SagerNet/sing-box-for-apple

----------------------------------------------------------------

Experimental Android client for sing-box  。

SFA

Experimental Android client for sing-box, the universal proxy platform.

Documentation

https://sing-box.sagernet.org/installation/clients/sfa/

from https://github.com/SagerNet/sing-box-for-android 

--------------------------------------------------------------

https://sagernet.org/

----------------------------

sing-box 配置示例.

TCP Brutal 使用指南

Brutal: 这是 Hysteria 自有的拥塞控制算法。与 BBR 不同,Brutal 采用固定速率模型,丢包或 RTT 变化不会降低速度。相反,如果无法达到预定的目标速率,反而会根据计算的丢包率提高发送速率来进行补偿。Brutal 只在你知道(并正确设置了)当前网络的最大速度时才能正常运行。其擅长在拥塞的网络中抢占带宽,因此得名。

Brutal 如果带宽设置低于实际最大值也能正常运行;相当于限速。重要的是不要将其设置得高于实际最大值,否则会因为补偿机制导致连接速度慢、不稳定,且浪费流量。

Hysteria 是多倍发包吗?

My response to the recent controversy about TCP Brutal

服务端安装 TCP Brutal

安装脚本:

bash <(curl -fsSL https://tcp.hy2.sh/)

需要内核版本 4.9 或以上,推荐使用 5.8 以上的内核。对于小于 5.8 的内核, 只支持 IPv4。

客户端配置

            "multiplex": {
                "enabled": true,
                "protocol": "h2mux", // 默认 h2mux,可选 smux | yamux | h2mux
                "max_connections": 1, // 建议为 1
                "min_streams": 4,
                "padding": false, // 默认 false,可选 false | true
                "brutal": {
                    "enabled": true,
                    "up_mbps": 20,
                    "down_mbps": 100
                }
            }

需要 sing-box 版本 1.7.0 或更高。

支持的:ShadowTLS | Shadowsocks | Trojan | VLESS | VLESS-REALITY | VMess-HTTPUpgrade-TLS | VMess-WebSocket-TLS | VMess-WebSocket | VMess

  1. VLESS / VLESS-REALITY 中 "flow": "" 必须留空

  2. 两端 "padding" 必须一致

  3. "up_mbps" / "down_mbps" 必填,不会生效

示例配置

服务端配置

            "multiplex": {
                "enabled": true,
                "padding": false,
                "brutal": {
                    "enabled": true,
                    "up_mbps": 100, // 客户端的下行速率
                    "down_mbps": 20
                }
            }

需要 sing-box 版本 1.7.0 或更高。
建议 "up_mbps" 填小一些,量力而行,不会有错

支持的:ShadowTLS | Shadowsocks | Trojan | VLESS | VLESS-REALITY | VMess-HTTPUpgrade-TLS | VMess-WebSocket-TLS | VMess-WebSocket | VMess

  1. VLESS / VLESS-REALITY 中 "flow": "" 必须留空

  2. 两端 "padding" 必须一致

  3. "up_mbps" / "down_mbps" 必填,"down_mbps" 不会生效

示例配置

sing-box 安装指南

一键脚本 sing-box-install

安装正式版

bash -c "$(curl -L https://sing-box.vercel.app)" @ install

安装预发布版

bash -c "$(curl -L https://sing-box.vercel.app)" @ install --beta

编译安装最新版

bash -c "$(curl -L https://sing-box.vercel.app)" @ install --go

卸载

bash -c "$(curl -L https://sing-box.vercel.app)" @ remove
项目
程序 /usr/local/bin/sing-box
配置 /usr/local/etc/sing-box/config.json
geoip /usr/local/share/sing-box/geoip.db
geosite /usr/local/share/sing-box/geosite.db
热载 systemctl reload sing-box
重启 systemctl restart sing-box
状态 systemctl status sing-box
查看日志 journalctl -u sing-box -o cat -e
实时日志 journalctl -u sing-box -o cat -f

服务端

安装

  1. 下载程序(linux-amd64)或 编译程序
curl -Lo sing-box.tar.gz https://github.com/SagerNet/sing-box/releases/latest/download/$(curl https://api.github.com/repos/SagerNet/sing-box/releases|grep -E '"name": "sing-box-.*-linux-amd64.tar.gz"'|grep -Pv '(alpha|beta|rc)'|sed -n 's/.*"name": "\(.*\)".*/\1/p'|head -1) && tar -xzf sing-box.tar.gz && cp -f sing-box-*/sing-box . && rm -r sing-box.tar.gz sing-box-* && chown root:root sing-box && chmod +x sing-box && mv -f sing-box /usr/local/bin/
  1. 上传配置、证书和私钥
  • 将配置文件改名为 sing-box_config.json,将证书文件改名为 fullchain.cer,将私钥文件改名为 private.key,将它们上传到 /root 目录
  1. 下载systemctl配置
curl -Lo /etc/systemd/system/sing-box.service https://raw.githubusercontent.com/chika0801/sing-box-examples/main/sing-box.service && systemctl daemon-reload
  1. 启动程序
systemctl enable --now sing-box
项目
程序 /usr/local/bin/sing-box
配置 /root/sing-box_config.json
geoip /root/geoip.db
geosite /root/geosite.db
热载 systemctl reload sing-box
重启 systemctl restart sing-box
状态 systemctl status sing-box
查看日志 journalctl -u sing-box -o cat -e
实时日志 journalctl -u sing-box -o cat -f

卸载

systemctl disable --now sing-box && rm -f /usr/local/bin/sing-box /root/sing-box_config.json /etc/systemd/system/sing-box.service

客户端

Android 使用方法:

  1. 下载Android客户端程序SFA-arm64-v8a.apk。

  2. 参考客户端配置示例,按需修改后导入。

Windows 使用方法:

  1. 下载Windows客户端程序sing-box-windows-amd64.zip。

  2. 新建一个批处理文件,内容为:

start /min sing-box.exe run
  1. 参考客户端配置示例,按需修改后将文件名改为 config.json,与 sing-box.exe,批处理文件放在同一文件夹里。

  2. 右键点击 sing-box.exe 选择属性,选择兼容性,选择以管理员身份运行此程序,确定。

  3. 运行批处理文件,在弹出的用户账户控制对话框中,选择是。

     from https://github.com/chika0801/sing-box-examples 

    (相关帖子:https://briteming.blogspot.com/2023/11/tcp-brutal.html)

    ---------------------------------------------------------------------------------

    Get Sing-Box up and running quickly with our ultimate guide. With more features and better performance than v2ray-core and clash, our step-by-step instructions make installation easy. Includes working config.json files for anonymous use.

    vpnrouter.homes,  

    Ultimate Sing-Box Guide: Get Sing-Box Up and Running in No Time!

    Sing-Box Installation

    Effortless Configuration: Find Your Perfect config.json from Our Ready-Made List

    Create Your Custom config.json: Unlock the Power of Our easy json Blocks

    Master the Sing-Box: A Guide to Essential Commands

    Transform Your Home Network with Singbox VPN Router Gateway

    from https://github.com/bitcoinvps/singbox-vpn

    -------------------------------------------------------

    https://github.com/zzzgydi/sing-sword 

    -----------------------------------------------------------

    Argo sing-box for PaaS

    TIPS: 可点击仓库的“Use this template”在仓库的原基础上创建私库

    image

    项目特点

  4. 本项目用于在任意一家 PaaS 云服务商部署 Sing-box ,采用的方案为 Nginx + WebSocket + VMess/Vless/Trojan + TLS
  5. Sing-box 核心文件和配置文件作了“特殊处理”,每个项目都不同,大大降低被封和连坐风险
  6. vmess 和 vless 的 uuid 或 trojan 的密码,路径既可以自定义,又或者使用默认值
  7. 集成哪吒探针,可以自由选择是否安装
  8. 部署完成如发现不能上网,请检查域名是否被墙,可使用 Cloudflare CDN 或者 worker 解决。

部署

  • 注册任意一家 PaaS 云服务商

  • 根据 PaaS 云服务商的不同绑定自己的 github 账户或使用项目提供的Actions生成DockerHub镜像,严重建议小号+私库

  • 项目可用到的变量

    变量名 是否必须 默认值 备注
    UUID 否 de04add9-5c68-8bab-950c-08cd5320df18 可在线生成 https://www.uuidgenerator.net/
    VMESS_WSPATH 否 /vm 以 / 开头
    VLESS_WSPATH 否 /vl 以 / 开头
    TROJAN_WSPATH 否 /tr 以 / 开头
    NEZHA_SERVER 否
    哪吒探针服务端的 IP 或域名
    NEZHA_PORT 否
    哪吒探针服务端的端口
    NEZHA_KEY 否
    哪吒探针客户端专用 Key
  • GitHub Actions 用到的变量

    变量名 备注
    DOCKER_USERNAME Docker Hub 用户名
    DOCKER_PASSWORD Docker Hub 密码
    DOCKER_REPO Docker Hub 仓库名

image

from https://github.com/Misaka-blog/argo-sing-box-paas-dev


 ------------------------------------------------------------------------------

sing-box的一键安装多种协议的脚本,支持TCP Brutal

前言

其实搭建翻墙协议的脚本已经很多了,今天要介绍的这个脚本也是有自己的特色的。主要是使用起来比较方便,而且支持特别多的协议。特别是支持Multiplex、TCP Brutal、ECH,不过要开启TCP Brutal需要自己安装一下。相比于x-ui而言这个脚本没有web端,但是使用起来一样方便,接下来就给大家讲一下。

后续出一个视频和博客讲一下TCP Brutal的使用,这也是写这一篇博客的原因。

同样,这个脚本的优点还有

    所有协议均支持自签证书
    支持多用户
    支持所有协议共存。
    支持自签100年证书。支持自动续签证书。

本次使用的脚本是TinrLin的sing-box脚本。
github项目地址:
https://github.com/TinrLin/sing-box
作者也有自己的油管账号:

https://www.youtube.com/@Mr_xiao502

    SOCKS
    HTTP
    TUIC V5
    Juicity
    WireGuard--解锁 ChatGPT、Netflix、Disney+
    Hysteria2
    VLESS+TCP
    VLESS+WebSocket
    VLESS+gRPC
    VLESS+HTTPUpgrade
    VLESS+Vision+REALITY
    VLESS+H2C+REALITY
    VLESS+gRPC+REALITY
    Direct--sing-box版任意门
    Trojan+TCP
    Trojan+WebSocket
    Trojan+gRPC
    Trojan+HTTPUpgrade
    Trojan+TCP+TLS
    Trojan+H2C+TLS
    Trojan+gRPC+TLS
    Trojan+WebSocket+TLS
    Trojan+HTTPUpgrade+TLS
    Hysteria
    ShadowTLS V3
    NaiveProxy
    Shadowsocks
    VMess+TCP
    VMess+WebSocket
    VMess+gRPC
    VMess+HTTPUpgrade
    VMess+TCP+TLS
    VMess+WebSocket+TLS
    VMess+H2C+TLS
    VMess+gRPC+TLS
    VMess+HTTPUpgrade+TLS

2 脚本搭建

首先,需要使用命令行来安装依赖和程序。

    Debian&&Ubuntu使用以下命令安装依赖

apt update && apt -y install curl wget tar socat jq git openssl uuid-runtime build-essential zlib1g-dev libssl-dev libevent-dev dnsutils cron

    CentOS使用以下命令安装依赖

yum update && yum -y install curl wget tar socat jq git openssl util-linux gcc-c++ zlib-devel openssl-devel libevent-devel bind-utils cronie

安装完成脚本以后,需要执行脚本,这里使用下面的命令。

    使用以下命令运行脚本

wget -N -O /root/singbox.sh https://raw.githubusercontent.com/TinrLin/sing-box/main/Install.sh && chmod +x /root/singbox.sh && ln -sf /root/singbox.sh /usr/local/bin/singbox && bash /root/singbox.sh

使用命令运行脚本以后,界面如下:

2.1 协议安装

首次运行脚本,我们需要安装一个协议才会提示你安装sing-box内核,这里我们随便选择一个,我选择的是5 vless,在这里我安装一下reality协议。

注意不同协议的安装流程不太一样,不清楚的可以去网上搜搜,一般来说一路回车的结果也能用。

提示你选择 sing-box 的安装方式,latest是稳定版的最新版,beta是测试版,如果要开启脚本支持的多路复用功能建议使用beta版本。这里我选择了beta,个人用户更建议使用最新版。

后续提示是否开启BBR,这里可以选择Y,如果你系统里面有BBR的话,默认是不开启。

后续提示你安装哪个协议,如果是用reality我更建议使用VLESS+Vision+REALITY,更加的安全。

后续提示你选择端口,这里默认443即可,注意如果你使用多个协议的话,端口记得别冲突。
后续UUID直接回车默认随机生成。
后续提示你是否要继续添加用户,如果是个人使用直接回车默认是不添加。
后续提示你请输入可用的 ServerName 列表/目标网站地址/私钥/Short_Id/是否继续添加 short id/默认回车即可。

后续会给出配置信息,不过没有一键导入的链接,只有配置文件。

配置信息已保存至 /usr/local/etc/sing-box/output.txt
Clash配置文件已保存至 /usr/local/etc/sing-box/clash.yaml,请下载使用!
手机端配置文件已保存至/usr/local/etc/sing-box/phone_client.json,请下载后使用!
电脑端配置文件已保存至/usr/local/etc/sing-box/win_client.json,请下载后使用!

后续如果要继续生成新的协议或者管理协议可以在ssh界面输入:
bash /root/singbox.sh

--------------

https://github.com/eooce/Sing-box

(https://github.com/luckypoem/Sing-box)

---------------

https://github.com/FranzKafkaYu/sing-box-yes

(https://github.com/luckypoem/sing-box-yes)

--------------------

https://github.com/233boy/sing-box

(https://github.com/luckypoem/sing-box-1)

------------------------

https://github.com/GUI-for-Cores/GUI.for.SingBox

https://github.com/luckypoem/GUI.for.SingBox

--------------------------

https://github.com/yonggekkk/sing-box_hysteria2_tuic_argo_reality

https://github.com/luckypoem/sing-box_hysteria2_tuic_argo_reality

(其实本来不是很想做甬哥的脚本教程的,甬哥的脚本优点是真的非常简单,而且集成了很多常用的功能。缺点就是很多人都担心的挖矿,曾经有不少截图透露出来甬哥的脚本会用宿主机挖矿,甚至是继承了某些功能,高性能的机器会挖矿,低性能的机器则不会.

from https://duangks.com/archives/157/)

--------------------------------------------------------------------------------------------------

(from https://github.com/alireza0/s-ui)

         An advanced Web Panel • Built for SagerNet/Sing-Box

t.me/XrayUI

S-UI

An Advanced Web Panel • Built on SagerNet/Sing-Box

S-UI Docker pull Go Report Card Downloads License

Disclaimer: This project is only for personal learning and communication, please do not use it for illegal purposes, please do not use it in a production environment

Quick Overview

Features Enable?
Multi-Protocol ✔️
Multi-Language ✔️
Multi-Client/Inbound ✔️
Advanced Traffic Routing Interface ✔️
Client & Traffic & System Status ✔️
Subscription Service (link/json + info) ✔️
Dark/Light Theme ✔️
API Interface ✔️

API Documentation

API-Documentation Wiki

Default Installation Information

  • Panel Port: 2095
  • Panel Path: /app/
  • Subscription Port: 2096
  • Subscription Path: /sub/
  • User/Password: admin

Install & Upgrade to Latest Version

bash <(curl -Ls https://raw.githubusercontent.com/alireza0/s-ui/master/install.sh)

Install legacy Version

Step 1: To install your desired legacy version, add the version to the end of the installation command. e.g., ver 1.0.0:

VERSION=1.0.0 && bash <(curl -Ls https://raw.githubusercontent.com/alireza0/s-ui/$VERSION/install.sh) $VERSION

Manual installation

  1. Get the latest version of S-UI based on your OS/Architecture from GitHub: https://github.com/alireza0/s-ui/releases/latest
  2. OPTIONAL Get the latest version of s-ui.sh https://raw.githubusercontent.com/alireza0/s-ui/master/s-ui.sh
  3. OPTIONAL Copy s-ui.sh to /usr/bin/ and run chmod +x /usr/bin/s-ui.
  4. Extract s-ui tar.gz file to a directory of your choice and navigate to the directory where you extracted the tar.gz file.
  5. Copy *.service files to /etc/systemd/system/ and run systemctl daemon-reload.
  6. Enable autostart and start S-UI service using systemctl enable s-ui --now
  7. Start sing-box service using systemctl enable sing-box --now

Uninstall S-UI

sudo -i

systemctl disable s-ui  --now

rm -f /etc/systemd/system/sing-box.service
systemctl daemon-reload

rm -fr /usr/local/s-ui
rm /usr/bin/s-ui

 

Clone the repository

# clone repository
git clone https://github.com/alireza0/s-ui
# clone submodules
git submodule update --init --recursive

- Frontend:

Visit s-ui-frontend for frontend code

- Backend:

Please build frontend once before!

To build backend:

# remove old frontend compiled files
rm -fr web/html/*
# apply new frontend compiled files
cp -R frontend/dist/ web/html/
# build
go build -o sui main.go

To run backend (from root folder of repository):

./sui

Features

  • Supported protocols:
    • General: Mixed, SOCKS, HTTP, HTTPS, Direct, Redirect, TProxy
    • V2Ray based: VLESS, VMess, Trojan, Shadowsocks
    • Other protocols: ShadowTLS, Hysteria, Hysteria2, Naive, TUIC
  • Supports XTLS protocols
  • An advanced interface for routing traffic, incorporating PROXY Protocol, External, and Transparent Proxy, SSL Certificate, and Port
  • An advanced interface for inbound and outbound configuration
  • Clients’ traffic cap and expiration date
  • Displays online clients, inbounds and outbounds with traffic statistics, and system status monitoring
  • Subscription service with ability to add external links and subscription
  • HTTPS for secure access to the web panel and subscription service (self-provided domain + SSL certificate)
  • Dark/Light theme

Recommended OS

  • Ubuntu 20.04+
  • Debian 11+
  • CentOS 8+
  • Fedora 36+
  • Arch Linux
  • Parch Linux
  • Manjaro
  • Armbian
  • AlmaLinux 9+
  • Rocky Linux 9+
  • Oracle Linux 8+
  • OpenSUSE Tubleweed

Environment Variables

Usage

Variable Type Default
SUI_LOG_LEVEL "debug" | "info" | "warn" | "error" "info"
SUI_DEBUG boolean false
SUI_BIN_FOLDER string "bin"
SUI_DB_FOLDER string "db"
SINGBOX_API string -


Certbot

certbot certonly --standalone --register-unsafely-without-email --non-interactive --agree-tos -d <Your Domain Name>


-----------------------
 

安装 s-ui 面板

    执行安装脚本

curl -Ls https://raw.githubusercontent.com/alireza0/s-ui/master/install.sh

安装过程中会询问是否更换端口、路径及账号密码,一般选择 n 使用默认设置即可。

    需要自定义账号密码时,安装过程中选择 y 修改。

    记录登录信息
    安装完成后,终端会显示类似以下信息(请保存好):

First admin credentials:
        Username:        admin
        Password:        admin
...
You may access the Panel with following URL(s):
Local address:
http://123.456.789.101:2095/app/

    使用 SSH 隧道安全访问 s-ui 面板
    在本机打开一个新的终端窗口,执行:

# ssh -o ServerAliveInterval=60 -L 本地端口:127.0.0.1:面板端口 用户名@服务器IP -p SSH端口

示例:

ssh -o ServerAliveInterval=60 -L 8080:127.0.0.1:2095 root@123.456.789.101 -p 12345

    保持这个终端窗口不要关闭

    打开浏览器访问: http://localhost:8080/app/
    使用默认账号 admin / admin 登录面板。

 通过 WARP 一键脚本 + 代理链免费解锁 ChatGPT、Netflix 等流媒体

    运行菜单脚本

wget -N https://raw.githubusercontent.com/ccxkai233/warp-more-unlocks/main/menu.sh && bash menu.sh

    安装 WARP 客户端

    选择 2 (简体中文)。
    选择 5 (安装 CloudFlare Client 并设置为 Proxy 模式)。
    后面三个选项直接回车使用默认设置。
    看到绿色成功信息和 本地 Socks5: 127.0.0.1:40000 即表示安装成功。

    筛选解锁 IP
    执行 warp i,然后连续按两次回车,脚本会自动筛选支持流媒体的 WARP IP。

    实际我刷ip时发现解锁情况只跟vps的地区有关,同一个vps的所有warp ip的解锁情况都一样,无法解锁的刷多少ip都无法解锁。



配置 WARP 代理链

    添加出站代理
    回到 S-UI 网页界面,进入“出站管理”,按下图添加一个指向本地 WARP SOCKS5 代理的出站。



配置路由规则
进入“路由列表”,添加规则,将特定流量(如 Netflix、OpenAI 等)指向刚刚创建的 WARP 出站代理。


 




验证效果

连接代理后,访问 ping0.cc 查看效果。

-------------------------------------------------

最强网络代理工具sing-box新手指南,从此不知DNS泄漏/DNS污染为何物,软路由插件homeproxy,奈飞DNS解锁、sniff流量嗅探覆写解析

官方文档:https://sing-box.sagernet.org
图形化客户端:https://sing-box.sagernet.org/clients
参考配置:https://sing-box.sagernet.org/manual/proxy/client/#basic-tun-usage-for-chinese-users

OpenWrt客户端(homeproxy):https://github.com/immortalwrt/homeproxy
支持clash mode(homeproxy):https://github.com/bulianglin/homeproxy

安装后如果没有显示clash api的选项,请清空浏览器缓存或者开启无痕窗口。 

rule-set规则集:https://github.com/MetaCubeX/meta-rules-dat/tree/sing

配置

{
  "log": {
    "disabled": false,
    "level": "warn",
    "output": "/var/run/homeproxy/sing-box-c.log",
    "timestamp": true
  },
  "dns": {
    "servers": [
      {
        "tag": "default-dns",
        "address": "223.5.5.5",
        "detour": "direct-out"
      },
      {
        "tag": "system-dns",
        "address": "local",
        "detour": "direct-out"
      },
      {
        "tag": "block-dns",
        "address": "rcode://name_error"
      },
      {
        "tag": "google",
        "address": "https://dns.google/dns-query",
        "address_resolver": "default-dns",
        "address_strategy": "ipv4_only",
        "strategy": "ipv4_only",
        "client_subnet": "1.0.1.0"
      }
    ],
    "rules": [
      {
        "outbound": "any",
        "server": "default-dns"
      },
      {
        "query_type": "HTTPS",
        "server": "block-dns"
      },
      {
        "clash_mode": "direct",
        "server": "default-dns"
      },
      {
        "clash_mode": "global",
        "server": "google"
      },
      {
        "rule_set": "cnsite",
        "server": "default-dns"
      }
    ],
    "strategy": "ipv4_only",
    "disable_cache": false,
    "disable_expire": false,
    "independent_cache": false,
    "final": "google"
  },
  "inbounds": [
    {
      "type": "direct",
      "tag": "dns-in",
      "listen": "::",
      "listen_port": 5333
    },
    {
      "type": "mixed",
      "tag": "mixed-in",
      "listen": "::",
      "listen_port": 5330,
      "sniff": true,
      "sniff_override_destination": false,
      "set_system_proxy": false
    },
    {
      "type": "redirect",
      "tag": "redirect-in",
      "listen": "::",
      "listen_port": 5331,
      "sniff": true,
      "sniff_override_destination": false
    },
    {
      "type": "tproxy",
      "tag": "tproxy-in",
      "listen": "::",
      "listen_port": 5332,
      "network": "udp",
      "sniff": true,
      "sniff_override_destination": false
    }
  ],
  "outbounds": [
    {
      "type": "direct",
      "tag": "direct-out"
    },
    {
      "type": "block",
      "tag": "block-out"
    },
    {
      "type": "dns",
      "tag": "dns-out"
    },
    {
      "type": "urltest",
      "tag": "自动选择",
      "outbounds": [
        "香港",
        "日本",
        "美国"
      ]
    },
    {
      "type": "selector",
      "tag": "手动选择",
      "outbounds": [
        "direct-out",
        "block-out",
        "自动选择",
        "香港",
        "日本",
        "美国"
      ],
      "default": "自动选择"
    },
    {
      "type": "selector",
      "tag": "GLOBAL",
      "outbounds": [
        "direct-out",
        "香港",
        "日本",
        "美国"
      ],
      "default": "手动选择"
    },
    {
      "type": "shadowsocks",
      "tag": "香港",
      "server": "abc.com",
      "server_port": 10001,
      "password": "fdc43e321a",
      "method": "aes-128-gcm"
    },
    {
      "type": "shadowsocks",
      "tag": "日本",
      "server": "abc.com",
      "server_port": 10002,
      "password": "fdc43e321a",
      "method": "aes-128-gcm"
    },
    {
      "type": "shadowsocks",
      "tag": "美国",
      "server": "abc.com",
      "server_port": 10003,
      "password": "fdc43e321a",
      "method": "aes-128-gcm"
    }
  ],
  "route": {
    "rules": [
      {
        "inbound": "dns-in",
        "outbound": "dns-out"
      },
      {
        "protocol": "dns",
        "outbound": "dns-out"
      },
      {
        "protocol": "quic",
        "outbound": "block-out"
      },
      {
        "clash_mode": "direct",
        "outbound": "direct-out"
      },
      {
        "clash_mode": "global",
        "outbound": "GLOBAL"
      },
      {
        "rule_set": [
          "cnip",
          "cnsite"
        ],
        "outbound": "direct-out"
      }
    ],
    "rule_set": [
      {
        "type": "remote",
        "tag": "cnip",
        "format": "binary",
        "url": "https://github.com/MetaCubeX/meta-rules-dat/raw/sing/geo-lite/geoip/cn.srs",
        "download_detour": "自动选择"
      },
      {
        "type": "remote",
        "tag": "cnsite",
        "format": "binary",
        "url": "https://github.com/MetaCubeX/meta-rules-dat/raw/sing/geo-lite/geosite/cn.srs",
        "download_detour": "自动选择"
      }
    ],
    "auto_detect_interface": true,
    "final": "手动选择"
  },
  "experimental": {
    "cache_file": {
      "enabled": true,
      "path": "/etc/homeproxy/cache.db"
    },
    "clash_api": {
      "external_controller": "192.168.2.1:9090",
      "external_ui": "/etc/homeproxy/ui/",
      "external_ui_download_detour": "自动选择",
      "default_mode": "rule"
    }
  }
}

Tun:

{
   "type": "tun",
   "tag": "tun-in",
   "inet4_address": "172.19.0.1/30",
   "mtu": 9000,
   "gso": true,
   "auto_route": true,
   "stack": "system",
   "sniff": true,
   "sniff_override_destination": false
}

youtube播放地址:https://youtu.be/BAfbkLizFGc

sing-box可以说是目前最强大的网络代理工具,既有比v2ray系更全面的服务器端协议支持,又有比clash系更丰富的客户端配置,还有令人匪夷所思的更新频率,新的代理协议一经发布,sing-box永远是最先支持的那个,同时还支持clash api,可以像clash一样使用webui切换节点,非常方便,但是由于sing-box的官方文档过于官方,很多朋友直呼看不懂,于是得出了sing-box难用的结论,但相信只要你看明白本期教程就会发现sing-box其实so easy,为了照顾纯小白用户,前半部分只讲基本上手使用,后半部分则详细讲解软路由上sing-box的透明代理流程,当然少不了大家喜闻乐见的dns环节

这是singbox的项目官网,可以在这里获取最新的更新资讯以及配置文档,包括客户端下载,目前图形化客户端支持android平台,苹果的ios、macos、tvos都支持,windows的话目前没有官方客户端,可以先用其他第三方支持singbox的工具,比如v2rayN,但是使用逻辑和官方客户端不一样,官方客户端更像是clash的使用方式

先给小白用户演示最简单的使用singbox的方式,以苹果端为例,对系统要求如下,在app store中下载需要使用非国区id,安装非常简单,我已经安装过了就顺便升个级,软件完全免费,非常良心,安装之后打开它,可以看到界面非常简洁,没有任何配置向导,这也是很多人说难用的原因,好在现在很多机场以及在线订阅转换都支持singbox的配置了,所以对于小白用户,我们只需要像使用clash一样使用sing-box即可,首先需要先获取singbox的配置文件,来到profiles配置页面,选择新建配置,随便取个名称,类型改为远程获取,在这里输入机场的订阅地址,如果你的机场显示了singbox的订阅链接按钮,直接点击即可,我这里没有,就直接复制这个通用的订阅地址,然后粘贴到这里,点击创建,机场会根据UA来区分不同的客户端,从而下发不同的配置文件,没有报错说明没有问题,可以在这里查看配置文件的内容,看上去很乱,等会我们再来详细介绍,如果你的机场还不支持下发singbox的订阅文件,或者你是自建节点,请自行谷歌搜索singbox订阅转换,目前有很多订阅转换工具都支持singbox了,但是要注意隐私风险,我这里就不演示了,接着回到主界面,点击启用,不出意外的话就可以正常科学上网了,非常简单,不同的机场会有不同的分流配置,可以在这里进行相应的切换,用惯了clash的用户应该会非常熟悉,尝试访问谷歌,没有问题

手机客户端也是一样的操作逻辑,在profiles面板添加一条配置,随便给个名称,类型选择远程下载,url填入你的机场订阅,点击创建,没有报错说明一切正常,回到主界面,默认选中了我们刚才添加的配置文件,打开开关,就可以正常使用了,这里可以方便的切换节点,尝试访问谷歌,没有任何问题,安卓端也是同样的操作逻辑,可以看到官方客户端其实非常简洁方便,基本没有任何学习成本,但也仅限于默认配置,但如果你想换个dns服务器,或者开启局域网共享,或者修改代理端口等个性化的自定义配置,你会发现没有任何设置的地方,所有设置都要通过修改json配置文件,对于看不懂文档的朋友来说要实现这点很困难,后半部分我们再来详细说明

接下来回到软路由篇,在openwrt上使用sing-box,我这里用到的openwrt固件还是之前的imm23.05,希望你已经看过我之前的软路由相关内容了,之前讲过的就不讲了,首先还是针对小白用户的配置方式,来到系统下的软件包,点击更新列表,接着搜索homeproxy,这是之前简单介绍过的使用sing-box内核代理的luci插件,直接安装这个中文包,默认会安装相应的依赖项,点击安装,安装完成后来到服务页面,目前还没有显示插件,你可以尝试刷新网页,这样就会显示了,如果你的还是没有显示的话,可以退出openwrt重新登录,这就是homeproxy的主界面,可以看到要比openclash简洁的多,先来导入节点,来到节点设置,他这里不需要singbox格式的订阅配置,如果你是自建节点,可以点击这里导入分享链接,将你的节点链接粘贴到这里即可,如果是机场订阅链接,来到订阅,在这里填入你的机场订阅地址,如果有多个机场的话可以继续添加,点击保存当前设置,然后点击更新订阅,更新之后回到节点,这样就导入了机场节点了,接着回到客户端设置,设置一个主节点,路由模式按需设置,一般是使用大陆白名单或者gfw黑名单模式,其他保持默认即可,点击保存并应用,稍等片刻,正常情况下这里会显示运行,尝试访问谷歌,没有问题,可以在这里查看相关日志信息,还可以设置服务端,也就是在软路由上搭建节点,一般情况下用不到,以后有机会再说,还可以在这里设置访问控制,常用的就是lan策略,可以规定局域网哪些设备需要代理,默认情况下局域网里所有设备的流量都会经过singbox内核处理,如果你只想要你的手机和电脑可以代理,家里其他人的设备不需要代理,就可以设置为仅允许列表内,也就是白名单模式,将你需要代理的ip添加到列表,然后点击保存并应用,这样的话homeproxy就会帮我们配置nftables防火墙,将这两个ip的流量交给singbox处理,而不在列表里的ip会绕过singbox内核直接访问互联网,为了防止设备ip变动,可以参考这期教程进行静态ip绑定,针对小白用户的配置就到这里了,都是非常简单的

接下来讲点进阶内容,每个人都有自己的小想法,homeproxy提供的默认配置不一定适合所有人,所以需要自定义配置,将路由模式改成自定义路由,此时就会多出很多配置项,如果你不了解singbox的用法根本无从下手,我会教大家一步步配好

另外很多软路由用户离不开clash的一个重要原因是clash有webui,用过就知道有多方便,singbox支持clash的api,可以实现和clash一样直接在webui切换节点等操作,但目前homeproxy并不支持配置singbox的clash模式,无法发挥singbox在软路由上的优势,没有webui的话每次切换节点都要登录软路由后台,对于机场用户来说非常不方便,老子曾经曰过,软路由不能没有dashboard,就像西方不能没有耶路撒冷,所以我给homeproxy添加了clash api的功能,由于我只是为了做这个视频才加的功能,为了方便实现改动了原版的配置逻辑,有精力的朋友可以改改再pr到homeproxy主线上去

首先进入这里下载我修改过的homeproxy,这些用到的信息我会放在视频下方的说明栏,下载这个ipk文件,接着回到软件包,建议先将原来的homeproxy卸载,接着点击上传软件包,将刚才下载的ipk上传安装,安装完成这里提示有错误,原因是刚才卸载的homeproxy配置文件没有删除,这次安装的配置文件并不会覆盖之前的,保存在这个位置,建议使用这个新的配置文件替换掉之前的配置文件,这种基本操作在进阶部分就不演示了,另外singbox内核必须使用1.9以上的版本,我录制视频的时候还是1.8版本,你看到这个视频的时候imm的软件源已经更新到1.9以上了,所以直接在软件源更新即可,不用进行额外的替换内核操作

回到刚安装的homeproxy,切换为自定义路由, 此时就能看到clash api,接下来不要问为什么,先一步步跟我操作将规则配置好,第一步还是先导入你的节点,接着来到最下面,在这里随便输入一个英文标识,点击添加,将卷标改成自动选择,类型选择urltest,出站选择你需要的节点,可以全部选择上,视频演示我就随便选几个,其他选项保持默认,点击保存,接着再添加一个,卷标改成手动选择,类型选择selector,同样选择你需要的节点,也可以勾选我们刚才添加的自动选择,将默认出站改成自动选择,点击保存,最后再来添加一个全局分组,这个的卷标比较特殊,为了适配webui需要固定为大写的GLOBAL,点击添加,类型选择selector,勾选你需要的节点,可以包括刚才添加的自动选择和手动选择,选择一个默认出站,配置好之后点击保存,回到客户端配置,路由模式改成自定义路由,路由所有端口,代理模式按需选择,这四种模式的区别在openclash那期都讲过,感兴趣的朋友可以回看,同样的目前不演示ipv6,所以先关闭ipv6支持,下期再讲,如果你确认访问国内ip不需要经过singbox内核,可以勾选这个选项使用防火墙规则绕过中国流量,跟刚才讲的访问控制功能类似,覆盖目标地址按需选择,这个功能比较关键,很多莫名其妙的问题都和他有关,等会再细讲,现在先将其关闭,默认出站设为手动选择,每个标签页配置好之后都要先点击保存,来到clash api,启用他,如果你不需要公网访问,外部控制端口不建议使用0.0.0.0,将其改成路由器的ip地址,如果你需要公网访问,应该在这里设置密码,下载ui资源使用的节点设置为自动选择,默认模式按需选择,singbox的分流模式不像clash是固定的direct rule和global名称,只是webui里一般只有这几个选项,所以为了方便在webui里切换分流模式,我们也应该设置为相同的固定值,但实际上你应该清楚singbox的clash模式名称可以随便设置,点击保存,对于软路由小闪存的用户,规则集也是个好功能,让我们不用下载笨重的geosite和geoip数据库,可以节省大量空间,先来添加中国的ip,随便给个名称,点击添加,勾选启用,格式选择二进制文件,规则集到这个地方下载,我们需要中国地区的ip地址,这个json是文本格式,srs是二进制格式,可以在json里看到包含了哪些ip,这些都是中国的ip,大小是200k,srs是二进制格式,看不到内容,但是大小才32k,更建议用二进制的格式,复制链接地址,将其粘贴到这里,下载规则用的出站设置为自动选择,点击保存,再添加一个中国网站规则,这个也才22k,所以相比geo动辄十几兆的数据库,这种按需取用更灵活更省空间,记得点击保存,来到dns服务器,添加一个google的doh服务器,地址解析器选择wan口下发的默认dns,策略改成仅ipv4,出站选择默认,这里的ECS配置是解决dns泄漏局限性的关键,需要1.9以上版本的singbox内核

你需要在这里填入一个离你比较近的ip地址,比如你在山东,就填个山东的ip,虽然可以填自己的公网ip,但为了个人隐私不建议这么做,如果你实在懒得找,就填入1.0.1.0,这是一个中国ip,记得点击保存,来到dns设置,默认解析策略改成仅ipv4,默认dns服务器选择刚才创建的google,点击保存,接着来到dns规则设置,这里非常关键,dns没配好很容易出现先有鸡还是先有蛋的死循环问题,同样先不用关心为什么这样配置,跟着我一步步操作即可,首先添加节点域名所使用的dns,出站勾选任何,服务器为默认dns,点击保存,接着添加clash的直连模式,clash mode设置为direct,服务器也是默认dns,再来添加一个clash的全局模式,clash mode设置为global,dns服务器选择google,点击保存,最后再添加一个中国网站规则,规则集勾选我们刚才添加的中国网站,服务器同样为 默认dns,点击保存,这样dns规则就算是配置好了,注意要按顺序添加,可以通过拖动这里调整排列顺序,点击保存,最后来到路由规则设置,配置方式和dns规则差不多,首先添加clash的直连模式,clash mode改成direct,出站设置为直连,点击保存,然后添加clash的全局模式,出站改成global,点击保存,最后添加国内网站和ip走直连的规则,规则集勾选刚才添加的ip和网站,出站选择直连,点击保存,这样就算是配置好了,相信大家现在是一脸懵逼,这是正常情况,我也有点懵,先不管,先按这个配置跑起来再说,点击保存并应用,不出意外的话稍等片刻这里会显示运行中,同时可以来到日志页面查看运行状态,最后这里显示started就表示singbox内核启动成功了,此时就可以正常科学上网了,尝试访问google,没有问题,非常快速,并且访问任何国内网站也一样快速,包括国内小众网站,同时解决了一切dns泄漏检测,我目前使用的是香港节点,可以看到dns泄漏检测是没问题的,但这里出现了我的真实ip地址,原因等会再说,另外有一些主要以卖VPN为目的的dns检测网站,如果你没用他家的vpn就会跟你说你的dns请求暴露了bulabula,这种不用理会,你只要看检测结果没有出现国内dns就行了,关于dns泄漏的内容我应该是做的最多的了,对此还有争议的建议回看这期视频,至于要不要解决取决于你自己,我想补充的是,没有墙的地区在大力推行dot和doh这类加密dns来保护用户隐私,CF甚至以保护用户隐私为由连ECS都不愿意支持

另外我们可以访问刚才设置的clash webui,端口是9090,将地址填入这里,点击add,然后进入网址,这样就进入clash用户熟悉的webui界面了,可以在这里查看节点相关信息,包含我们刚才添加的三个分组,以及分组里对应的节点信息,可以很方便的进行节点切换,包括分流规则,链接状态等信息,这里可以切换分流模式,切换到直连后应该就无法访问谷歌了,需要先将之前的连接打断,确实没法访问了,也可以切换为全局,然后在global这里选择全局使用的节点,又恢复访问了,之后你就可以将这个网址存为书签,下次要切换节点或者查看连接信息就可以通过网页直接查看了,非常方便,不过singbox目前的clash模式还属于实验性功能,并没有完全实现所有的api接口,比如配置页面中无法修改代理端口,也无法切换日志等级,不过这些都是小问题,无伤大雅

我们刚刚在homeproxy哐哐一通设置,最终生成的singbox配置文件在这个路径,使用sftp工具将其下载下来,这就是最终singbox运行时候使用的配置,接下来我们就通过这个配置文件,来模拟访问网站的时候singbox是怎么工作的

另外虽然singbox也支持fakeip,但fakeip之前讲clash已经详细介绍过了,在有些使用场景中会造成一些不便,比如配置链式代理,ping个域名啥的,我也收到有些用户反馈使用fakeip会导致游戏无法连接,所以本期主要介绍最符合正常网络环境的realip

这是为了视频讲解而简化后的配置,主要有四个的功能模块,dns模块、inbounds入站模块、outbounds出站模块、route路由模块,其中dns模块里又包括server服务器和rule规则两个主要部分,结构非常清晰,假设我的电脑要访问google.com,由于不知道谷歌的ip地址,所以需要先进行dns请求获取谷歌的ip地址,请求来到路由器, 路由器会按openclash那期讲过的方法,通过配置dnsmasq或者nftables防火墙将dns请求劫持到singbox监听的5333端口,本期不会涉及防火墙规则讲解,感兴趣可以回看之前的内容,有详细的介绍,总之singbox会从inbounds收到电脑的dns请求,先记住数据是从这个tag标签为dns-in的地方进来的,接着singbox需要确认数据包该走去哪,于是会来到route路由模块,按顺序一条条匹配路由规则,首先第一条规则,如果是从dns-in进来的数据,就从dns-out将数据发出去,刚才我们的数据确实是从tag为dns-in的标签进来的,所以命中了这条规则,于是会将数据交给outbounds里的dns-out准备发送出去,而这条出站的类型是dns,意思是将数据交给自己的dns模块处理,于是这个请求又会来到singbox的dns模块,dns模块得知了你要google的ip地址,他会按规则选择使用哪个dns服务器来获取谷歌的地址,这里有两个dns服务器,这个tag为google的是我们刚才在homeproxy里配置的谷歌doh服务器,这个是homeproxy自动帮我们添加的路由器WAN口下发的默认dns服务器,我这里是114.114.114.114,你的可能是某个内网ip,而这四条就是我们在homeproxy里添加的dns规则,要在这里确认google.com这个域名应该交给哪个dns服务器进行解析,首先第一条规则等会再说,目前我先告诉你不匹配,于是匹配下一条规则,如果clash模式是direct直连,就使用default-dns,也就是默认wan口下发的dns,我们的clash默认模式是rule,所以这条也不匹配,下一条如果clash模式是global全局,就使用谷歌的dns,很明显也不匹配,继续向下,如果规则集是中国的网站,同样使用默认dns,google.com并不是中国网站,所以也不匹配,这四条规则都没有匹配上, 当所有规则都不匹配的时候,就会使用final默认规则,我们在面板中配置的是谷歌的dns,所以会使用这个tag为google的dns服务器,由于这里用的是dns over https,简称doh, 服务器地址是域名,所以这个域名同样需要先经过dns解析为ip地址,负责解析这个域名的dns服务器是这里配置的默认dns,解析策略为仅ipv4,也就是面板中这两个配置,所以这个tag为default-dns将会负责解析dns.google这个域名,并且仅获取ipv4地址,请求将会从tag为direct-out的出站发给114.114.114.114,tag为direct-out的出站类型是direct,也就是直连,所以会直接发给互联网的114.114.114.114,114会帮我们获取到dns.google的ipv4地址为8.8.8.8, 返回给singbox,于是获取google.com ip地址的dns请求会发给8.8.8.8,并且仅获取ipv4,由于我们给这个dns服务器设置的出站是默认,

并没有和上面的默认dns一样设置detour指定某个节点出站,所以会使用出站路由里的默认出站,默认出站是我们在主界面中设置的手动选择,手动选择是我们在节点中设置的selector,里面包含了这些节点,而手动选择选中的默认节点是自动选择,自动选择也是我们在节点设置里添加的urltest类型,假设我们只选择了这三个节点,会根据延迟的高低自动选择一个出站节点,假设选中了香港的节点,而tag为香港的节点类型为shadowsocks,所以这条发给8.8.8.8询问google.com ip的请求将会使用这个密码进行aes加密,你以为数据终于要发送出去了吗?并没有,此时你会发现机场节点的地址是域名而不是ip,所以同样需要先进行dns解析获取节点的ip,于是乎dns模块又会开始获取abc.com的ip地址,还是先进行dns规则匹配,第一条规则表示匹配any所有outbound出站节点的域名,全都交给默认dns解析,这个abc.com的确就是出站里的某个节点的域名,于是匹配成功,将会交给默认的114进行dns解析,假设获取到的节点ip地址为6.6.6.6,最终这条经过aes加密后的发给8.8.8.8的请求google.com的ip地址的dns数据包将会发给香港节点ip为6.6.6.6的10001端口,节点收到数据后会进行解密,并将数据转发给8.8.8.8,8.8.8.8会帮我们获取google.com的ip地址,假设为2.2.2.2,并将结果返回给节点,节点再经过ss加密后返回给我们路由器的singbox,singbox解密后再将结果返回给电脑的浏览器,加解密过程我就懒得画了,至此就获取到了一个纯正无污染的谷歌ip地址了,这是多么的不容易,所以很多人会劝你别玩弄dns,容易被dns玩弄

目前我们还只是获取到了谷歌的ip,接下来才是开始访问google,发给2.2.2.2,内容是访问谷歌,数据包来到路由器,会通过redirect将流量重定向到singbox的5331端口,singbox拿到数据后,由于默认开启了sniff,会进行流量嗅探,获取到了这个数据包是https协议,并且访问的目标域名是google.com,接着开始路由匹配确定数据包该从哪里出去,这三条路由规则就是我们在面板上设置的这三个,上面两个dns规则是homeproxy自动帮我们加上的,上面四条都讲过,很明显都无法匹配,来到规则集,如果访问的目标网站的ip或者域名是中国的,那就走direct直连出去,很明显google.com和2.2.2.2都不是中国的,于是所有路由规则都没有匹配上,当所有规则都不匹配的时候,就会走final默认出站,也就是手动选择,于是和刚才发送dns请求一样,这个数据包将会经过手动选择,手动选择里又选中了自动选择,自动选择根据延迟选中了香港节点,数据会经过ss协议封装加密,由于刚才已经经过dns解析获取到了abc.com的域名是6.6.6.6,解析结果会缓存一段时间,所以这次不用再发起dns请求,直接将数据发送给6.6.6.6的10001端口,接下来的步骤就和刚才讲的dns解析一样了,忽略掉中间的加解密过程,谷歌数据首先发给节点,节点将数据经过aes加密后再发给路由器的singbox,singbox使用aes解密后再返回到电脑浏览器,最终谷歌网页内容呈现在我们面前,于是进行了一次成功的科学访问

假设此时又要访问百度,还是先进行dns请求获取baidu.com的ip地址,数据从dns-in来到singbox,然后进入路由规则,命中了第一条规则,从dns-in进来的数据包就从dns-out发送出去,而dns-out是发往自己的dns模块,于是数据包来到dns,首先进行规则匹配,很显然baidu.com将会命中这条规则,中国网站将会使用默认dns查询,于是使用tag为default-dns的dns服务器发起dns请求,也就是114,并且通过direct直连发出,从而获取到百度的ip,假设为3.3.3.3,电脑获取到百度的ip之后,向这个ip获取baidu.com的首页内容,数据来到路由器,如果你在homeproxy中勾选了绕过中国流量,那么这个访问百度的流量不会进入singbox内核,homeproxy会将所有的中国ip绕行规则添加到nftables防火墙,直接通过防火墙将数据转发出去,少了到singbox内核处理的过程,性能也会有不错的提升,,但是开启绕过中国流量之后你在singbox开启全局代理,中国网站还是不会走代理的,因为数据不是由singbox进行控制了,另外就在我还在写这篇稿子的时候,singbox也更新支持了这个功能,不愧是发版狂魔,再这么发展下去软路由用户连luci界面都可以不用了

如果没有开启绕过中国流量,那么数据同样会从redirect重定向到5331端口,singbox拿到数据后进行sniff嗅探,获取到了协议是https,域名是baidu.com,接着进行路由规则匹配,最终将会成功匹配这条中国网站的规则,于是通过direct直连将数据发送出去,至此访问一个国内网站的流程也完成了。

使用clash的fakeip解决dns泄漏有局限性,不在规则列表中的小众国内网站只能交给节点代理,导致没有套国外cdn的国内网站访问很慢,需要靠其他第三方dns插件解决,比较繁琐,而singbox1.9更新的ecs功能搭配realip可以非常优雅的解决这个问题,官方文档也给出了相应的ecs配置参考,并且表示速度比较慢,这里说的慢是指dns解析比较慢,而且也是相对的,对比fakeip当然会慢一点,但如果你平时用香港这种延迟比较低的节点,几乎没有感知,同时realip还有缓存和预解析,另外doh会维持长连接,和裸udp解析相当,关于fakeip和realip的对比可以回看这期视频后半部分,有非常详细的解释

我们现在用的配置文件可以解决dns泄漏,接下来演示他是如何通过ecs实现精确分流的
假设bilibili.com是一个不在规则列表里的国内小众网站,首先电脑还是先发起dns请求查询bilibili.com的ip地址,数据来到singbox的dns模块,首先进行dns规则匹配,前三条无法匹配,第四条由于这个网站比较小众,这个国内网站规则集里并没有收录这个网站,于是乎这个国内网站本该命中的规则却没有命中,所有规则都不匹配后,会使用final里设置的googledns,于是将会使用这个dns解析bilibili.com的ip,同样由于存在dns缓存,dns.google的ip地址之前已经知道了是8.8.8.8,于是乎这个获取bilibili.com的dns请求将会发给8.8.8.8,并且这里还有一个之前没有讲的选项,client subnet是1.0.1.0,这个选项的意思就相当于告诉谷歌的dns服务器,我的ip地址是1.0.1.0,你应该给我一个离这个ip最近的解析结果,由于没有设置detour,这个dns请求将会交给默认的final出站,也就是手动选择,手动选择选中了自动选择,自动选择根据延迟使用了香港节点,于是这个dns请求将会交给香港节点处理,此处还有个细节要注意,我们这里用的是doh,也就是dns over https,也就是使用https协议来进行dns解析,也就是在进行dns解析之前需要进行tcp三次握手建立连接,然后建立tls连接,再使用http的方式传输dns数据,可以看到进行一次解析需要来来回回好几次才能真正开始传递数据,而我们平时常用的udp一个来回就完事了,但是http支持长连接,而doh同样有http的特性,所以也支持长连接,由于之前已经和8.8.8.8建立过连接了,所以这次访问并不需要从头建立tcp和tls连接,可以直接开始发送dns数据,延迟会低很多,有些朋友可能会说,都直接发给节点加密了,为什么不直接使用最直接的udp呢?因为有些机场根本不支持udp,而对于uot的话又和doh没多大区别了,所以为了更通用建议使用doh,至于各种类型dns的区别以后有机会再讲

谷歌的dns服务器收到请求之后,会帮我们获取bilibili.com的ip地址,此时会有两种情况,如果bilibili.com没套cdn的话,那就会直接获取bilibili中国的ip,假设为5.5.5.5,而如果bilibili.com套了全球各地区的cdn,默认情况下会获取离8.8.8.8最近的某台服务器,8.8.8.8是一个任播地址,而我们的节点在香港,就会获取到离香港最近的服务器ip,假设为4.4.4.4,但是我们告诉谷歌要获取离1.0.1.0最近的服务器ip,而1.0.1.0是中国的ip,所以我们获取到的将会是中国的某一台服务器ip,所以还是返回5.5.5.5

电脑获取到ip之后开始访问bilibili,数据来到路由器,由于目标ip是中国的,和之前一样,如果开启了绕过中国流量,那么不会进入singbox内核直接转发,没有开启的话就会重定向到singbox内核,并且由于开启了流量嗅探,获取到了bilibili.com的域名,然后开始路由匹配,前四条都无法匹配,而且小众网站并不在中国网站的规则集列表,所以这里也不匹配,但是5.5.5.5匹配到了中国ip,所以将会命中这条规则,数据将会走直连出去,这样就实现了即使小众网站不在域名规则中,同样可以正确进行分流,还没有dns泄漏的问题,dns请求全程都是加密状态,只是这里没有体现出来,太费劲懒得画了,不过相较于直接使用114的udp解析肯定是会慢一点,取决于你对自己隐私的重视程度了,并且是否会根据ecs返回ip也要看权威dns服务器的行为,不能当成万能解药,不过大部分情况都会正确响应

另外刚才我们访问这个dns泄漏检测的网站,dns检测的结果并没有问题,都是香港的谷歌dns,但这里却出现了我的真实ip,出现真实ip说明我们访问这个网站用了直连,在我们这个配置,命中直连只有两个原因,一个是ip命中,一个是域名命中,如果这个网站套了中国的cdn,根据刚才讲解的ces,就会命中ip规则,但根据我的测试这个网站并没有套中国的cdn,想想也确实不可能,那么只有可能是命中了域名,事实上也确实如此,这个和中国没有半毛钱关系的网站却出现在中国网站的规则列表里,很明显是哪个上游的规则出现了错乱,所以别人的规则集不一定适合你,你可以按照这个格式,创建符合自己需求的分流规则集,并且用singbox指令将json文件转换为srs的二进制文件

目前为止我们看似解决了所有问题,但没有哪个配置是适合所有人的,假如你平时喜欢通过奈飞之类的流媒体观影,使用本期讲的配置很有可能会导致奈飞解锁失败,比如我现在访问绝命毒的页面,提示页面不存在,很明显是解锁失败了,但我现在用的这个机场明明是支持解锁的,要弄懂这个问题你需要先了解奈飞解锁的原理,机场都是使用dns解锁,可以回看这期视频,有非常详细的讲解

假设我现在访问netfilx.com,首先进行dns解析,获取到了ip假设为7.7.7.7,注意这个ip是通过谷歌dns获取到的真实的奈飞ip,接着通过https访问这个ip获取奈飞的内容,数据被重定向到singbox,通过嗅探获取到了netflix.com的域名,7.7.7.7和netfilx是国外ip和域名,所以没有命中任何规则,于是数据包会交给香港的节点,将其封装成ss协议的格式,目标ip是7.7.7.7,目标端口是443,目标内容是绝命毒师,当然内容的话已经是经过加密了,然后发送给节点服务器,节点拿到数据后,帮我们访问7.7.7.7,此时就出现问题了,节点本身并不能解锁奈飞,所以也就无法成功观看了,解决这个问题需要开启覆盖目标地址,开启之后再使用同样的节点访问奈飞,就可以成功解锁进入了

流程还是和之前一样,我们通过dns获取到了奈飞的正确ip7.7.7.7,接着发起http请求,数据被重定向到singbox,通过嗅探获取到了netflix.com的域名,7.7.7.7和netfilx是国外ip和域名,所以没有命中任何规则,于是数据包会交给香港的节点,将其封装成ss协议的格式,此时需要注意,由于我们开启了覆盖目标地址,也就是嗅探复写设置为了true,会用我们刚才嗅探到的域名netflix.com覆盖目标地址,也就是发送的目标地址是netflix.com,目标端口是443,目标内容是绝命毒师,加密后发送给节点服务器,节点拿到数据后,由于收到的是域名,他会在他的环境下进行dns解析来获取netflix.com的ip地址,由于配置了dns解锁奈飞的规则,他获取到的并不是真实的奈飞ip7.7.7.7,而是获取到sni反代服务器的ip地址,假设为9.9.9.9,数据将会发给这台服务器,而这台专门用来解锁奈飞的服务器会帮节点访问奈飞,于是就能成功访问奈飞了,这就是嗅探和复写的主要作用,嗅探主要用来进行域名分流规则匹配,复写主要用嗅探到的域名替换掉访问目标ip,而有些机场的节点默认会开启嗅探复写,所以你本地不开的话也可以正常解锁,另外开了嗅探复写之后,进行dns泄漏检测的时候可能会出现google之外的dns提供商,因为节点服务器也会对泄漏检测的域名进行dns解析,所以节点使用的dns服务器也会包含在内,可以用这个方式来判断你用的机场是否开启了嗅探复写,dns泄漏检测的原理可以回看这期视频

部分客户端,比如v2rayN和x-ui面板的默认行为是开启流量嗅探sniffing的同时也会开启复写,但有些情况下不能开启复写,会出现网络问题,比如智能家居无法连接,进不去tor暗网等情况,原因我在这期视频中也讲过,tor网络中的进行连接的域名是随机的假域名,主要是看ip,如果你将嗅探得到的假域名发给节点,节点通过dns解析拿不到这个假域名的ip,于是访问失败,此时你就要关闭复写才能正常访问,所以复写功能得按需启用

现在很多机场也提供了chatgpt解锁,但有可能出现即使开启了嗅探复写还是无法成功解锁的情况,通过日志我们可以得知使用了基于udp的quic协议访问chatgpt,但是没有成功嗅探到域名,没有域名也就无法进行复写,所以发给节点的直接是ip而不是域名,如果节点也没有开启嗅探复写,就无法交给sni反代,导致无法解锁的情况,解决这个问题的方法是之前讲过的关闭浏览器的quic功能,或者添加一条屏蔽quic流量的规则,或者屏蔽https的dns查询类型,这样就会屏蔽quic,从而使用http2访问chatgpt,又可以成功嗅探域名进行复写解锁了

总之每个人的需求不同,没有适合所有人的万能配置,有的话我就不用费劲讲那么多了,希望大家看完之后都能举一反三作出符合自己需求的配置。相信看过本期教程再去看官方文档会有新的收获

最后这个软路由的singbox配置简单修改一下就能放到其他客户端去使用了,主要区别是入站劫持的处理方式不同,跟着视频演示删改这几个地方即可,日志路径删掉,不需要保存到文件,默认dns设置一个公网dns,比如阿里的223.5.5.5,将inbound入站全部删掉,替换为这段,嗅探复写按需开启,如果你要共享局域网连接,请自行参考官方文档创建一个mixed入站,把本地路径都删掉,第一条dns入站规则删掉,接着创建一个本地配置文件,类型选择local,创建之后打开进行编辑,使用刚才修改后的配置文件替换掉里面的内容,点击保存,切换到刚才创建的配置,尝试启用,报错了,clash api绑定的ip是路由器的,忘记改了,修改成127.0.0.1,这样就能启动成功了,手机客户端也是同样的处理方式。

另外正如之前说的,singbox的clash mode名称可以随便填,你要是想的话可以配置direct走全局,也可以配置global走直连,也可以添加更多其他自定义模式,比如添加一个block模式屏蔽所有连接,在dns规则和出站路由规则处添加block的clash mode,保存后重新启动配置,就可以在面板上选择block模式了,切换为block之后所有网站也将无法访问了,换成其他模式又恢复了,可以说是相当方便。

 

 DNS泄漏实战演示:https://youtu.be/TOhF5RcTGiM
DNS泄漏检测原理:https://youtu.be/fqREM6b25SYn
奈飞DNS解锁原理:https://youtu.be/Vj4TGd9IaQc

---------------------------------------------------------------------- 

S-UI

基于SagerNet/Sing-Box构建的高级 Web 面板,基于alireza0/s-ui的最后一个版本。

快速概览

功能 是否支持
多协议 ✔️
多语言 ✔️
多客户端/入站 ✔️
高级流量路由界面 ✔️
客户端、流量与系统状态 ✔️
订阅链接(link/json/clash + info) ✔️
深色/浅色主题 ✔️
API 接口 ✔️

支持平台

平台 架构 状态
Linux amd64, arm64, armv7, armv6, armv5, 386, s390x 支持
Windows amd64, 386, arm64 支持
macOS amd64, arm64 实验性支持

默认安装信息

  • 面板端口:2095
  • 面板路径:/app/
  • 订阅端口:2096
  • 订阅路径:/sub/
  • 用户名/密码:admin

安装或升级到最新版本

Linux/macOS

bash <(curl -Ls https://raw.githubusercontent.com/admin8800/s-ui/main/install.sh)

Windows

  1. 从 GitHub Releases 下载最新 Windows 版本。
  2. 解压 ZIP 文件。
  3. 以管理员身份运行 install-windows.bat。
  4. 按照安装向导操作。

安装旧版本

步骤 1: 如果要安装指定旧版本,请在安装命令末尾追加带 v 的版本标签。例如版本 v1.0.0:

手动安装

Linux/macOS

  1. 根据你的系统和架构,从 GitHub 获取最新版本 S-UI:https://github.com/admin8800/s-ui/releases/latest
  2. 可选: 获取最新版 s-ui.sh:https://raw.githubusercontent.com/admin8800/s-ui/main/s-ui.sh
  3. 可选: 将 s-ui.sh 复制到 /usr/bin/,并执行 chmod +x /usr/bin/s-ui。
  4. 将 s-ui tar.gz 文件解压到你选择的目录,并进入解压后的目录。
  5. 将 *.service 文件复制到 /etc/systemd/system/,然后执行 systemctl daemon-reload。
  6. 使用 systemctl enable s-ui --now 启用开机自启并启动 S-UI 服务。
  7. 使用 systemctl enable sing-box --now 启动 sing-box 服务。

Windows

  1. 从 GitHub 获取最新 Windows 版本:https://github.com/admin8800/s-ui/releases/latest
  2. 下载适合的 Windows 包,例如 s-ui-windows-amd64.zip。
  3. 将 ZIP 文件解压到你选择的目录。
  4. 以管理员身份运行 install-windows.bat。
  5. 按照安装向导操作。
  6. 访问面板:http://localhost:2095/app

卸载 S-UI

sudo -i

systemctl disable s-ui  --now

rm -f /etc/systemd/system/sing-box.service
systemctl daemon-reload

rm -fr /usr/local/s-ui
rm /usr/bin/s-ui

使用 Docker 安装

点击查看详情

使用方式

步骤 1: 安装 Docker

curl -fsSL https://get.docker.com | sh

步骤 2: 安装 S-UI

Docker compose 方式

services:
  s-ui:
    image: ghcr.io/admin8800/s-ui
    container_name: s-ui
    hostname: "s-ui"
    network_mode: host
    volumes:
      - "./db:/app/db"
      - "./cert:/app/cert"
    tty: true
    restart: unless-stopped
    entrypoint: "./entrypoint.sh"

docker compose up -d

直接使用 docker

mkdir s-ui && cd s-ui

docker run -itd \
    --network host \
    -v $PWD/db/:/app/db/ \
    -v $PWD/cert/:/root/cert/ \
    --name s-ui \
    --restart=unless-stopped \
    ghcr.io/admin8800/s-ui

自行构建镜像

git clone https://github.com/admin8800/s-ui
docker build -t s-ui .

手动运行(贡献开发)

点击查看详情

构建并运行完整项目

./runSUI.sh

克隆仓库

# 克隆仓库
git clone https://github.com/admin8800/s-ui

- 前端

前端代码请查看 frontend

- 后端

请先至少构建一次前端。

构建后端:

# 删除旧的前端编译文件
rm -fr web/html/*
# 应用新的前端编译文件
cp -R frontend/dist/ web/html/
# 构建
go build -o sui main.go

运行后端(在仓库根目录执行):

./sui

语言

  • 英语
  • 波斯语
  • 越南语
  • 简体中文
  • 繁体中文
  • 俄语

功能

  • 支持的协议:
    • 通用协议:Mixed、SOCKS、HTTP、HTTPS、Direct、Redirect、TProxy
    • 基于 V2Ray 的协议:VLESS、VMess、Trojan、Shadowsocks
    • 其他协议:ShadowTLS、Hysteria、Hysteria2、Naive、TUIC
  • 支持 XTLS 协议。
  • 提供高级流量路由界面,支持 PROXY Protocol、External、透明代理、SSL 证书和端口配置。
  • 提供高级入站和出站配置界面。
  • 支持客户端流量上限和到期时间。
  • 显示在线客户端、入站、出站流量统计和系统状态监控。
  • 订阅服务支持添加外部链接和订阅。
  • Web 面板和订阅服务支持 HTTPS 安全访问(需自行提供域名和 SSL 证书)。
  • 深色/浅色主题。

环境变量

点击查看详情

使用方式

变量 类型 默认值
SUI_LOG_LEVEL "debug" | "info" | "warn" | "error" "info"
SUI_DEBUG boolean false
SUI_BIN_FOLDER string "bin"
SUI_DB_FOLDER string "db"
SINGBOX_API string -

SSL 证书

点击查看详情

Certbot

snap install core; snap refresh core
snap install --classic certbot
ln -s /snap/bin/certbot /usr/bin/certbot

certbot certonly --standalone --register-unsafely-without-email --non-interactive --agree-tos -d <你的域名>

鸣谢原作者:alireza0

from  https://github.com/rocksq/s-ui1















No comments:

Post a Comment