导读:
在 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 是否被污染
设置完成后,进行测试:
-
浏览器访问:
https://www.dnsleaktest.com/- 应显示你代理节点所在国家的 DNS 服务器(如 Google LLC、Cloudflare 等)
- 不应显示本地 ISP 的 DNS(如 China Telecom)
-
命令行测试(在 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 污染。