sing-box DNS 设置后无法连接怎么办?
简答:sing-box DNS 设置后无法连接,先不要继续更换节点或反复改字段:先备份配置,确认核心版本,再执行配置检查。随后按“能否启动→域名能否解析→节点能否握手→TUN 是否接管流量”的顺序排查。若只在 TUN 模式下断网,优先检查 auto_route、strict_route、系统 VPN 冲突和 IPv4/IPv6;若日志出现 lookup timeout 或 no such host,则先回滚 DNS 规则或使用最小 DNS 配置验证。
定义:sing-box DNS 设置后无法连接,是指修改 dns.servers、rules、final、strategy 或 TUN DNS 接管项后,核心无法启动、域名解析失败、节点握手超时或系统流量无法访问。
先试这一步:备份配置并判断故障层级
本文是第三方使用指南,不代表 sing-box 或任何客户端项目的官方页面。适用范围是使用 sing-box 核心或图形客户端、修改 DNS 后出现连接问题的 Windows、macOS、Linux、Android 和 Apple 设备;不覆盖节点服务状态、订阅服务质量或某个未核实品牌的官方支持。
先复制原始 JSON 配置,保留一份“修改前”文件。然后只做一次启动测试,不要同时更换节点、TUN、DNS 和路由。sing-box 官方配置说明使用 JSON,并提供 sing-box check 检查入口;当前参数形式可能随客户端封装不同,命令行使用时应先执行当前版本的帮助命令核对参数。可参考官方配置引言。
| 现象 | 优先判断 | 第一步处理 |
|---|---|---|
| 核心直接退出或配置无法保存 | 字段、类型或版本不兼容 | 回滚最近改动,执行配置检查,查看错误行 |
| 核心运行但域名打不开 | DNS server、final、rules 或上游不可达 | 暂时减少 DNS 规则,只保留一个已知可用上游 |
| 域名能解析但节点超时 | 节点地址、端口、TLS、SNI 或出站路径 | 用 IP 与域名分别测试,核对订阅转换结果 |
| 普通代理能用,TUN 开启后全断 | TUN 路由、DNS 接管、系统 VPN 或权限冲突 | 先关闭 TUN,仅验证普通代理,再逐项恢复 |
最短排查流程:从 DNS 配置回滚到连接验证
- 确认核心版本。先查看 sing-box 核心版本,再对照当前官方 DNS 文档。官方文档显示,
final用于指定默认 DNS server tag,未设置时使用第一个 server;strategy可使用prefer_ipv4、prefer_ipv6、ipv4_only或ipv6_only。不要把旧版本字段直接复制到新配置中。参考官方 DNS 配置文档。 - 只保留最小 DNS 结构做回滚测试。先将复杂的 DNS rules、FakeIP、地址过滤和自定义缓存选项移到备份文件,只保留一个 server、一个 final 和一种 strategy。下面片段只用于核对字段层级,不是完整可运行配置:
{"dns":{"servers":[{"type":"local","tag":"local"}],"final":"local","strategy":"prefer_ipv4"}}。若这样能启动,再一次只恢复一个规则。 - 先验证普通代理,再验证 TUN。关闭 TUN 或系统 VPN,使用客户端提供的普通代理模式访问一个已知可访问的域名。普通代理可用而 TUN 不可用,问题更可能在路由接管、权限或系统网络冲突,而不是单纯 DNS。
- 分别测试域名解析和节点连接。Windows 可用
nslookup example.com,macOS/Linux 可用dig example.com;这些命令只能说明系统 DNS 的结果,不能证明 sing-box 内部 DNS 一定正常。随后用客户端日志观察节点域名解析、TCP 连接和 TLS 握手是否分别成功。 - 检查 DNS 上游是否形成回环。如果 DNS server 配置了 detour、代理出站或域名形式的上游地址,要确认该上游本身可以通过当前路径解析和连接。若节点域名依赖某个 DNS,而该 DNS 又必须经过同一个尚未建立的节点,就可能出现循环等待;排查时可暂时改为直连可达的 DNS 路径,验证后再恢复复杂规则。
- 测试 IPv4/IPv6 差异。如果日志显示域名有解析结果,但连接仍然超时,可临时把全局
strategy改为ipv4_only或prefer_ipv4做对照。若 IPv4 可用、IPv6 不通,再检查网络是否实际具备 IPv6 出口;测试结束后恢复原策略,避免把临时规避方案当成永久结论。
每次只改一个变量,并记录“改了什么、日志变成什么、是否恢复”。sing-box 官方文档还提示,DNS 查询默认超时在相关版本中为 10s,规则或域名解析器可以覆盖该值;因此看到等待时间较长时,应同时检查规则级 timeout,而不是只更换上游。
版本字段与 TUN 分支:哪些设置容易造成误判
1.14 及以后:先检查弃用字段
官方 DNS 文档显示,independent_cache 在 sing-box 1.14.0 已弃用,并计划在 1.16.0 移除;DNS 规则中的部分旧字段也在迁移。官方迁移说明指出,1.14.0 起 ip_version、query_type 与旧式地址过滤字段、旧式 DNS rule strategy 等组合可能导致启动时被拒绝。若配置来自旧订阅转换器,先删除或迁移报错字段,不要用“能保存”判断配置已经兼容。参考官方迁移说明和官方 DNS 规则文档。
2. TUN 开启后全局断网
官方 TUN 文档说明,auto_route 会把默认路由设置到 TUN;strict_route 会进一步影响严格路由和 Windows 的 DNS 泄漏防护,在某些情况下也可能影响 VirtualBox 等应用。排查时先关闭 TUN 验证普通代理,再检查是否有其他 VPN、虚拟网卡、企业安全软件或系统代理同时接管流量。Linux 环境还要核对 auto_redirect、内核能力和现有防火墙规则;不要仅凭能看到 TUN 网卡就认定流量已经正确经过 sing-box。
3. Android 与 Apple 平台差异
Android 和 Apple 图形客户端使用系统 VPN 或 Network Extension 接管流量,部分 TUN 字段并不完全等同于 Linux、Windows、macOS 命令行环境。官方平台特性页面明确列出部分字段的可用性差异,例如 Android 和 Apple 图形客户端对 strict_route 的支持有限或未实现。遇到手机端“开关显示运行但应用打不开”,先检查系统 VPN 权限、其他 VPN 是否关闭、是否启用了按应用路由,再回到 DNS 日志,而不是直接套用桌面端 TUN 配置。可对照Android 官方特性说明和Apple 官方特性说明。
按日志关键词分流,并安全恢复配置
| 日志关键词或表现 | 更可能的层级 | 处理动作 |
|---|---|---|
unknown field、invalid、启动即退出 | 字段或版本不兼容 | 按当前版本文档迁移,删除最近新增字段后重新检查 |
lookup timeout、context deadline exceeded | DNS 上游或 DNS 路径超时 | 减少 DNS rules,检查上游地址、detour 和网络出口 |
no such host | 域名解析失败 | 核对域名拼写、DNS final、规则顺序和节点服务器域名 |
connection refused | 目标端口拒绝连接 | 核对节点端口和传输参数,不能仅凭 DNS 正常判定节点可用 |
TLS handshake 或证书相关错误 | TLS、SNI、时间或传输参数 | 检查系统时间、服务器地址、SNI、证书与订阅转换结果 |
| 普通代理可用,TUN 全断 | TUN 路由或系统冲突 | 关闭其他 VPN,检查 auto_route、strict_route、权限和虚拟网卡 |
恢复时按“最小 DNS 配置→单个规则→IPv4/IPv6 策略→TUN DNS 接管→完整规则”的顺序逐项加入。若某一步重新出现故障,就回到上一个可用版本。不要把完整订阅链接、令牌、节点密码、服务器地址或未脱敏日志公开;分享日志前应删除这些信息。
本文按 2026-10-30 可核验的 sing-box 官方文档整理。由于不同图形客户端可能封装了核心命令和配置入口,菜单名称、核心版本和权限选项仍应以当前客户端页面及官方文档为准。
常见问题
sing-box DNS 设置后完全打不开网页,应该先换 DNS 还是换节点?
先不要换节点。先关闭 TUN 或系统 VPN,用最小 DNS 配置验证核心能否启动和域名能否解析。若 DNS 日志仍然超时,再检查上游路径;如果 DNS 正常但节点握手失败,才进入节点地址、端口、TLS 和传输参数排查。
sing-box 配置里的 final 和 strategy 分别有什么作用?
final 用于指定默认 DNS server tag,未设置时使用第一个 server;strategy 用于设置默认域名解析策略,可选 prefer_ipv4、prefer_ipv6、ipv4_only 和 ipv6_only。修改前应确认当前核心版本支持这些字段,并避免与旧版规则字段混用。
为什么普通代理能用,但打开 TUN 后 sing-box 就无法连接?
这通常需要从 TUN 路由和系统冲突方向排查,不应直接归因于 DNS。依次关闭其他 VPN 和虚拟网卡,确认 TUN 权限,再检查 auto_route、strict_route、DNS 接管方式以及 Windows、Linux 或手机平台的字段支持差异。
sing-box 1.14 或更高版本出现 DNS 字段报错怎么办?
先查看核心版本,再对照官方迁移文档。重点检查 independent_cache、旧式 DNS rule strategy、旧地址过滤字段,以及 ip_version 或 query_type 与旧字段的组合;不要把旧配置整段复制到新版本。
分享 sing-box 日志给别人排查安全吗?
不要直接公开原始日志或配置。应删除订阅令牌、节点密码、完整服务器地址、私有域名、用户标识和可识别的网络信息,只保留错误关键词、时间顺序和已脱敏的字段结构。