月神云 - 全终端加速服务

sing-box TUN 模式开启后断网怎么办?

更新于 2026-11-03 · moontoday.store

简答:先关闭 sing-box 的 TUN 开关并恢复系统代理、DNS 和 VPN 状态,再用最小配置验证;不要一开始就重装客户端。若关闭 TUN 后恢复,优先检查 TUN 的 auto_route、strict_route、route.auto_detect_interface、DNS 处理和其他虚拟网卡冲突;若关闭后仍断网,则排查系统代理、残留路由、DNS 和 VPN 权限。本文按 2026-11-03 可核验的 sing-box 文档整理,适用于使用 sing-box 配置或图形客户端的 Windows、macOS、Linux 场景。本站是第三方使用指南,不代表任何客户端官方。

定义:sing-box TUN 模式是通过虚拟网卡接管系统流量的运行方式,开启后断网通常需要在权限、路由、DNS、代理回环和其他网络组件之间分层定位。

先试这一步:关闭 TUN,确认网络能否恢复

如果开启 TUN 后整台设备立刻无法上网,先不要修改大量配置。按下面顺序操作:关闭 sing-box 的 TUN 开关,退出或停止运行实例,关闭其他 VPN、代理客户端和虚拟网络工具,然后等待网络状态重新建立。

  1. 关闭 TUN:在当前客户端的运行配置中关闭 TUN 或透明代理开关。不同图形客户端的按钮名称可能不同,以实际界面显示为准。
  2. 恢复系统代理:如果客户端曾开启 HTTP 或 SOCKS 系统代理,先关闭系统代理,避免客户端停止后浏览器仍指向不存在的本地端口。
  3. 断开并重新连接网络:重新连接 Wi-Fi、网线或移动热点;必要时重启网络适配器。
  4. 只保留一个网络接管入口:暂时关闭其他 VPN、Clash、虚拟网卡、VMware、WSL、Docker 网络组件,避免多个程序同时修改路由或 DNS。
  5. 复测:先打开一个已知可访问的网站,再分别测试域名和 IP。不要只依据浏览器页面判断,后文会给出分层检查方法。

如果关闭 TUN 后网络恢复,问题大多集中在 TUN 权限、自动路由、DNS、回环或虚拟网卡冲突;如果仍然断网,则先按“关闭客户端后仍断网”一节恢复系统网络。

sing-box 官方文档说明,TUN 的 auto_route 会把默认路由指向 TUN;同时,route.auto_detect_interface 或默认接口设置用于避免出站连接再次被 TUN 接管形成路由回环。可对照 sing-box TUN 配置文档 和 sing-box Route 配置文档 核对当前字段。

按症状定位:先判断是 DNS、路由、节点还是权限

sing-box TUN 断网症状与优先检查项
现象优先检查下一步
开启 TUN 后所有网站和应用都断网管理员或 root 权限、TUN 虚拟网卡、auto_route、其他 VPN 冲突关闭其他网络接管程序,用最小配置启动并查看日志
IP 地址可访问,但域名打不开DNS 服务、DNS 劫持、系统 DNS 残留分别测试域名解析和 IP 连接,检查 DNS 配置与 TUN 的 DNS 处理方式
只有浏览器打不开,终端或其他应用正常系统 HTTP 代理、浏览器独立代理、PAC 或代理端口关闭系统代理后重新打开浏览器,确认本地端口是否仍在监听
只有部分应用无法联网strict_route、应用绑定接口、IPv6、分流规则暂时关闭 strict_route 或应用独立代理设置,再看日志中的路由结果
关闭 sing-box 后仍然没有网络系统代理、DNS、残留路由、VPN 权限或虚拟网卡恢复系统网络设置并重新连接网络,再进行 IP、DNS、网页三层复测
客户端启动时报配置错误配置字段与当前内核版本不匹配、JSON 格式错误使用同一版本的 sing-box 执行配置检查,不要直接复制旧字段

这张表只用于确定排查顺序,不代表所有客户端的菜单或字段都一致。尤其是 TUN、DNS、系统 VPN 和网络权限由不同客户端实现,实际按钮、授权方式和日志位置需要以当前客户端界面为准。

配置与日志检查:先校验,再改 TUN 路由字段

1. 用同一版本执行配置检查

如果使用的是独立 sing-box 命令行程序,可以在配置文件所在目录执行 sing-box check -c config.json。其中 config.json 是演示文件名,实际使用时替换为你的配置文件路径;如果客户端内部使用了多个配置文件或配置目录,应按该客户端提供的检查方式操作。

官方配置说明列出了 sing-box check、sing-box format 和 sing-box merge 等命令。配置检查通过只表示配置能够被解析,不等于节点可用、DNS 正常或系统路由一定正确。可查看 sing-box 配置说明 中的 Check 部分。

2. 临时打开 debug 日志

在配置中加入或修改日志段时,只使用当前版本支持的字段。例如:

{"log":{"level":"debug","timestamp":true}}

这是演示片段,不是可直接替换的完整配置。保存前必须合并到原有 JSON 结构中,并确认没有重复的顶层 log 字段。复测一次后再恢复为 info,避免长期输出大量日志。官方文档列出的日志级别包括 trace、debug、info、warn、error、fatal 和 panic,详见 sing-box Log 配置文档。

3. 重点检查 TUN 与 Route 的关联

  • auto_route:用于把默认路由设置到 TUN。开启后整机断网,应优先检查权限、虚拟网卡和出站回环。
  • route.auto_detect_interface:在 Linux、Windows 和 macOS 支持,用于让出站连接绑定默认网卡,避免代理自身的连接再次被 TUN 捕获。
  • route.default_interface:如果配置了固定接口,应确认接口名称仍存在;网络从 Wi-Fi 切到网线后,旧接口名可能不再适用。
  • strict_route:Windows 下可阻止部分 DNS 泄漏,但官方文档也提示它可能影响 VirtualBox 等应用;遇到只有虚拟机或特定应用无法联网时,应把它列入排查项。
  • route_address 与 route_exclude_address:自定义路由范围过窄或排除范围错误时,可能出现部分地址可用、部分地址完全无法连接。

不要为了“先能用”直接删除所有路由字段。建议先备份配置,将改动控制在一个字段,启动后记录结果,失败就回滚上一份配置。

Windows、macOS、Linux 分系统排查路径

Windows

  1. 确认客户端已获得管理员权限;如果 TUN 虚拟网卡创建失败或启动后马上停止,先查看客户端错误日志。
  2. 打开系统代理设置,确认没有残留指向 127.0.0.1 的 HTTP、SOCKS 或 PAC 地址。端口必须以当前客户端实际监听状态为准,不能照抄示例端口。
  3. 在命令提示符中执行 ipconfig /all,观察当前物理网卡、TUN 网卡和 DNS 服务器是否存在。命令只用于查看,不会修改网络。
  4. 执行 nslookup example.com 测试域名解析;如果解析失败但网络图标正常,优先排查 DNS,而不是先更换节点。
  5. 如果只有 VirtualBox、WSL 或特定程序无法联网,暂时测试关闭 strict_route,并逐项恢复其他网络组件。

macOS

  1. 检查客户端是否获得系统 VPN 或网络扩展授权。权限名称和入口可能随客户端及系统版本变化,以系统设置实际显示为准。
  2. 关闭其他 VPN、代理工具和网络过滤器,再重新启动 sing-box TUN。
  3. 使用终端执行 scutil --dns 查看系统 DNS 状态;如果 DNS 服务异常,先关闭 TUN 并重新连接 Wi-Fi 或网线。
  4. 执行 route -n get default 查看默认路由接口,确认配置中的固定接口没有指向已不存在的设备。
  5. 如果只有某个应用异常,先检查该应用是否启用了独立代理、私有 DNS 或网络过滤扩展。

Linux

  1. 确认运行 TUN、自动路由或 nftables 相关功能时拥有所需权限;没有权限时,TUN 地址和 MTU 可能不会自动配置。
  2. 执行 ip link 查看 TUN 设备是否存在,执行 ip route 查看默认路由和自定义路由。
  3. 如果使用自动重定向,检查系统是否具备 nftables 及相关内核支持;官方文档说明 Linux 上的 auto_redirect 依赖相应的 nftables 能力。
  4. 执行 resolvectl status 查看 DNS 状态;使用 systemd-resolved 的系统,还要确认 TUN 接口的 DNS 设置没有与物理网卡冲突。
  5. 如果配置由 systemd 服务启动,可以查看 sudo journalctl -u sing-box --output cat -e;该命令适用于已安装并使用 sing-box systemd 服务的环境。

Linux 的官方安装文档也列出了 systemd 服务的启动、停止和日志命令,可参考 sing-box Package Manager 文档。不同发行版的服务文件、权限和防火墙环境可能不同,不要把命令套用到非 systemd 系统。

关闭 TUN 后仍断网:按顺序恢复系统网络

  1. 先关闭系统代理:检查 Windows、macOS 或桌面环境的 HTTP、HTTPS、SOCKS、PAC 设置,删除指向已停止本地端口的配置。
  2. 重新连接物理网络:断开并重新连接 Wi-Fi 或网线;移动设备或笔记本从 VPN 切回普通网络时,也要确认当前连接已经重新建立。
  3. 刷新 DNS:优先使用系统提供的网络重连或 DNS 刷新方式,不要在没有确认系统类型的情况下照抄其他平台命令。
  4. 检查默认路由:Windows 使用 route print,macOS 使用 route -n get default,Linux 使用 ip route。只查看输出,先不要手动删除路由。
  5. 检查残留虚拟网卡:如果 TUN 设备仍存在但客户端已停止,重新启动客户端后正常关闭 TUN;只有在确认设备属于该客户端且有回滚方案时,才进行系统级清理。
  6. 最后再重启:如果系统代理、DNS 或 VPN 扩展的状态没有恢复,重启设备通常比直接删除配置更安全。

复测时按三层进行:第一层测试 IP 是否可达,第二层测试域名是否能解析,第三层测试浏览器或目标应用是否能建立连接。只有三层都恢复,才可以判断网络已基本恢复。

复测与回滚:确认不是“看起来恢复”

完成一次改动后,只复测一个变量,并记录结果:

最小复测清单
测试项目观察结果说明
TUN 关闭、系统代理关闭普通网页能否打开用于确认基础网络是否恢复
域名解析nslookup example.com 是否返回结果失败时优先看 DNS
IP 层连接系统提供的连通性测试是否成功用于区分 DNS 与路由问题
仅启动 sing-box,不开 TUN本地代理入口是否能使用用于判断节点或出站是否基本可用
重新开启 TUN网页、终端、目标应用是否同时正常用于确认问题是否由 TUN 路由或 DNS 触发

如果重新开启 TUN 后立即复现,回滚最近一次配置改动,不要同时更换节点、DNS、MTU 和路由规则。若当前配置包含旧版字段,先核对安装版本对应的文档;官方迁移说明显示,TUN 的部分字段会在不同版本中新增、弃用或改变行为,不能把旧教程中的字段当成所有版本通用配置,可查看 sing-box Migration 文档。

MTU、IPv6、防火墙和 Docker、VMware、WSL 等虚拟网络组件属于后置排查项。只有在权限、DNS、默认路由、回环和其他 VPN 冲突排除后,再一次只调整一个变量,并保留原始配置作为回滚版本。

常见问题

sing-box 开启 TUN 后全部断网,第一步应该做什么?

先关闭 TUN 和系统代理,退出其他 VPN 或代理软件,再重新连接 Wi-Fi 或网线。确认基础网络恢复后,再检查权限、auto_route、DNS 和虚拟网卡,不建议一开始重装客户端。

sing-box TUN 开启后能打开 IP,但域名打不开怎么办?

这通常应先按 DNS 故障排查。执行系统对应的域名解析测试,确认 DNS 是否返回结果;同时检查 TUN 的 DNS 处理、系统 DNS 残留和其他 VPN 是否仍在接管 DNS。

为什么关闭 sing-box 后浏览器仍然无法上网?

常见原因是系统代理或 PAC 仍指向已停止的本地端口,也可能存在残留 VPN、DNS 或路由状态。先关闭系统代理并重新连接网络,再分别测试网页、域名解析和 IP 连通性。

strict_route 是否应该直接关闭?

不应直接把它当成通用修复项。官方文档说明它在 Windows 下可能影响 VirtualBox 等应用;如果只有虚拟机或特定程序异常,可以临时关闭进行对照测试,确认结果后再决定是否保留。

sing-box 配置检查通过,为什么开启 TUN 仍然断网?

配置检查主要用于确认文件能被解析,不等于权限、系统路由、DNS、节点连接和虚拟网卡都正常。还需要查看 debug 日志,并逐项确认 auto_route、auto_detect_interface、DNS 和其他网络接管程序。

相关阅读

参考资料

  1. sing-box 官方 TUN 配置文档
  2. sing-box 官方 Route 配置文档
  3. sing-box 官方配置说明与 Check 命令
  4. sing-box 官方 Log 配置文档
  5. sing-box 官方安装与 systemd 服务文档
  6. sing-box 官方迁移说明