如果你刚开始折腾 VPS 节点,不想一上来就碰域名、证书、Nginx、CDN、面板,那么 sing-box + VLESS + Reality + Vision 是一个很适合入门的组合。

它的优点很直接:

  • 不需要域名
  • 不需要申请 TLS 证书
  • 服务端只跑 sing-box,一个配置文件就能启动
  • Reality 负责伪装真实 TLS 握手
  • Vision 负责 VLESS 在 TCP 场景下的高性能传输

这篇教程会从一台全新的 Debian / Ubuntu VPS 开始,带你完成安装、生成密钥、写服务端配置、启动服务、填写客户端参数和排错。

本教程基于 sing-box 1.9+ 版本编写。sing-box 语法迭代较快,请尽量使用最新版服务端和客户端。

先说结论

最终我们要部署的是:

1
VLESS + TCP(RAW) + REALITY + xtls-rprx-vision

在 sing-box 配置里,最关键的几个字段是:

1
2
3
4
5
6
7
8
9
10
{
"type": "vless",
"flow": "xtls-rprx-vision",
"tls": {
"enabled": true,
"reality": {
"enabled": true
}
}
}

这里容易混淆的地方是:Vision 不是一个单独协议,也不是传输层,而是 VLESS 的 flow 参数

一、准备条件

你需要准备:

  • 一台 VPS,推荐 Debian 12 或 Ubuntu 22.04 / 24.04
  • 一个可以 SSH 登录 VPS 的终端
  • VPS 公网 IP
  • 放行一个 TCP 端口,本文默认使用 443

本文不需要:

  • 不需要域名
  • 不需要 Cloudflare
  • 不需要申请证书
  • 不需要 3x-ui / x-ui 面板

注意:请遵守你所在地区和服务商的使用规则。本文仅用于自有服务器远程访问、加密传输和网络调试场景。

二、更新系统

SSH 登录 VPS 后,先更新系统。

如果你是 root 用户,按顺序一条一条执行:

1
apt-get update
1
apt-get full-upgrade -y
1
apt-get install -y curl wget nano ca-certificates gnupg lsb-release ufw

Reality 对服务端和客户端时间差比较敏感,时间明显不准时可能会连接失败。先查看时间状态:

1
timedatectl

重点看 Local timeUniversal timeSystem clock synchronized。如果时间明显不对,优先到 VPS 服务商面板里检查系统时间;如果你用的是 LXC / OpenVZ / 容器环境,系统时间通常由宿主机控制,容器内不一定能直接修改。

三、安装 sing-box

sing-box 官方提供了安装脚本。Debian / Ubuntu 用户可以直接执行:

1
curl -fsSL https://sing-box.app/install.sh | sh

安装完成后查看版本:

1
sing-box version

如果能看到版本号,就说明安装成功。以后需要升级 sing-box,也可以再次运行上面的官方安装脚本。

四、开启 BBR

BBR 不是必须项,但大多数 VPS 上开启后 TCP 体验会更好。

先写入 BBR 配置。注意:请点击代码块右上角的复制按钮完整复制,确保粘贴到终端时包含换行。下面这一段要从第一行复制到 EOF,作为一个整体执行:

1
2
3
4
tee /etc/sysctl.d/99-bbr.conf > /dev/null <<'EOF'
net.core.default_qdisc=fq
net.ipv4.tcp_congestion_control=bbr
EOF

再应用系统参数:

1
sysctl --system

检查:

1
sysctl net.ipv4.tcp_congestion_control

看到类似结果即可:

1
net.ipv4.tcp_congestion_control = bbr

五、生成 UUID、Reality 密钥和 short_id

VLESS + Reality 需要 4 个关键参数:

  • uuid:用户 ID,客户端和服务端必须一致
  • private_key:Reality 私钥,只放在服务端
  • public_key:Reality 公钥,只放在客户端
  • short_id:短 ID,客户端和服务端必须一致

先生成 UUID:

1
sing-box generate uuid

示例输出:

1
0d72f5a1-1111-4a22-8888-123456789abc

再生成 Reality 密钥对:

1
sing-box generate reality-keypair

示例输出:

1
2
PrivateKey: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
PublicKey: yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy

最后生成 short_id:

1
sing-box generate rand --hex 8

示例输出:

1
7f3a91c6d8e24b10

如果你的 sing-box 版本没有 generate rand,也可以用:

1
openssl rand -hex 8

把这 4 个值先记下来:

1
2
3
4
UUID        = 你的 UUID
PrivateKey = 服务端 Reality 私钥
PublicKey = 客户端 Reality 公钥
Short ID = short_id

千万不要把 PrivateKey 发给别人。客户端只需要 PublicKey

六、选择 Reality 伪装目标

Reality 需要一个真实可访问的网站作为握手目标。新手可以先用:

1
www.microsoft.com

在 VPS 上测试一下:

1
curl -I https://www.microsoft.com --connect-timeout 5

能看到 HTTP 响应头,说明 VPS 可以访问这个目标。

你也可以换成其他大型 HTTPS 网站,但建议满足这几点:

  • 支持 TLS 1.3
  • 从你的 VPS 能正常访问
  • 域名和证书正常
  • 不要使用奇怪的小站或自建站

本文后面的配置统一使用:

1
server_name = www.microsoft.com

如果后续使用中遇到断流,可以将 server_namehandshake.server 换成苹果的系统更新或 iCloud 域名,例如 swdist.apple.comgateway.icloud.com。换伪装域名时,服务端和客户端必须保持一致。

七、写入服务端配置

打开 sing-box 配置文件:

1
nano /etc/sing-box/config.json

把下面这一整份 JSON 写入 /etc/sing-box/config.json。如果文件里已经有默认配置,比如 shadowsocksmixedtun 等旧入站内容,不要和下面的配置混在一起;写入前先清空原文件内容,并替换 3 个地方:

  • 替换成你的UUID
  • 替换成你的Reality私钥
  • 替换成你的ShortID

这里 不用填 VPS IP。服务端的 "listen": "0.0.0.0" 表示监听这台 VPS 的所有公网和内网地址,保持不变即可。VPS IP 只填在后面的客户端配置里。

注意:这一段是 服务端配置,要写在 VPS 的 /etc/sing-box/config.json 里。服务端配置里应该看到 inbounds 里的 "type": "vless"private_key。如果你看到的是 "type": "mixed""tag": "mixed-in""server": "你的VPS公网IP"public_key"final": "proxy",那是后面的客户端配置,不能粘到 VPS 服务端。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
{
"log": {
"level": "info",
"timestamp": true
},
"inbounds": [
{
"type": "vless",
"tag": "vless-reality-in",
"listen": "0.0.0.0",
"listen_port": 443,
"users": [
{
"name": "user1",
"uuid": "替换成你的UUID",
"flow": "xtls-rprx-vision"
}
],
"tls": {
"enabled": true,
"server_name": "www.microsoft.com",
"reality": {
"enabled": true,
"handshake": {
"server": "www.microsoft.com",
"server_port": 443
},
"private_key": "替换成你的Reality私钥",
"short_id": [
"替换成你的ShortID"
],
"max_time_difference": "1m"
}
}
}
],
"outbounds": [
{
"type": "direct",
"tag": "direct"
}
],
"route": {
"final": "direct"
}
}

这里解释几个重点:

  • listen_port:服务端监听端口,本文用 443
  • uuid:VLESS 用户 ID
  • flow:必须填 xtls-rprx-vision
  • server_name:客户端填写的 SNI,也就是伪装目标域名
  • handshake.server:Reality 实际转发握手的目标站
  • private_key:只写服务端 Reality 私钥
  • short_id:客户端也要填写同一个值

如果你的 VPS 同时有 IPv6,并且你希望监听 IPv4 + IPv6,可以把:

1
"listen": "0.0.0.0"

改成:

1
"listen": "::"

新手优先用 0.0.0.0,排错更直观。

八、检查配置并启动服务

编辑时看到 JSON 被挤成很长一行,或者自动折到下一行,是正常显示效果,不代表配置错了。不要靠肉眼判断,写入后用下面的命令检查。

下面几步建议一条一条执行,不要把多条命令粘在同一行。

第一步,检查配置文件:

1
sing-box check -c /etc/sing-box/config.json

如果没有报错,第二步,格式化配置:

1
sing-box format -w -c /etc/sing-box/config.json

第三步,设置开机自启并重启服务:

1
systemctl enable sing-box
1
systemctl restart sing-box

第四步,查看运行状态:

1
systemctl status sing-box --no-pager

看到 Active: active (running),并且日志里有 tcp server started at 0.0.0.0:443,说明 sing-box 已经启动成功。如果 Loaded 那一行显示 disabled,表示当前服务虽然在运行,但还没有设置开机自启,再执行一次 systemctl enable sing-box 即可。

如果误把几条命令粘在同一行,可能会看到 unknown flag: --no-pager。这不是配置错了,只是 shell 把后面的命令当成前一条命令的参数了,重新按上面四步分开执行即可。

查看日志:

1
journalctl -u sing-box --output cat -f

检查端口是否监听:

1
ss -tlnp | grep ':443'

正常情况下,你应该能看到 sing-box 正在监听 443

九、放行防火墙端口

如果你使用 ufw,先确认 SSH 端口已经放行。若执行 ufw 时提示 ufw: command not found,说明系统里还没安装 ufw,可以先安装。下面两条命令要分开执行,不要粘在同一行:

1
apt-get update
1
apt-get install -y ufw

如果误粘成 apt-get update apt-get install -y ufw,会看到 E: The update command takes no arguments。这不是系统坏了,重新按上面两条分别执行即可。

如果你用的是容器环境,系统可能不支持 ufw。这种情况下可以先跳过系统内防火墙,只去服务商后台安全组放行 22/tcp443/tcp

默认 SSH 是 22

1
ufw allow 22/tcp

放行 sing-box 节点端口:

1
ufw allow 443/tcp

启用防火墙:

1
ufw enable
1
ufw status

如果你改过 SSH 端口,比如 SSH 是 2222,那就必须放行:

1
ufw allow 2222/tcp

云厂商后台的安全组也要同步放行 443/tcp。很多连接超时不是 sing-box 配置错了,而是云防火墙没开。

十、客户端怎么填

不同客户端界面不一样,但核心参数是一样的。

图形客户端通用参数

1
2
3
4
5
6
7
8
9
10
11
12
13
14
协议:VLESS
地址 / Server:你的 VPS 公网 IP
端口 / Port:443
UUID:服务端生成的 UUID
传输 / Network:TCP / RAW
加密 / Encryption:none
Flow:xtls-rprx-vision
TLS:开启
TLS 类型:Reality
SNI / Server Name:www.microsoft.com
Fingerprint / uTLS:chrome
Public Key:服务端生成的 PublicKey
Short ID:服务端配置里的 short_id
ALPN:留空

注意两点:

  1. 地址 / Server 填你的 VPS IP,不是 www.microsoft.com
  2. SNI / Server Name 才填 www.microsoft.com

这两个填反了,是新手最常见的错误。

桌面端 sing-box 客户端示例

如果你在电脑本地也用 sing-box,可以参考下面这份配置。这一段适合 macOS / Windows / Linux 桌面端使用,因为它只是在本机开一个 127.0.0.1:7890 代理端口。

注意:这不是手机端整机代理配置。手机端如果直接照抄这个 mixed-in 配置,客户端可能显示已经启动,但系统流量不会自动走代理。

把这几个值替换掉:

  • 你的VPS公网IP
  • 你的UUID
  • 你的Reality公钥
  • 你的ShortID
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
{
"log": {
"level": "info",
"timestamp": true
},
"inbounds": [
{
"type": "mixed",
"tag": "mixed-in",
"listen": "127.0.0.1",
"listen_port": 7890
}
],
"outbounds": [
{
"type": "vless",
"tag": "proxy",
"server": "你的VPS公网IP",
"server_port": 443,
"uuid": "你的UUID",
"flow": "xtls-rprx-vision",
"tls": {
"enabled": true,
"server_name": "www.microsoft.com",
"utls": {
"enabled": true,
"fingerprint": "chrome"
},
"reality": {
"enabled": true,
"public_key": "你的Reality公钥",
"short_id": "你的ShortID"
}
},
"packet_encoding": "xudp"
},
{
"type": "direct",
"tag": "direct"
}
],
"route": {
"final": "proxy"
}
}

启动客户端后,把系统代理或浏览器代理指向:

1
127.0.0.1:7890

如果客户端日志里只看到终端测试请求,比如 api.ipify.org:443,但浏览器没有任何连接记录,说明浏览器还没有走这个本地代理。

手机端 sing-box 使用要点

手机端不要只看 sing-box started。关键是确认它有没有用 VPN / TUN 模式接管系统流量。

正常情况下,手机端启动后应该出现系统 VPN 图标,sing-box 日志里也应该能看到手机浏览器或 App 发出的连接。如果没有 VPN 图标,或者日志里没有任何新的访问记录,通常说明手机流量没有进入 sing-box。

手机端建议优先使用客户端图形界面填写上面的“图形客户端通用参数”,或使用客户端提供的导入功能。不要把桌面端的 127.0.0.1:7890 当成手机整机代理来用。

如果手机端提供运行模式,优先选择类似下面的模式:

  • VPN
  • TUN
  • 全局代理 / Global

如果只提供本地 HTTP / SOCKS 代理模式,那就还需要在系统 Wi-Fi 代理里手动填写手机本机代理地址;这个方式容易漏掉 App 流量,新手更推荐直接用 VPN / TUN 模式。

十一、测试是否成功

桌面端客户端连接后,打开终端测试:

1
curl -x socks5h://127.0.0.1:7890 https://api.ipify.org

如果返回的是你的 VPS 出口 IP,说明客户端到 VPS 的代理链路已经工作。此时如果浏览器仍然没网,重点检查浏览器或系统代理是否真的指向 127.0.0.1:7890

也可以测试 HTTPS:

1
curl -x socks5h://127.0.0.1:7890 https://www.google.com -I

手机端测试时,直接用手机浏览器打开:

1
https://api.ipify.org

如果显示的是 VPS IP,说明手机端已经走代理。如果显示的还是手机运营商或家里宽带 IP,说明手机端 VPN / TUN 没有接管流量,优先回到客户端里检查运行模式和配置是否启用。

服务端日志里如果有连接记录,也说明入站正在工作:

1
journalctl -u sing-box --output cat -f

十二、常见错误排查

1. 客户端连接超时

优先检查端口:

1
ss -tlnp | grep ':443'
1
ufw status

再检查云厂商安全组是否放行了 443/tcp

如果端口没监听,说明 sing-box 没启动成功:

1
systemctl status sing-box --no-pager
1
journalctl -u sing-box --output cat -e

2. reality verification failed

通常是这些参数不一致:

  • 客户端 PublicKey 填错
  • 服务端 PrivateKey 填错
  • short_id 不一致
  • server_name / SNI 不一致
  • 客户端时间或服务端时间偏差太大
  • 客户端 sing-box 核心太旧

先检查时间:

1
timedatectl

再升级 sing-box,按顺序一条一条执行:

1
apt-get update
1
apt-get install --only-upgrade sing-box
1
systemctl restart sing-box

3. TLS handshake invalid connection / processed invalid connection

服务端日志里偶尔出现 TLS handshake invalid connectionprocessed invalid connection,不一定代表配置错了。公网端口会被扫描,陌生连接打到 Reality 入站时可能会被拒绝。

如果 systemctl status 里已经看到 Active: active (running),并且日志里出现 inbound connection from ...,说明外部连接已经能打到 VPS,端口和安全组大概率是通的。

判断是不是自己的客户端:先在本地查公网 IP,再打开客户端连接,看服务端日志里是否出现同一个 IP。

1
curl https://api.ipify.org

如果日志里的 IP 不是你的公网 IP,多半只是公网扫描,可以忽略。如果日志里的 IP 是你的公网 IP,但仍然报 Reality / TLS 握手错误,再重点检查 UUID、Reality 公钥、short_id、SNI 和 flow 是否完全一致。

4. 客户端显示 connected,但网页打不开

先在本机确认本地代理是否工作:

1
curl -x socks5h://127.0.0.1:7890 https://api.ipify.org

如果这条命令能返回 VPS 出口 IP,说明节点本身是通的。浏览器打不开通常是浏览器没有走代理:把 macOS 系统代理或浏览器代理设置为 SOCKS5 127.0.0.1 7890,再打开 https://api.ipify.org 验证。

检查服务端出站是否能访问外网:

1
curl -I https://www.google.com --connect-timeout 5
1
curl -I https://www.microsoft.com --connect-timeout 5

如果服务端自己都访问不了目标网站,那不是客户端问题,而是 VPS 出口网络问题。

5. 手机端 sing-box 启动了,但没网络

如果电脑端用 curl -x socks5h://127.0.0.1:7890 https://api.ipify.org 能返回 VPS IP,但手机端不行,优先怀疑手机端没有用 VPN / TUN 接管系统流量,而不是 VPS 或防火墙坏了。

手机端按这个顺序排查:

  1. 启动后手机状态栏是否出现 VPN 图标
  2. 手机浏览器打开 https://api.ipify.org 是否显示 VPS IP
  3. VPS 上执行 journalctl -u sing-box --output cat -f 时,手机访问网页后是否出现新的 inbound connection

如果没有 VPN 图标,也没有服务端新连接,说明手机流量根本没有进入 sing-box。回到手机客户端里选择 VPN / TUN / 全局代理模式。

如果服务端有手机的新连接,但仍然打不开网页,再检查客户端参数是否和服务端一致,尤其是 UUIDPublic KeyShort IDSNIFlow 和端口 443

6. 速度不理想

VLESS + Reality + Vision 是稳定路线,不是暴力提速路线。速度主要取决于:

  • VPS 线路质量
  • 本地运营商到 VPS 的路由
  • 晚高峰丢包
  • VPS 带宽限制
  • 客户端分流和 DNS 配置

如果 TCP 晚高峰丢包严重,可以再额外部署 Hysteria2 / TUIC 作为 UDP 加速备用节点。但这已经是另一套方案,不建议新手一开始就混在同一个教程里。

十三、升级和维护

以后升级 sing-box,按顺序一条一条执行:

1
apt-get update
1
apt-get install --only-upgrade sing-box
1
sing-box check -c /etc/sing-box/config.json
1
systemctl restart sing-box

查看服务状态:

1
systemctl status sing-box --no-pager

查看实时日志:

1
journalctl -u sing-box --output cat -f

修改配置后,一定先检查:

1
sing-box check -c /etc/sing-box/config.json

没报错再重启:

1
systemctl restart sing-box

十四、参数速查表

参数 服务端填写 客户端填写
VPS IP 不需要 server
端口 listen_port server_port
UUID users.uuid uuid
Vision users.flow flow
Reality 私钥 tls.reality.private_key 不填
Reality 公钥 不填 tls.reality.public_key
short_id tls.reality.short_id tls.reality.short_id
伪装域名 tls.server_namehandshake.server tls.server_name / SNI
uTLS 指纹 不填 chrome

结语

如果你只是想先搭一个稳定、干净、可维护的 VPS 节点,那么这套 sing-box + VLESS + Reality + Vision 就足够作为第一套配置。

它不追求花哨,但胜在链路简单、依赖少、排错容易。等你把这套跑稳之后,再去加 Hysteria2、TUIC、CDN 备用通道或更复杂的分流,会轻松很多。

附录:配套客户端配置示例

下面这份是 sing-box 客户端 Fake-IP + TUN 分流模板,不是 VPS 服务端配置。使用前先把 你的VPS公网IP你的UUID你的Reality公钥你的ShortID 改成你自己的参数。

它和前面的桌面端 mixed-in 示例用途不同:前面的示例只提供本机代理端口,这份模板用于接管系统流量并做分流。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
{
"log": {
"level": "info",
"timestamp": true
},
"dns": {
"servers": [
{
"tag": "local",
"address": "223.5.5.5",
"detour": "direct"
},
{
"tag": "remote",
"address": "https://1.1.1.1/dns-query",
"address_resolver": "local",
"detour": "proxy"
},
{
"tag": "fakeip",
"address": "fakeip"
}
],
"rules": [
{
"rule_set": "geosite-category-ads-all",
"action": "reject"
},
{
"domain_suffix": [
"bing.com",
"copilot.microsoft.com",
"copilot.cloud.microsoft",
"githubcopilot.com",
"tv.apple.com",
"news.apple.com"
],
"action": "route",
"server": "fakeip"
},
{
"rule_set": [
"geosite-private",
"geosite-apple",
"geosite-microsoft",
"geosite-geolocation-cn"
],
"action": "route",
"server": "local"
},
{
"rule_set": [
"geosite-openai",
"geosite-google",
"geosite-youtube",
"geosite-telegram",
"geosite-github",
"geosite-geolocation-!cn"
],
"action": "route",
"server": "fakeip"
}
],
"final": "remote",
"strategy": "ipv4_only",
"fakeip": {
"enabled": true,
"inet4_range": "198.18.0.0/15"
}
},
"inbounds": [
{
"type": "tun",
"tag": "tun-in",
"address": [
"172.19.0.1/30"
],
"auto_route": true,
"strict_route": true,
"stack": "system"
}
],
"outbounds": [
{
"type": "vless",
"tag": "proxy",
"server": "你的VPS公网IP",
"server_port": 443,
"uuid": "你的UUID",
"flow": "xtls-rprx-vision",
"tls": {
"enabled": true,
"server_name": "www.microsoft.com",
"utls": {
"enabled": true,
"fingerprint": "chrome"
},
"reality": {
"enabled": true,
"public_key": "你的Reality公钥",
"short_id": "你的ShortID"
}
},
"packet_encoding": "xudp"
},
{
"type": "direct",
"tag": "direct"
}
],
"route": {
"rules": [
{
"action": "sniff"
},
{
"protocol": "dns",
"action": "hijack-dns"
},
{
"network": "udp",
"port": 53,
"action": "hijack-dns"
},
{
"network": "udp",
"port": 443,
"action": "reject"
},
{
"ip_is_private": true,
"action": "route",
"outbound": "direct"
},
{
"rule_set": "geosite-category-ads-all",
"action": "reject"
},
{
"ip_cidr": "198.18.0.0/15",
"action": "route",
"outbound": "proxy"
},
{
"domain_suffix": [
"bing.com",
"copilot.microsoft.com",
"copilot.cloud.microsoft",
"githubcopilot.com",
"tv.apple.com",
"news.apple.com"
],
"action": "route",
"outbound": "proxy"
},
{
"rule_set": [
"geosite-openai",
"geosite-google",
"geosite-youtube",
"geosite-telegram",
"geosite-github"
],
"action": "route",
"outbound": "proxy"
},
{
"rule_set": [
"geosite-private",
"geosite-apple",
"geosite-microsoft",
"geosite-geolocation-cn"
],
"action": "route",
"outbound": "direct"
},
{
"rule_set": "geosite-geolocation-!cn",
"action": "route",
"outbound": "proxy"
},
{
"rule_set": "geoip-cn",
"action": "route",
"outbound": "direct"
}
],
"rule_set": [
{
"tag": "geosite-category-ads-all",
"type": "remote",
"format": "binary",
"url": "https://cdn.jsdelivr.net/gh/SagerNet/sing-geosite@rule-set/geosite-category-ads-all.srs",
"download_detour": "direct"
},
{
"tag": "geosite-private",
"type": "remote",
"format": "binary",
"url": "https://cdn.jsdelivr.net/gh/SagerNet/sing-geosite@rule-set/geosite-private.srs",
"download_detour": "direct"
},
{
"tag": "geosite-openai",
"type": "remote",
"format": "binary",
"url": "https://cdn.jsdelivr.net/gh/SagerNet/sing-geosite@rule-set/geosite-openai.srs",
"download_detour": "direct"
},
{
"tag": "geosite-google",
"type": "remote",
"format": "binary",
"url": "https://cdn.jsdelivr.net/gh/SagerNet/sing-geosite@rule-set/geosite-google.srs",
"download_detour": "direct"
},
{
"tag": "geosite-youtube",
"type": "remote",
"format": "binary",
"url": "https://cdn.jsdelivr.net/gh/SagerNet/sing-geosite@rule-set/geosite-youtube.srs",
"download_detour": "direct"
},
{
"tag": "geosite-telegram",
"type": "remote",
"format": "binary",
"url": "https://cdn.jsdelivr.net/gh/SagerNet/sing-geosite@rule-set/geosite-telegram.srs",
"download_detour": "direct"
},
{
"tag": "geosite-github",
"type": "remote",
"format": "binary",
"url": "https://cdn.jsdelivr.net/gh/SagerNet/sing-geosite@rule-set/geosite-github.srs",
"download_detour": "direct"
},
{
"tag": "geosite-apple",
"type": "remote",
"format": "binary",
"url": "https://cdn.jsdelivr.net/gh/SagerNet/sing-geosite@rule-set/geosite-apple.srs",
"download_detour": "direct"
},
{
"tag": "geosite-microsoft",
"type": "remote",
"format": "binary",
"url": "https://cdn.jsdelivr.net/gh/SagerNet/sing-geosite@rule-set/geosite-microsoft.srs",
"download_detour": "direct"
},
{
"tag": "geosite-geolocation-!cn",
"type": "remote",
"format": "binary",
"url": "https://cdn.jsdelivr.net/gh/SagerNet/sing-geosite@rule-set/geosite-geolocation-!cn.srs",
"download_detour": "direct"
},
{
"tag": "geosite-geolocation-cn",
"type": "remote",
"format": "binary",
"url": "https://cdn.jsdelivr.net/gh/SagerNet/sing-geosite@rule-set/geosite-geolocation-cn.srs",
"download_detour": "direct"
},
{
"tag": "geoip-cn",
"type": "remote",
"format": "binary",
"url": "https://cdn.jsdelivr.net/gh/SagerNet/sing-geoip@rule-set/geoip-cn.srs",
"download_detour": "direct"
}
],
"final": "proxy",
"auto_detect_interface": true
},
"experimental": {
"cache_file": {
"enabled": true
}
}
}

参考资料