sing-box连接不上网怎么办?按日志、DNS、路由和TUN模式排查

更新于 2026-10-27 · xingvoy.shop

简答:sing-box连接不上网,先关闭TUN或系统代理并确认原始网络正常,再运行配置校验、查看日志关键词,最后按“代理端口→TUN/VPN权限→DNS→路由规则→节点与服务端”顺序处理。若日志是 timeout 或 connection refused,优先检查目标地址、端口、防火墙和节点;若是 DNS lookup failed、网页打不开但节点已连接,则优先检查DNS与分流规则。

定义:sing-box连接不上网,是指客户端启动或显示连接后,浏览器、系统应用或部分域名仍无法通过配置中的入站、DNS、路由和出站完成访问。

先做这 6 步:不要一开始就换节点

本文是基于公开技术文档整理的使用指南,不代表 sing-box 官方。先保留原配置副本,不要把订阅链接、UUID、密码、私钥或访问令牌发到公开平台。sing-box 配置使用 JSON,官方文档提供了配置检查与格式化命令;修改前应先备份,再校验、重新载入并查看日志。官方配置说明

  1. 确认原始网络:完全退出 sing-box,确认同一设备可以正常打开普通网页或访问局域网网关。
  2. 确认版本与进程:在终端执行 sing-box version;如果使用图形客户端,则在关于、版本或服务状态页面确认没有同时运行两个实例。
  3. 备份并校验配置:复制当前 JSON 配置,再执行 sing-box check。出现 JSON、字段或证书错误时,先修复配置,不要继续排查节点。
  4. 查看日志:把日志级别临时调整为 debug,重载配置后只测试一个网页或一个命令。官方日志配置支持 trace、debug、info、warn、error 等级别。官方日志配置
  5. 确认接管方式:只保留一种入口进行测试:系统代理、TUN 或 Android VPN。暂时关闭其他 VPN、网络加速器、代理软件和安全软件的网络过滤功能。
  6. 重新载入并验证:启动 sing-box,观察日志是否出现入站请求、DNS查询和出站连接,再分别测试域名、IP地址和实际业务。

最短判断原则是:连不上出站节点看目标地址、端口、认证、TLS和防火墙;节点能连但网页打不开看系统代理、TUN、DNS和路由;只有某个应用无网看分应用代理、应用自身代理设置和协议兼容。

按现象和日志关键词定位故障

现象或日志关键词优先判断最小修复动作验证方式
timeout、连接超时目标地址、端口不可达,或网络路径丢包核对服务器域名/IP、端口和传输方式;换一条网络单变量复测查看是否能建立出站连接;不要只看客户端“已启动”状态
connection refused目标主机主动拒绝,常见于端口未监听或服务端防火墙拒绝核对服务端监听端口、云安全组和系统防火墙在服务端确认监听地址与端口;客户端再次测试
DNS lookup failed、解析失败DNS服务器不可用、DNS规则错误或DNS请求未被正确接管检查 dns.servers、dns.rules、TUN的DNS处理方式先测试域名解析,再测试已知IP;观察日志是否出现DNS请求
no route、无路由route规则没有匹配,或默认出站为空、错误检查 route.rules 与 route.final,确认目标没有误命中 block 或 direct查看请求命中的规则和最终出站
certificate verify failedTLS证书、服务器名称、系统时间或配置参数不匹配先核对服务器名称、SNI、证书链和系统时间,不要直接关闭证书校验用同一配置重新测试,并对照出站日志
客户端显示已连接,但浏览器打不开浏览器没有使用系统代理,或TUN、DNS、路由没有接管流量确认代理地址端口,或启用正确的TUN/VPN权限看日志中是否出现浏览器请求;没有请求说明流量未进入 sing-box

连接不上节点:先排除配置和服务端入口问题

如果日志中完全没有成功的出站连接,先不要调整DNS。重点核对配置中的出站类型、服务器地址、端口、认证信息、TLS服务器名称以及传输层参数。配置文件能通过语法检查,只能说明 JSON 和字段结构基本可解析,不能证明远端服务一定可达。

  1. 把原配置复制一份,只保留一个入站、一个出站和必要的日志配置,避免多个代理组、规则集或远程资源同时干扰。
  2. 检查服务器地址是否填写错误,域名解析是否得到可用地址,端口是否与服务端监听端口一致。
  3. 如果使用自建服务端,在服务器侧确认进程正在监听目标端口,并检查系统防火墙、云安全组和上游网络策略。
  4. 如果使用订阅生成的配置,重新获取一份未被手工改动的配置,与当前版本导出的配置逐项比较;不要公开分享包含身份凭据的完整文件。
  5. 更换 Wi-Fi 与移动网络,只改一个变量。如果一种网络能连、另一种网络不能连,优先记录日志并判断是网络路径、IPv4/IPv6或端口可达性问题。

如果客户端日志显示已经建立出站连接,但浏览器仍无响应,说明问题通常已经从“节点入口”转移到系统代理、TUN、DNS或路由层。

节点能连但网页打不开:检查系统代理、TUN和VPN冲突

sing-box的TUN入站可以把系统流量导入虚拟接口;官方文档说明,auto_route用于设置默认路由到TUN,Linux上还可配合auto_redirect改善路由与性能。不同系统和图形客户端对权限、自动路由和VPN叠加的支持不同,不能把一套TUN参数直接复制到所有平台。官方TUN配置

  1. 系统代理模式:确认系统代理已经开启,地址通常应指向本机回环地址,端口必须与 sing-box 的 HTTP 或 mixed 入站端口一致。浏览器若单独设置了代理,需确认没有覆盖系统代理。
  2. TUN模式:确认系统已授予虚拟网卡、VPN或管理员权限;Windows、macOS和Linux需要检查对应系统权限,Android需要确认VPN请求已允许。
  3. 避免多VPN叠加:暂时关闭其他VPN、企业安全客户端、虚拟机网络、容器网络和网络过滤软件,再只启动 sing-box。
  4. 检查自动路由:启用TUN后,如果日志出现路由循环、无法连接本地网关或大量无路由,检查 route.auto_detect_interface、route.default_interface以及TUN的auto_route。
  5. Android特别检查:Android系统通常只能同时运行一个VPN服务。若配置同时启用了TUN并存在其他VPN,检查是否需要使用官方文档中的route.override_android_vpn场景;不要盲目叠加VPN。

验证时打开日志,再访问一个网页。如果日志完全没有对应请求,优先修复系统代理或TUN接管;如果有请求但最终出站失败,继续检查DNS、路由和节点。

DNS失败或只有域名打不开:先检查DNS配置和分流

sing-box的DNS配置包括服务器、规则、默认服务器和解析策略;官方文档列出的策略包括prefer_ipv4、prefer_ipv6、ipv4_only和ipv6_only。DNS配置正确不等于所有域名都能访问,仍需结合路由和出站日志判断。官方DNS配置

  1. 先测试普通域名解析是否成功,再测试目标业务域名;如果所有域名都失败,优先检查DNS服务器可达性和DNS规则。
  2. 检查dns.final是否指向实际存在的DNS服务器标签;如果为空,官方文档说明会使用列表中的第一个服务器。
  3. 检查DNS规则是否把目标域名错误地送往不可用的本地服务器,或把DNS请求误送入block路径。
  4. 如果开启TUN,检查TUN的DNS处理方式。新版文档中,dns_mode可用于控制原生DNS和DNS劫持行为,但字段支持取决于版本,需以当前版本文档为准。
  5. 若怀疑IPv6导致连接异常,可在不改其他参数的前提下,将解析策略临时改为ipv4_only进行对照测试;若恢复,再单独检查IPv6路由与出站支持。

不要为了“先能用”而关闭证书校验、随意删除所有DNS规则或把所有流量改成直连。每次只改一项,并记录修改前后的日志结果。

route规则误分流:检查Direct、Block和Proxy的最终去向

sing-box会按照路由规则匹配域名、IP、端口、网络类型等条件,并通过默认出站或规则动作决定流量去向。官方路由文档说明,route.final用于指定默认出站;为空时会使用第一个出站,因此出站顺序变化也可能改变结果。官方路由配置

  1. 确认route.final指向存在且可用的代理出站,不要依赖“第一个出站”这种隐式行为。
  2. 检查目标域名是否先命中direct、block或错误的规则集;规则顺序、域名后缀和IP规则都可能影响最终结果。
  3. 如果使用远程规则集,先暂时移除或停用规则集做最小化测试,排除规则文件下载失败、格式错误或规则匹配过宽。
  4. 对同一域名分别测试系统代理、TUN和最小化配置,确认是接管问题还是分流问题。

如果请求日志显示命中了block,修正规则;如果命中了direct但业务要求走代理,修正规则或默认出站;如果命中了proxy但出站超时,回到节点、端口和服务端排查。

按系统执行最短操作路径

系统先检查的入口常见冲突验证重点
Windows客户端服务状态、系统代理、TUN管理员权限系统代理未开启、其他VPN或安全软件接管浏览器请求是否出现在日志;TUN开启后是否出现路由循环
macOS系统代理、网络扩展或VPN权限、默认网卡网络扩展未允许、多个代理软件同时运行、IPv6路径异常确认请求进入 sing-box,再分别测试IPv4与IPv6
AndroidVPN权限、分应用代理、其他VPN状态系统只允许一个VPN、应用被排除、TUN与上游VPN叠加确认目标应用未被排除,并查看DNS与应用请求日志
Linuxroot或网络权限、路由表、nftables、TUN接口Docker桥接网络、已有策略路由、防火墙规则检查TUN接口、路由表和防火墙规则是否出现冲突

各平台菜单名称会随图形客户端版本变化。搜索关键词比照搬固定菜单路径更可靠:system proxy、TUN、VPN permission、route、DNS、log和service。

配置修改后的验证闭环

每次修改都按同一顺序执行,避免“改了很多项但不知道是哪一项生效”:编辑配置—保存—校验—重新载入—查看日志—验证业务。

  1. 编辑配置:只修改一个变量,例如DNS服务器、默认出站、TUN开关或IPv4/IPv6策略。
  2. 保存:确认文件路径、编码和括号完整,保留上一份可回滚副本。
  3. 校验:在配置目录执行 sing-box check;失败时先修复语法和字段版本问题。
  4. 重新载入:完全停止后重新启动,避免旧进程继续占用端口或保留旧路由。
  5. 查看日志:依次确认入站请求、DNS查询、规则命中、出站连接和最终错误。
  6. 验证业务:先访问一个普通网页,再测试目标应用;最后关闭 sing-box,确认系统代理、TUN接口和VPN权限已正常撤销。

如果仍然无法定位,准备以下脱敏信息:操作系统、客户端名称与版本、sing-box版本、配置校验结果、完整错误关键词、是否使用TUN、是否存在其他VPN、Wi-Fi或移动网络测试结果。删除服务器地址中的敏感部分以及所有身份凭据后再提交求助。

常见问题 FAQ

sing-box显示已启动,但浏览器完全打不开怎么办?

先看日志里有没有浏览器请求。没有请求,优先检查系统代理是否开启、代理端口是否与入站端口一致,或TUN/VPN权限是否未生效;有请求但出站超时,再检查节点地址、端口、DNS和路由。

只有部分应用无法联网,浏览器却正常,原因是什么?

常见方向是应用没有使用系统代理、被Android分应用规则排除、应用使用了不同的协议,或该应用依赖UDP而当前出站不支持。先确认日志中是否出现该应用的请求,再检查分应用和UDP相关配置。

DNS lookup failed 一定是节点失效吗?

不一定。它可能来自DNS服务器不可达、DNS规则错误、TUN没有正确接管DNS,或系统的IPv6解析路径异常。先分别测试域名解析和已知IP访问,再对照DNS日志,不要仅凭这一条错误更换节点。

关闭 sing-box 后系统仍然无法上网怎么办?

检查系统代理是否仍开启、TUN虚拟接口是否残留、VPN权限是否仍占用,以及Linux路由表或防火墙是否留下规则。重新启动系统网络连接或客户端服务前,先记录当前代理、接口和路由状态,便于撤销变更。

配置能通过 check,为什么还是连接不上?

check主要用于发现配置结构或字段问题,不能证明目标服务器端口可达、认证信息正确或线路可用。通过校验后仍需看出站连接日志,并检查服务端监听、防火墙、云安全组和网络路径。

参考资料与使用边界

本文只引用 sing-box公开技术文档中的配置、日志、DNS、路由和TUN说明;不同图形客户端可能对字段支持、权限和菜单做了封装,具体行为以当前客户端与版本文档为准。

常见问题

sing-box显示已启动,但浏览器完全打不开怎么办?

先看日志里有没有浏览器请求。没有请求,检查系统代理、入站端口和TUN/VPN权限;有请求但出站超时,再检查节点地址、端口、DNS和路由。

只有部分应用无法联网,浏览器却正常,原因是什么?

检查应用是否使用系统代理、是否被分应用规则排除,以及应用是否依赖当前出站不支持的UDP或其他协议。先确认日志中是否出现该应用请求。

DNS lookup failed 一定是节点失效吗?

不一定,也可能是DNS服务器不可达、DNS规则错误、TUN未正确接管DNS或IPv6解析异常。应先分别测试域名解析和IP访问。

关闭sing-box后系统仍然无法上网怎么办?

检查系统代理、TUN接口、VPN权限、Linux路由表和防火墙是否残留。记录状态后撤销变更或重启网络连接。

配置能通过check,为什么还是连接不上?

配置校验只能发现结构或字段问题,不能证明远端端口可达、认证信息正确或服务端正在监听。仍需查看出站日志并检查服务端入口。

相关阅读

参考资料

  1. sing-box 配置总览
  2. sing-box 日志配置
  3. sing-box TUN 入站配置
  4. sing-box DNS 配置
  5. sing-box 路由配置