sing-box Windows 服务开机后秒退:dhcp://auto DNS 排查
真实问题指纹
sing-box 官方仓库 #1242 记录了一个 Windows 11 23H2 个案:通过 WinSW 设置开机服务时,子进程在不到一秒内以 code 1 结束;日志出现 initialize DNS 和 missing default interface。个案使用 dhcp://auto 作为直连 DNS。它描述的是开机时 DNS 接口尚未就绪的排查起点,而不是所有 sing-box 服务故障的统一根因。
若服务可稳定运行后才出现节点超时、TUN 不通或订阅失败,应改走对应运行期故障路径。
诊断范围
本文适用于 Windows 上由服务管理器启动 sing-box、开机阶段立即退出,并且脱敏日志指向 DHCP 自动接口或默认接口发现失败的情形。它不处理账号、订阅地址、线路质量或服务端限制。
操作步骤
- 保存当前配置副本与 WinSW 服务日志,只保留版本、退出码和首个错误文本;不要贴出订阅、节点名称或远程控制地址。
- 在已登录且网络适配器可见后,手动启动同一服务一次。若手动启动正常而开机启动失败,记录这一差异,优先检查网络服务就绪顺序而非同时改 TUN、路由和 DNS。
- 对照 sing-box 当前 DNS 配置文档,确认
dhcp://auto是否仍适合本机接口。仅在保留原配置备份后,测试一个明确的本地 DHCP 接口或组织已批准的 DNS 设置;一次只改 DNS 地址项。 - 复测重启后的服务状态。若仍出现相同错误,回退 DNS 改动并向项目反馈 Windows 版本、sing-box 版本、服务管理方式、退出码与脱敏日志。
可观察的预期结果
应能区分“开机早期接口未就绪”“配置解析失败”与“服务已启动但运行期连接失败”。只有服务可持续运行后,才有必要继续测试订阅、TUN 或节点。
验证与回退
以同一次系统重启为验证动作,确认服务状态不再立即停止,并检查首个错误是否改变。出现新错误时恢复已导出的 DNS 配置;不要为了临时启动而关闭系统安全功能或下载未知服务包装器。
来源与适用边界
本文基于公开 Issue #1242 的 Windows/WinSW、dhcp://auto 与默认接口错误组合整理。该 Issue 已关闭,但不构成对所有版本的保证;请以 sing-box 当前官方配置说明和自己的脱敏日志为准。
来源与更新
本文的实际现象与命令依据下列公开来源整理;示例中的地址和标识符均已脱敏。
排查顺序
- 记录症状确认客户端、系统、错误文本与发生范围。
- 低风险核对先检查本文对应的配置、权限、网络或版本条件。
- 复测与回退只改变一项;现象变化后再决定是否继续。
常见问题
服务启动后退出一定是配置语法错误吗?
不一定。该公开个案中,WinSW 已启动子进程,但 DNS 初始化时未找到默认接口而退出;应先区分启动时机与 JSON 语法错误。
改成公共 DNS 就能证明问题解决吗?
只能说明 DHCP 自动接口发现可能是触发条件,不能替代对本机网络启动顺序和 sing-box 当前版本文档的核对。
确认结果、回退与日志
每次只修改一项并复测原始现象。若出现新错误,恢复导出的配置或关闭刚启用的开关;仍未解决时,请保留客户端与系统版本、错误文本、发生时间、已尝试步骤以及脱敏日志。
不要公开订阅地址、账号或完整连接信息。文中的命令与配置片段仅适用于其标注的客户端和系统;未提供命令时,请以来源中的官方界面或系统文档为准。