Skip to content

Sing-box 防止 DNS 泄露全攻略:DNS 泄漏测试与分层解析配置

毛佳国

很多朋友使用代理工具后发现,即使全局翻墙,某些国内外网站仍然打不开、跳体验差的区域限制,或者使用泄漏测试网站时(如 ipleak.net),发现还是能看见自己本地运营商的 DNS 服务器 IP。这种情况不仅会拖慢速度,还有严重的隐私隐患,被称为**“DNS 泄露 (DNS Leak)”**。

在其他客户端里,DNS 设置是一项黑魔法,常常折腾很久也没用。而在 Sing-box 里,它可以通过严谨的逻辑控制 dns 模块轻松达到最科学的解析方案。

Table of contents

Open Table of contents

什么是 DNS 泄漏?为什么发生?

当你的浏览器想要访问 www.google.com 时,电脑必须先知道它的 IP 地址(这需要问 DNS 服务器)。 如果你的系统或代理工具配置不当,这个查询请求(DNS Query)会通过你的本地运营商网络发给国内的 DNS(比如 114.114.114.114)。 结果有三个可能:

  1. 被投毒污染: 返回一个错误的假 IP,导致网页打不开。
  2. CDN 错位: 返回了距离节点极其遥远的内容服务器 IP,导致网速很慢。
  3. 隐私暴露: 本地运营商知道了你正在试图请求某些网站。

在 Sing-box 避免泄露的终极策略

想要完美分配 DNS 且不泄漏,我们的目标很明确:

1. 基础防泄漏方案 (远程 DNS 查询)

在你的 JSON 中,单独配一个 dns 字段:

"dns": {
  "servers": [
    {
      "tag": "google-dns",
      "address": "tls://8.8.8.8",
      "detour": "proxy" // 强制让 DNS 查询顺着代理隧道发出去!
    },
    {
      "tag": "local-dns",
      "address": "223.5.5.5",
      "detour": "direct" // 国内的由直连发出
    }
  ],
  "rules": [
    {
      "geosite": "cn",
      "server": "local-dns"
    },
    {
      "domain_suffix": ["google.com", "youtube.com"],
      "server": "google-dns" // 将其指定到需要翻墙的DNS服务器
    }
  ]
}

这里面最重要的一句是 "detour": "proxy"。这个配置告诉核心:针对 google-dns 发送查询数据包时,不要直接从我的网卡走,必须从名为 “proxy” 的那个出站(节点)加密出去,去问海外真正的 DNS。

2. FakeIP:终极大招,速度与防泄露兼顾

传统的方法下,即便是送出国查询,你的手机也要先干等这个 IP 解析结果传回来,才能建立实际连接。这多费了半个来回的延迟! FakeIP (伪造IP) 的思路是:当系统问这个域名的 IP 是什么时,Sing-box 直接秒骗系统:“哦,它的 IP 叫 198.18.0.x”。然后系统对着这个假 IP 建立连接时,Sing-box 直接用代理通道向外把整个发往原域名的请求包转发走(不提前在本地域名解析真实 IP)。

如何在 Sing-box 配置 FakeIP?

  1. 开启入站的 Tun:并且设置为允许嗅探。
{
  "type": "tun",
  "interface_name": "tun0",
  "inet4_address": "172.19.0.1/30",
  ...
  "sniff": true,
  "sniff_override_destination": true
}
  1. 配置 DNS 服务器引入 FakeIP 模块:
"dns": {
  "servers": [
    {
      "tag": "fakeip-dns",
      "address": "fakeip"
    },
    {
      ...你的其他真实DNS
    }
  ],
  "rules": [
    {
      "query_type": ["A", "AAAA"],
      "server": "fakeip-dns"
    }
  ],
  "fakeip": {
    "enabled": true,
    "inet4_range": "198.18.0.0/15"
  }
}

这段规则告诉工具,当设备问任何域名的 IPv4 地址时,直接丢一个在 198.18.0.0 里的虚假 IP 给它!所有关于真实解析的时效都被节省下来,交给了代理远端节点去做。

结语

使用 FakeIP 后,再去 ipleak.net 测试,你会发现这辈子的网络如此洁净,连一丝本地 ISP 运营商的痕迹都找不到!你已经成为一个真正懂底层规则的极客玩家。

上一篇
最新协议尝鲜:在 Sing-box 中配置 Hysteria2 或者 TUIC V5 协议的详细步骤
下一篇
如何在 OpenWrt 路由器上部署 Sing-box 旁路由?全屋科学上网指南