Skip to content

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. 在线实测步骤: ​

  1. 开启 Shadowrocket 连接;
  2. 使用 Safari 打开国际公认的权威 DNS 泄漏检测站:
    👉 https://www.dnsleaktest.com
    (备用检测站:https://browserleaks.com/ip);
  3. 点击页面中央的 “Standard Test”(标准测试);
  4. 等待 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 依然卡在手机内核缓存中。

最彻底的强制刷新技巧:

  1. 从 iPhone 屏幕右上角向下滑动调出 控制中心;
  2. 点击开启 “飞行模式”(小飞机图标变黄);
  3. 保持飞行模式静置等待 10 秒钟(这会强制让 iOS 内核清空当前所有网络套接字与 DNS 内存缓存池);
  4. 再次点击关闭飞行模式,恢复网络;
  5. 重新进入 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 默认设置 ​

如果被繁杂的设置搞乱了头绪,恢复出厂默认值是最稳妥的退路:

  1. 打开 Shadowrocket,进入底部 “设置” -> “DNS”;
  2. 清空列表中所有手动添加的自定义条目;
  3. 仅保留最标准的公共服务器:
    223.5.5.5
    119.29.29.29
    https://cloudflare-dns.com/dns-query
  4. 返回首页,断开主开关并重新开启连接。

技巧四:排查代理共享与局域网 DNS 冲突 ​

如果你在小火箭中开启了 “代理共享”(Proxy Sharing):

  • 请确保局域网内的其他设备(如电脑或电视盒子)将 DNS 设置为小火箭 iPhone 所在的局域网 IP(如 192.168.1.5)或公共 DNS;
  • 避免在其他设备上手动指定已经失效的内网网关 DNS。

四、总结与后续排查指引 ​

绝大多数 DNS 异常都可以通过 “重置公共 DNS -> 开启飞行模式 10 秒清空系统缓存 -> 规则补全 no-resolve” 三部曲解决。

如果排查完 DNS 后依然无法上网,说明问题可能出在节点本身超时或客户端连接机制上。请继续阅读: