主题切换
Shadowrocket DNS 错误排查:解析失败、网页打不开与 DNS 泄漏急救全攻略
独立第三方声明
本站为独立第三方技术评测与故障排查知识库,与 Shadowrocket 官方开发者及任何网络服务商无利益关联。教程中提及的检测工具均为互联网公认的网络安全测评站点,请合规使用网络工具。
很多用户在使用 Shadowrocket(小火箭) 时,常常会遭遇令人抓狂的“伪连断网”状态:
- 首页主开关显示“已连接”,节点延迟测速全是健康的几十毫秒绿色数字;
- 但在浏览器打开任何海外网页,却立刻报错 “DNS_PROBE_FINISHED_BAD_CONFIG” 或 “无法找到该服务器的 IP 地址”;
- 或者相反,外网能够正常访问,但国内的微信却发不出消息、朋友圈图片一直转圈。
这些问题绝大多数并非由于节点服务器宕机,而是出在 DNS 缓存死锁、解析超时或 DNS 规则冲突。
本文将为您提供一份高效率的 DNS 故障诊断与自愈指南,手把手教你完成 DNS 泄漏检测并彻底根治解析异常。
一、一分钟自测:如何检测我的网络是否存在“DNS 泄漏”?
1. DNS 泄漏的危害
在正常情况下,当你开启代理访问境外网站时,所有的 DNS 解析应该在境外受保护的节点端或加密 DoH 通道内完成。
但如果配置有误,你的手机会继续使用中国大陆本地运营商(中国电信/联通/移动)的本地 DNS 去查询境外网站域名,导致你的全量浏览历史被本地运营商日志完整记录。
[正常无泄漏状态] ──► 查询直接经由境外节点 ──► 外部探测仅能看到境外机房 DNS (如 Cloudflare / Google)
[发生 DNS 泄漏] ──► 查询走漏给本地运营商 ──► 外部探测看到你真实的中国某省某市宽带 ISP 节点!2. 在线实测步骤:
- 开启 Shadowrocket 连接;
- 使用 Safari 打开国际公认的权威 DNS 泄漏检测站:
👉 https://www.dnsleaktest.com
(备用检测站:https://browserleaks.com/ip); - 点击页面中央的 “Standard Test”(标准测试);
- 等待 5 秒钟,观察测试结果列表中出现的服务器列表:
- 安全无泄漏(合格):列表中只显示
Cloudflare、Google、Quad9或你当前落地节点所在国家(如美国、日本、香港)的服务器 IP,没有任何带有China Telecom、China Unicom或中国省份字样的条目; - 发生严重泄漏(需修复):列表中赫然出现了你本地宽带运营商的中文名字与真实所在地 IP!
- 安全无泄漏(合格):列表中只显示
二、四大高频 DNS 错误代码与一键修复方案
| 报错现象 / 提示代码 | 核心根因分析 | 对应最佳修复方案 |
|---|---|---|
DNS_PROBE_FINISHED_NXDOMAIN | 本地 DNS 遭受污染,或自定义了已失效的第三方 DNS | 将小火箭 DNS 重置为 223.5.5.5, 119.29.29.29 |
DNS_PROBE_FINISHED_BAD_CONFIG | 配置文件的 [General] 中缺少有效的 DNS 服务器声明 | 检查并重新补充 dns-server 默认行 |
| 节点连通但国外所有网页均无法打开 | 规则中对境外域名强制进行了本地解析,未加 no-resolve | 在所有 IP 规则末尾补上 ,no-resolve 修饰符 |
| 微信发图卡顿、淘宝白屏、外卖无法定位 | 国内 DNS 误配为纯海外服务器,导致国内 CDN 漂移 | 确保第一主 DNS 为国内阿里或腾讯 DNS |
三、四大核心排错与急救技巧
技巧一:iOS 极速刷新 DNS 缓存(10秒断网自愈法)
iOS 系统对于 DNS 解析结果有着极长的时间缓存机制。哪怕你刚刚在小火箭里修复了 DNS,旧的错误 IP 依然卡在手机内核缓存中。
最彻底的强制刷新技巧:
- 从 iPhone 屏幕右上角向下滑动调出 控制中心;
- 点击开启 “飞行模式”(小飞机图标变黄);
- 保持飞行模式静置等待 10 秒钟(这会强制让 iOS 内核清空当前所有网络套接字与 DNS 内存缓存池);
- 再次点击关闭飞行模式,恢复网络;
- 重新进入 Safari 刷新刚才打不开的网页,即可满血复活!
调出控制中心 -> 开启飞行模式 -> 保持 10 秒钟 (清空 DNS 缓存) -> 关闭飞行模式 -> 网页秒开!技巧二:检查并补充规则参数 ,no-resolve
如果你的配置文件中存在以下规则:
ini
# 错误写法:未带 no-resolve
IP-CIDR,172.16.0.0/12,DIRECT
GEOIP,CN,DIRECT当访问 youtube.com 时,小火箭为了判断 YouTube 属于哪个 IP,被迫在本地发起一次明文 DNS 查询。这不仅拖慢速度,还会立刻触发防火墙的伪造抢答投毒。
修复写法:
ini
# 正确写法:强制禁止提前反查 DNS
IP-CIDR,172.16.0.0/12,DIRECT,no-resolve
GEOIP,CN,DIRECT,no-resolve技巧三:一键重置小火箭 DNS 默认设置
如果被繁杂的设置搞乱了头绪,恢复出厂默认值是最稳妥的退路:
- 打开 Shadowrocket,进入底部 “设置” -> “DNS”;
- 清空列表中所有手动添加的自定义条目;
- 仅保留最标准的公共服务器:
223.5.5.5 119.29.29.29 https://cloudflare-dns.com/dns-query - 返回首页,断开主开关并重新开启连接。
技巧四:排查代理共享与局域网 DNS 冲突
如果你在小火箭中开启了 “代理共享”(Proxy Sharing):
- 请确保局域网内的其他设备(如电脑或电视盒子)将 DNS 设置为小火箭 iPhone 所在的局域网 IP(如
192.168.1.5)或公共 DNS; - 避免在其他设备上手动指定已经失效的内网网关 DNS。
四、总结与后续排查指引
绝大多数 DNS 异常都可以通过 “重置公共 DNS -> 开启飞行模式 10 秒清空系统缓存 -> 规则补全 no-resolve” 三部曲解决。
如果排查完 DNS 后依然无法上网,说明问题可能出在节点本身超时或客户端连接机制上。请继续阅读:
