本地 DNS(用于国内直连域名)

导读:

  1. 基础设置(推荐新手)
  2. 高级配置(配置文件编辑)
  3. 关键防污染策略
  4. 验证 DNS 是否被污染
  5. 常见问题解决
  6. 推荐配置模板

在 Shadowrocket(小火箭)中防止 DNS 污染的核心思路是:使用 DNS over HTTPS (DoH) 或确保 DNS 查询走代理隧道,以下是详细设置方案:

基础设置(推荐新手)

配置 DNS over HTTPS (DoH)

进入 配置 → 点击当前使用的配置文件 → 编辑配置DNS

DNS 服务器: 223.5.5.5, 119.29.29.29
DoH 服务器: https://dns.google/dns-query 或 https://cloudflare-dns.com/dns-query

推荐组合

  • 国内 DNS: 5.5.5 (阿里) 或 29.29.29 (DNSPod) - 保证国内网站速度
  • DoH 服务器: https://dns.google/dns-query - 防污染,通过 HTTPS 加密查询

开启加密 DNS 选项

在 DNS 设置页面:

  • 启用 DNS over HTTPS
  • 启用分片 DNS 查询(如果可用)
  • 禁用 IPv6(除非你的节点支持 IPv6,否则建议关闭避免泄漏)

高级配置(配置文件编辑)

点击配置文件 → 编辑纯文本,在 [General] 段落添加:

[General]dns-server = 223.5.5.5, 119.29.29.29, system
# DoH 服务器(用于被污染域名,自动走代理)
doh-server = https://dns.google/dns-query, https://cloudflare-dns.com/dns-query
# 备用 DNS(当 DoH 失败时)
fallback-dns = 1.1.1.1, 8.8.8.8
# 确保远程解析(关键防污染设置)
dns-fallback-policy = proxy-only
# 或根据规则智能选择
# dns-fallback-policy = direct-first

关键防污染策略

方案 A:远程 DNS 解析(最保险)

[Proxy][Rule] 中确保:

  • 被污染域名(如 Google、Twitter 等)走 代理节点
  • Shadowrocket 默认会对代理域名使用 远程 DNS 解析(即通过节点查询 DNS)

验证方法

  • 开启 日志记录(设置 → 日志)
  • 访问 www.google.com,查看日志中 DNS 解析是否显示为代理服务器的 IP 段

方案 B:分流 DNS 设置(平衡速度与隐私)

如果你使用规则模式,建议:

[Host]
# 强制指定某些域名使用特定 DNS
*.google.com = server:https://dns.google/dns-query
*.youtube.com = server:https://dns.google/dns-query
*.twitter.com = server:https://cloudflare-dns.com/dns-query
# 国内域名使用本地 DNS
*.baidu.com = server:223.5.5.5
*.taobao.com = server:system

验证 DNS 是否被污染

设置完成后,进行测试:

  1. 浏览器访问https://www.dnsleaktest.com/

    • 应显示你代理节点所在国家的 DNS 服务器(如 Google LLC、Cloudflare 等)
    • 不应显示本地 ISP 的 DNS(如 China Telecom)
  2. 命令行测试(在 Shadowrocket 开启代理的 WiFi 环境下):

    nslookup google.com
    # 应返回 142.250.x.x 等 Google 真实 IP,而非 127.0.0.1 或 0.0.0.0

常见问题解决

问题 解决方案
国内网站变慢 在 DNS 设置中添加 5.5.5 作为首个 DNS,并确保 DoH 仅用于代理域名
DoH 连接失败 检查节点是否支持 TLS 1.3,或更换为 https://1.1.1.1/dns-query
部分 App 无法联网 关闭 IPv6 或添加 dns-direct-fallback = true
DNS 泄漏 确保 全局路由 不是「直连」模式,且代理规则包含 GEOIP,CN,DIRECT

推荐配置模板

[General]
bypass-system = true
skip-proxy = 192.168.0.0/16, 10.0.0.0/8, 172.16.0.0/12, localhost, *.local
dns-server = 223.5.5.5, 119.29.29.29
doh-server = https://dns.google/dns-query
fallback-dns = 1.1.1.1, 8.8.8.8
dns-fallback-policy = proxy-only
ipv6 = false
[Rule]
# 确保最终规则是 GEOIP,CN,DIRECT 或 FINAL,PROXY
GEOIP,CN,DIRECT
FINAL,PROXY

提示:如果主要目的是翻墙,最简单的方法是保持默认设置并确保「全局路由」设置为「代理」或「自动分流」,Shadowrocket 会自动将敏感域名的 DNS 查询通过代理隧道发送,从而避免本地 DNS 污染。

您可以还会对下面的文章感兴趣: