总览

工作模型

sing-box 的核心处理链路由三部分组成:

1
应用或系统流量 → inbound → 路由规则 → outbound → 目标网络
  • inbound 接收流量,例如 SOCKS、HTTP 或 TUN。
  • 路由规则根据域名、IP、协议和入站标签选择处理方式。
  • outbound 决定流量直连、阻断,或者交给远端代理节点。

TUN 不是代理服务器协议,而是一个虚拟网络接口。启用 auto_route 后,sing-box 可以安装系统路由,把匹配的 IP 流量送入 TUN;在 Linux 上通常还会配合 auto_redirect 改善路由和转发性能。应用无需单独配置代理,因此适合透明接管系统流量。

SOCKS 入站则会在指定地址监听 SOCKS4、SOCKS4a 或 SOCKS5 请求。只有显式使用该代理端口的应用流量才会进入 sing-box,不会自动接管整个系统。

SOCKS 入站调试

下面的最小配置在 127.0.0.1:1080 创建 SOCKS 入站,并通过 direct 出站直接访问目标网络:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
{
"log": {
"level": "trace"
},
"inbounds": [
{
"type": "socks",
"listen": "127.0.0.1",
"listen_port": 1080
}
],
"outbounds": [
{
"type": "direct"
}
]
}

可以使用 curl 显式指定 SOCKS5 代理进行验证:

1
curl.exe --socks5-hostname 127.0.0.1:1080 https://example.com -v

这条调试链路是:

1
curl → SOCKS 入站(127.0.0.1:1080)→ 路由规则 → direct 出站 → 目标站点

它与 TUN 接管是两种独立的入站方式。若要验证 TUN,应检查虚拟网卡、系统路由以及 sing-box 路由日志,而不是给 curl 指定 SOCKS 端口。

参考资料