sing-box旧版DNS策略迁移与新版配置解析

0 次阅读

#writing document 00001
sing-box旧版DNS策略迁移与新版配置解析

随着 sing-box 不断迭代更新,DNS 模块的配置方式也经历了较大调整。早期版本中常见的 DNS 配置结构与新版存在明显差异,许多用户在升级后会遇到 DNS 规则失效、解析异常、分流策略不生效等问题。因此,理解 sing-box 旧版 DNS 策略的变化,并掌握新版配置方式,对于稳定运行代理环境具有重要意义。

sing-box DNS配置演进概述

sing-box 的 DNS 系统设计目标是实现灵活的域名解析控制,通过不同 DNS 服务器、规则匹配以及路由策略,实现国内外域名分流解析。

旧版本配置通常围绕 dns.serversdns.rules 展开,通过简单规则指定不同域名使用不同 DNS。例如:

JSON
{
  "dns": {
    "servers": [
      {
        "tag": "dns-local",
        "address": "223.5.5.5"
      },
      {
        "tag": "dns-remote",
        "address": "https://dns.google/dns-query"
      }
    ],
    "rules": [
      {
        "geosite": "cn",
        "server": "dns-local"
      }
    ]
  }
}

这种方式虽然直观,但随着功能增加,配置容易变得复杂。当需要处理 FakeIP、DNS 劫持、防污染、分流解析等场景时,旧结构逐渐暴露出维护困难的问题。

新版 sing-box 对 DNS 配置进行了重新设计,引入更加统一的规则匹配机制,使 DNS 与路由系统之间的关联更加紧密。

旧版DNS策略存在的问题

在迁移之前,需要了解旧版配置为什么需要调整。

1. DNS规则结构变化

旧版 DNS 规则通常直接绑定服务器:

JSON
{
  "domain_suffix": [
    "google.com"
  ],
  "server": "dns-remote"
}

新版更倾向于通过规则集和路由逻辑统一管理,例如结合:

  • domain

  • domain_suffix

  • domain_keyword

  • rule_set

  • geosite

  • geoip

等条件进行匹配。

这种方式减少了 DNS 与路由配置之间的重复定义。

2. DNS服务器定义方式调整

旧版常见写法:

JSON
{
  "tag": "dns1",
  "address": "8.8.8.8"
}

新版推荐明确指定解析策略,例如:

JSON
{
  "tag": "google",
  "address": "https://dns.google/dns-query",
  "detour": "proxy"
}

其中:

  • tag 用于规则引用;

  • address 指定 DNS 服务地址;

  • detour 控制 DNS 请求走直连还是代理。

这让 DNS 查询本身也可以参与网络分流。

新版sing-box DNS核心配置解析

新版 DNS 配置主要由以下几个部分组成:

  • servers

  • rules

  • final

  • strategy

servers:定义DNS服务器

示例:

JSON
"dns": {
  "servers": [
    {
      "tag": "local",
      "address": "223.5.5.5"
    },
    {
      "tag": "remote",
      "address": "https://cloudflare-dns.com/dns-query",
      "detour": "proxy"
    }
  ]
}

其中:

本地 DNS:

223.5.5.5

适合国内域名解析。

DoH DNS:

https://cloudflare-dns.com/dns-query

适合代理环境下访问海外服务。

通过多个 DNS 服务器组合,可以实现更精准的解析策略。

strategy:控制解析地址类型

新版支持通过 strategy 控制 IP 查询类型。

常见配置:

JSON
{
  "strategy": "prefer_ipv4"
}

主要模式:

prefer_ipv4

优先返回 IPv4 地址。

适用于:

  • IPv6 网络不稳定;

  • 某些代理节点不支持 IPv6。

prefer_ipv6

优先 IPv6。

适用于:

  • IPv6 网络环境;

  • 访问 IPv6 优化服务。

ipv4_only

仅查询 IPv4。

ipv6_only

仅查询 IPv6。

合理设置 strategy 可以减少连接失败概率。

DNS规则迁移方法

旧版规则迁移到新版时,需要重新整理匹配逻辑。

例如旧版:

JSON
{
  "domain_suffix": [
    "google.com"
  ],
  "server": "remote"
}

新版可以调整为:

JSON
{
  "domain_suffix": [
    "google.com"
  ],
  "server": "remote"
}

虽然结构类似,但新版更加推荐配合规则集:

JSON
{
  "rule_set": [
    "geosite-google"
  ],
  "server": "remote"
}

规则集可以集中维护大量域名列表,避免配置文件过于庞大。

final字段的重要作用

新版 DNS 增加了更加明确的默认处理机制。

例如:

JSON
"dns": {
  "final": "local"
}

表示:

如果没有任何 DNS 规则匹配,则默认使用 local DNS。

这样可以避免部分域名没有匹配规则时出现解析失败。

推荐配置:

JSON
{
  "dns": {
    "servers": [
      {
        "tag": "local",
        "address": "223.5.5.5"
      },
      {
        "tag": "proxy",
        "address": "https://1.1.1.1/dns-query",
        "detour": "proxy"
      }
    ],
    "rules": [
      {
        "geosite": "cn",
        "server": "local"
      },
      {
        "geosite": "geolocation-!cn",
        "server": "proxy"
      }
    ],
    "final": "local"
  }
}

该配置实现:

  • 国内域名使用国内 DNS;

  • 海外域名使用代理 DNS;

  • 未匹配域名使用默认 DNS。

FakeIP模式迁移注意事项

部分用户升级 sing-box 后发现 FakeIP 功能异常,通常与 DNS 配置迁移有关。

旧版本可能使用:

JSON
{
  "fakeip": true
}

新版需要根据 DNS 服务器类型和路由规则重新调整。

FakeIP 主要用于:

  • 提高域名分流准确性;

  • 避免提前解析真实 IP;

  • 支持基于域名的代理规则。

使用 FakeIP 时需要注意:

  1. DNS 服务器必须支持 FakeIP 流程;

  2. 路由规则需要匹配 FakeIP 地址池;

  3. 不建议与系统 DNS 混用。

常见迁移错误分析

错误一:升级后DNS完全失效

原因:

  • 新旧字段混用;

  • server tag 不一致;

  • final 未设置。

解决:

检查 DNS server 引用名称是否一致。

例如:

定义:

JSON
{
  "tag": "remote-dns"
}

引用必须:

JSON
"server": "remote-dns"

不能写:

JSON
"server": "remote"

错误二:国内网站解析变慢

原因:

所有请求都发送到海外 DNS。

解决:

增加国内 DNS:

JSON
{
  "tag": "china",
  "address": "223.5.5.5"
}

并增加规则:

JSON
{
  "geosite": "cn",
  "server": "china"
}

错误三:代理网站无法访问

原因:

海外域名仍使用国内 DNS。

解决:

将海外域名交给代理 DNS:

JSON
{
  "geosite": "geolocation-!cn",
  "server": "remote"
}

sing-box新版DNS最佳实践

为了保证长期稳定运行,建议采用以下设计方式:

1. DNS服务器分类管理

不要只配置一个 DNS。

推荐:

  • 国内 DNS;

  • 海外 DNS;

  • 备用 DNS。


2. DNS请求独立分流

海外 DNS 建议:

JSON
"detour": "proxy"

避免 DNS 请求被污染。


3. 使用规则集降低维护成本

大量域名规则不要直接写入配置文件。

推荐:

JSON
rule_set

统一管理。


4. 配合路由规则使用

DNS 配置不是独立模块。

最佳效果通常来自:

DNS规则 + 路由规则 + 出站策略

三者配合。

总结

sing-box 从旧版 DNS 策略迁移到新版配置体系,本质上是从简单 DNS 分流模式转向更加系统化的规则管理方式。新版通过 servers、rules、final、strategy 等组件,让 DNS 解析拥有更强的控制能力。

迁移过程中,重点需要关注 DNS 服务器标签变化、规则匹配方式调整、FakeIP兼容问题以及默认解析策略设置。合理规划 DNS 分流结构,不仅能够提升访问速度,还能减少解析污染,提高整个代理环境的稳定性。

对于长期使用 sing-box 的用户来说,掌握新版 DNS 配置逻辑,是完成版本升级和优化网络体验的重要步骤。

[sing-box, DNS配置, DNS策略迁移, 网络代理, 分流规则]

文章标签