Nexitally

sing-box 连接不上网络怎么排查?从日志到 DNS、TUN 的完整步骤

更新于 2026-10-24 · nexitally.top

简答:sing-box 连接不上网络时,先看日志并执行配置检查,再按“配置—节点—DNS—路由—TUN—目标网站”顺序定位。网页打不开不一定是节点失效,也可能是本地端口、系统代理、VPN 权限或路由规则没有生效。

定义:sing-box 连接问题排查,是根据故障发生阶段和日志关键词,依次验证配置格式、订阅内容、节点握手、DNS 解析、路由接管与目标网站访问的过程。

先做这 5 分钟速查:判断到底是哪一层出错

先不要重装 sing-box,也不要同时更换节点、DNS 和规则。按照下面顺序做一次单变量检查:每完成一项就重新连接并记录结果。sing-box 使用 JSON 配置,官方文档提供了配置检查和格式化命令;图形客户端则通常在配置、日志或关于页面中显示核心版本和运行状态。可先查看官方配置结构说明与官方日志配置说明。

现象优先判断先做什么
客户端一启动就退出配置 JSON、字段废弃、版本不兼容或权限sing-box check -c config.json,再看第一条 fatal/error
有节点但一直超时服务器地址、端口、网络可达性或协议参数核对地址与端口,并测试 TCP/UDP 是否能到达
节点显示已连接,但网页打不开DNS、系统代理、路由或 TUN 没有接管先访问一个域名和一个 IP,再查看命中日志
只有部分应用不能用分应用路由、应用绕过 VPN 或代理协议不兼容暂时关闭应用排除规则,使用同一网络复测
只有一个网站打不开目标网站、IPv6、TLS 或该域名规则异常换另一个域名对比,不要立即判定整个节点失效

截至 2026-10-24,官方文档仍持续记录配置字段变化。不要直接把旧教程里的 DNS、TUN 或规则字段复制到新配置;先以客户端显示的核心版本和对应的官方文档为准。

第一步:确认订阅、配置格式和核心版本

如果问题发生在“导入订阅”阶段,先把它和“导入成功但运行失败”分开处理。打开订阅链接时,确认返回的是 sing-box 可识别的 JSON 配置,而不是登录页、HTML 错误页或其他客户端专用的 YAML。订阅链接包含账号凭据时,不要把完整链接粘贴到公开 Issue、群组或截图中。

  1. 检查文件是否完整:用文本编辑器打开配置,确认最外层是 JSON 对象,常见顶层字段包括 log、dns、inbounds、outbounds 和 route。官方配置说明明确 sing-box 使用 JSON 配置。
  2. 执行配置检查:命令行配置可运行 sing-box check -c config.json。如果图形客户端不允许直接执行命令,就在客户端的配置验证、启动日志或核心日志中寻找 JSON 解析错误、未知字段和缺少必填字段。
  3. 看第一条错误:不要只看最后的“启动失败”。例如 JSON 逗号错误、字段拼写错误、被移除的旧字段,会在后续引发端口、DNS 或路由连锁报错。
  4. 确认版本与配置来源匹配:官方迁移文档记录了 DNS 服务器格式、旧版 GeoIP/Geosite、TUN 地址字段、WireGuard outbound 等变化。若配置来自旧客户端或旧教程,优先按照迁移文档改字段,不要只删除报错字段。

如果配置检查通过但仍无法访问,说明故障已经进入运行阶段,下一步应看本地入站、节点出站和系统接管,而不是继续修改 JSON。

参考:sing-box 配置结构、sing-box 迁移说明。

第二步:看日志关键词,区分节点、端口、TLS 与 DNS

日志是排查 sing-box 连接问题的最短路径。官方日志配置支持 trace、debug、info、warn、error 和 fatal 等级,也可以写入文件。排错时可临时提高日志等级,复现一次后恢复,避免长期记录过多敏感信息。

日志或现象通常说明下一步
connection refused目标地址主动拒绝,或本地/服务器端口没有监听检查端口监听、服务状态、防火墙和安全组
timeout连接在规定时间内没有完成,可能是路径、端口、UDP 或服务器不可达换网络复测,并分别测试 TCP 与 UDP 条件
handshake failureTLS、Reality、协议参数或服务端握手不匹配核对 server_name、SNI、public_key、short_id、fingerprint 等字段
DNS lookup failed域名解析失败、DNS 服务器不可达或 DNS 路由错误先用 IP 访问对比,再检查 DNS server、规则与劫持设置
authentication failedUUID、密码、用户名或密钥不匹配重新复制凭据,确认没有多余空格或截断
日志显示 direct,但网页打不开规则把请求送到了直连,或目标网络本身不可达查看该域名命中的规则与最终 outbound,不要只看 VPN 图标

日志中出现节点地址、UUID、密码、私钥、订阅链接和完整域名时,分享前应打码。不要为了“测试”关闭 TLS 校验、公开 API 密钥或把完整配置上传到不可信网站。

Linux 使用 systemd 管理服务时,可查看服务日志:sudo journalctl -u sing-box --output cat -e;持续观察可用 sudo journalctl -u sing-box --output cat -f。官方安装文档也说明了这些服务管理方式。

参考:日志配置、安装与 systemd 日志。

第三步:检查本地端口、系统代理和服务监听

使用 mixed 入站时,sing-box 可以提供 SOCKS 和 HTTP 服务;只有客户端真正把浏览器或应用流量送到这个入站,网页请求才会进入 sing-box。官方 mixed 文档说明,set_system_proxy 可在支持的平台自动设置系统代理,但图形客户端也可能由自己的设置页接管。

  1. 确认监听地址与端口:查看配置或客户端设置中的 listen 和 listen_port。常见本地代理端口为 7897 或 7890,但必须以设置页为准。
  2. 确认系统代理一致:Windows、macOS 或 Linux 的系统代理地址通常应是 127.0.0.1 加对应端口。若客户端只启用了 TUN,系统代理开关未必是判断依据;反之,只开系统代理而应用不遵循系统代理,也会表现为无法上网。
  3. 检查端口是否被占用:Linux 可使用 sudo ss -lntup;macOS 改用 lsof -nP -iTCP -sTCP:LISTEN;Windows 可使用 netstat -ano。若端口被其他程序占用,改客户端端口或停止冲突进程。
  4. 做最小化验证:只保留一个本地入站和一个可确认的出站,关闭复杂规则后测试。若最小配置可用,再逐项恢复 DNS、规则集和 TUN。

端口监听正常,只能说明本机有程序接收请求,不能证明节点握手成功。要继续看连接日志里是否出现该请求、命中了哪个策略,以及最终使用了哪个 outbound。

参考:mixed 入站、监听字段。

第四步:按平台排查 TUN、VPN 权限和网络冲突

TUN 模式与普通系统代理不是同一条链路。TUN 需要创建虚拟接口并配置路由;如果权限不足、其他 VPN 正在占用 VPN 通道、系统防火墙拦截,或者默认路由没有切换,客户端可能显示运行中但应用仍无法访问。

平台重点检查处理动作
WindowsTUN 服务模式、管理员权限、Windows 防火墙、其他 VPN以管理员权限启动或安装客户端需要的服务;暂时关闭其他 VPN,检查 TUN 与 DNS 设置
macOS系统扩展、隐私与安全性放行、系统代理和 VPN 配置在系统设置中允许相关网络扩展;若下载程序被隔离,按系统提示完成放行后重新启动
Linuxroot/CAP_NET_ADMIN、专用用户、systemd 服务和路由表检查服务用户是否能读取配置和创建 TUN;查看 ip route、ip rule 与 systemd 日志
AndroidVPN 权限、始终开启 VPN、分应用排除、电池优化和其他 VPN允许 VPN 请求,暂时取消应用排除,关闭其他 VPN 后用 Wi-Fi 与移动网络分别测试
iOSVPN 配置授权、按应用规则、网络切换和系统限制重新允许 VPN 配置,关闭可能绕过 VPN 的分流规则,并分别测试 Wi-Fi 与蜂窝网络

官方图形客户端列表覆盖 Android、iOS/macOS/Apple tvOS、Windows 和 Linux。sing-box 的 TUN 文档还说明,auto_route 会把默认路由设置到 TUN;Linux 通常建议结合 auto_redirect,而 Windows 的 strict_route 会影响 DNS 泄漏和部分虚拟化软件的网络行为。修改这些选项后要一次只改一个,并记录恢复方法。

如果电脑同时运行 Docker、虚拟机、公司 VPN 或安全软件,先停用其中一个进行 A/B 测试;如果手机在 Wi-Fi 正常、移动网络失败,优先比较 DNS、IPv4/IPv6、运营商网络和 UDP 条件,不要直接归因于配置文件。

参考:官方图形客户端列表、TUN 入站说明、路由配置说明。

第五步:DNS、路由和协议参数的最小化复测

当 sing-box 能启动、本地端口也在监听,但网页仍打不开时,把问题拆成三个测试:解析是否成功、节点是否能建立连接、请求是否被正确路由。这样可以避免把 DNS 故障误判为节点故障。

  1. 先测域名与 IP:分别访问一个域名和一个已知可用的 IP。域名失败而 IP 成功,优先查 DNS;域名和 IP 都失败,再查节点、路由或目标网络。
  2. 检查 DNS 规则:查看 DNS 请求是否命中预期服务器,是否被错误的直连、阻断或旧规则集处理。官方文档显示,DNS 规则字段在多个版本中发生过迁移,旧版 geoip、geosite 和部分旧 DNS 字段不能直接照搬。
  3. 检查最终 outbound:不要只看“已连接”状态,要看具体请求的连接日志、命中规则和最终 outbound。若请求被送往 direct,而直连本身不可达,应检查 route.final、规则顺序和规则集下载状态。
  4. 核对协议参数:服务器地址、端口、UUID、密码、TLS 开关、SNI/server_name、Reality public_key、short_id、fingerprint 任何一个不一致,都可能导致握手失败。不要把客户端字段名称与其他内核或其他客户端的字段混用。
  5. 校准系统时间:TLS 和部分基于证书或握手时间的连接依赖正确系统时间。开启系统自动校时后,完全退出并重新启动 sing-box,再复测一次。

如果只剩 UDP 协议失败,而 TCP 协议正常,重点检查当前网络是否限制 UDP、服务器防火墙和云安全组是否放行对应端口,以及客户端是否真的使用了 UDP 出站。不要用 TCP 测试结果替代 UDP 结论。

复现仍失败时:用最小配置和脱敏信息定位

如果完成上述步骤仍然连接不上,建议建立一个最小化复现:只保留一个入站、一个出站、必要的 DNS 和最少路由规则,关闭复杂 rule-set、分应用规则和自定义 TUN 路由。每次只恢复一个模块,直到问题重新出现,这比同时修改多个字段更容易找到根因。

  • 必须保留:客户端平台、核心版本、操作系统版本、故障发生时间、连接网络类型、错误关键词和复现步骤。
  • 必须脱敏:订阅 URL、UUID、密码、私钥、Reality private_key、完整域名列表、服务器真实地址和可识别个人信息。
  • 不要直接提供:完整原始配置、完整日志文件、账户后台截图或包含授权信息的二维码。
  • 最终判定:配置检查失败属于配置层;端口拒绝或超时属于可达性层;握手失败属于协议参数层;DNS lookup failed 属于解析层;日志显示已命中规则但目标不可达,则继续比较路由、目标网站和当前网络。

sing-box 官方支持页面提供了项目支持渠道;提交问题前,应先阅读对应文档并完成脱敏。若问题只发生在某个商业订阅或某个节点,服务端状态、套餐状态和节点可用性需要由对应服务提供方核实,不能仅凭客户端图标下结论。

参考:sing-box 官方支持渠道。

常见问题

sing-box 显示已连接,为什么网页还是打不开?

“已连接”通常只表示客户端或节点状态正常,不代表所有应用流量都经过 sing-box。先查看连接日志是否出现请求、命中的规则和最终 outbound,再检查系统代理、TUN 权限、DNS 与应用排除规则。

sing-box 连接超时,是节点失效还是本地网络问题?

单凭 timeout 不能直接判定。先用同一网络测试其他节点,再切换 Wi-Fi 与移动网络;同时核对服务器地址、端口、TCP/UDP 类型、防火墙和安全组。如果不同网络结果不同,优先查当前网络路径或协议限制。

配置检查通过,但 sing-box 仍然无法上网怎么办?

配置检查通过只说明 JSON 和字段基本可解析,不能证明节点可达、握手成功或流量已被接管。继续看运行日志,依次检查本地端口、节点握手、DNS、路由、TUN/VPN 权限和最终出口。

为什么只有部分应用不能通过 sing-box?

常见原因包括分应用代理或排除规则、应用不遵循系统代理、IPv6/UDP 行为不同,以及其他 VPN 或安全软件拦截。先关闭应用排除和复杂规则,用同一网络对比一个浏览器与一个受影响应用。

分享 sing-box 日志时需要隐藏哪些内容?

至少隐藏订阅链接、UUID、密码、私钥、Reality 密钥、服务器真实地址、完整个人域名和账户信息。保留平台、核心版本、错误关键词、时间和脱敏后的配置结构即可。

相关阅读

参考资料

  1. Introduction - sing-box
  2. Log - sing-box
  3. Migration - sing-box
  4. Mixed - sing-box
  5. Listen Fields - sing-box
  6. Tun - sing-box
  7. Route - sing-box
  8. Graphical Clients - sing-box
  9. Package Manager - sing-box
  10. Support - sing-box