Skip to content

sing-box 1.13.x: 缺少 default_domain_resolver、全局 sniff 和 hijack-dns 导致分流功能失效 #1297

@lucha0404

Description

@lucha0404

问题描述

使用最新脚本 v3.5.11 在 sing-box 1.13.x 环境下,配置分流工具(DNS 分流、WARP 分流、域名黑名单)后,分流规则无法实际生效,且在某些情况下 sing-box 无法启动。

环境

  • 脚本版本:v3.5.11
  • sing-box 版本:v1.13.5(通过脚本 core 管理升级)
  • 系统:Ubuntu 22.04

具体问题

1. 缺少 default_domain_resolver(严重)

sing-box 1.13.x 将 missing default_domain_resolver 从 WARN 升级为 FATAL。脚本生成的配置中没有此字段,导致:

  • v1.12.x:仅显示警告,可以运行
  • v1.13.x:直接启动失败

报错信息:

ERROR missing `route.default_domain_resolver` or `domain_resolver` in dial fields is deprecated in sing-box 1.12.0 and will be removed in sing-box 1.14.0
FATAL to continuing using this feature, set environment variable ENABLE_DEPRECATED_MISSING_DOMAIN_RESOLVER=true

2. 缺少全局 sniff 路由规则

脚本的 setSniffRouting() 函数只在配置 Socks5 分流时被调用,普通安装不会生成全局 sniff 规则。

没有 sniff,sing-box 无法从连接中识别出目标域名,导致所有基于域名的分流规则(DNS 分流、WARP 分流、域名黑名单的 geosite-cn 等)全部无法匹配,形同虚设。

3. 缺少 hijack-dns 路由规则

没有 { "protocol": "dns", "action": "hijack-dns" },客户端的 DNS 查询不会被 sing-box 的 DNS 模块拦截处理,dns.json 中配置的 DNS 分流规则(如 Netflix/OpenAI 走指定 DNS)不会生效。

复现步骤

  1. 全新安装,选择 sing-box 核心
  2. 通过 core 管理升级 sing-box 到 v1.13.5
  3. 配置任意分流功能(如 DNS 分流、WARP 分流、域名黑名单)
  4. sing-box 启动失败(缺少 default_domain_resolver),或启动成功但分流规则不生效(缺少 sniff 和 hijack-dns)

建议修复

在脚本安装/配置流程中自动生成一个基础路由配置文件(如 00_base_route.json),包含:

{
    "route": {
        "default_domain_resolver": "local",
        "rules": [
            { "action": "sniff" },
            { "protocol": "dns", "action": "hijack-dns" }
        ],
        "final": "direct-out"
    }
}

其中 "local" 对应 dns.json 中已有的 { "type": "local", "tag": "local" } DNS 服务器。

感谢作者持续维护此项目!

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions