DNS 正常时先保留系统设置;需要固定解析器时再填自定义 DNS,需要加密解析传输时选择 DNS over HTTPS。本文适合已有自己的服务商与配置、正在排查域名打不开或分流结果异常的用户,按填写位置、规则匹配与单变量测试说明如何修改,并保留可恢复的基线。
一、先区分域名解析与连接出站
Shadowrocket(小火箭)的 DNS 设置解决“域名对应什么地址”的问题,Global Routing 与配置规则解决“连接从哪条路径出去”的问题。更换 DNS 不等于切换服务器,也不会自动修复服务器认证失败、端口不可达或线路拥塞。只有先把这两部分分开,才能避免网页打不开时同时改动多个设置。
这条流程表示排查时的逻辑关系,不表示每次连接都必须先在本机完成解析。DOMAIN-SUFFIX 可以直接按域名匹配;IP-CIDR、GEOIP 等基于地址的规则可能需要解析结果。代理连接是否由远端解析,还取决于协议、请求形式与配置,不能看到网页能打开就断定所有 DNS 都走了代理。
端口号是识别协议的线索,不是填写完整配置的替代品。DoH 服务可以使用指定的非默认端口;传统 DNS 的 TCP 回退也不能因平时主要观察到 UDP 就被忽略。防火墙限制、网络认证页和解析器自身故障,都可能影响最终结果。
二、系统 DNS、自定义 DNS 与 DoH 的选择依据
“系统 DNS”与“自定义 DNS”描述解析器从哪里取得,“DNS over HTTPS”描述查询采用什么传输方式。这不是三个完全互斥的概念:手动填写一个 DoH 端点,同样属于自定义解析器。应先判断是否需要改变当前解析结果,再决定是否需要改变传输方式。
| 设置方式 | 适用条件 | 修改前要确认 |
|---|---|---|
| 系统 DNS | 当前网络能正常解析,或需要访问单位、校园、家庭内网域名 | Wi-Fi 或蜂窝网络提供的解析器是否可用 |
| 自定义传统 DNS | 需要固定解析器,且已取得可信的解析器地址 | 该解析器允许当前网络访问,UDP / TCP 53 未被阻断 |
| DNS over HTTPS | 需要通过 HTTPS 传输 DNS 查询,已有可用端点 | 端点完整路径、TLS 证书、域名初始解析与出站路径均正常 |
系统 DNS 通常更容易保留当前网络的内部域名解析能力。公共解析器未必认识单位内部的主机名,把它替换为固定公网解析器后,外部网站可能正常,内部系统却打不开。这是解析范围变化,不应直接判断为 Shadowrocket 的连接故障。
DoH 加密的是设备到所选解析服务之间的 DNS 查询传输,不会让解析服务看不到查询,也不替代网站自身的 HTTPS。它增加了端点连接与 TLS 建立等环节,实际延迟取决于网络、连接复用和缓存,不能承诺一定比传统 DNS 更快。
结论:内网域名异常时先恢复系统 DNS
如果只在更换解析器后出现内部域名失败,先恢复系统 DNS,保持服务器与 Global Routing 不变,再重复访问同一域名;不要同时修改规则和协议。
三、在 Config 中填写 DNS,并保留恢复点
以下以 iPhone / iPad 的配置文件设置为说明对象。先打开 Config,找到当前启用的配置文件,进入其编辑菜单,再检查 General 中的 DNS Server。不同版本的编辑入口与字段排布可能变化,本文同时给出配置键名,便于在文本编辑视图核对。不要把 DNS 端点填进 Home → Add Server 的服务器地址栏。
- 在 Home 记录当前选中的服务器与 Global Routing 姿态,并在 Config 确认当前启用的文件。
- 复制或导出该配置作为恢复点。只在副本里修改 DNS,保留原配置不动;导出内容按敏感资料保存。
- 进入 Config → 当前配置的编辑菜单 → General → DNS Server;若使用文本编辑,查找
[General]下的dns-server。 - 填入已有解析器的地址或完整 DoH 端点,保存后确认副本已启用。需要时断开再连接,使当前会话重新应用设置。
- 用同一个目标域名进行测试,记录是否成功和错误类型;失败时切回原配置,而不是继续叠加修改。
系统 DNS 基线
- 位置
- Config → 配置编辑 → General
- 配置节
- [General]
- 配置键
- dns-server
- 值
- system
以系统解析器作为对照,先确认原网络是否可用。
DoH 填写要素
- 协议
- https://
- 主机名
- 解析服务指定的端点域名
- 路径
- 以服务说明给出的完整路径为准
- 默认端口
- 443
不要仅凭路径习惯猜测端点,也不要用浏览器能否显示网页判断服务有效。
下面两段是互相替换的写法,不是要求在同一配置里重复声明两个 dns-server。第二段使用保留示例域名说明语法,不能直接作为可用服务;实际填写应采用用户已经取得的解析端点,本文不推荐任何解析服务。
# 系统 DNS 基线
[General]
dns-server = system
# DoH 语法示例:示例地址不可直接使用
[General]
dns-server = https://dns.example.com/dns-query
带主机名的 DoH 端点存在初始解析需求:设备需要先获得端点域名的地址,才能建立 HTTPS 连接。不要随意把主机名替换成 IP 地址,这可能导致证书名称校验或服务路由失败。若当前网络连端点域名都无法解析,先恢复可工作的基线,再按服务说明处理初始解析。
四、DNS 与规则分流如何配合
需要验证配置文件中的规则时,在 Home 将 Global Routing 设为 Config。Proxy 与 Direct 是不同的全局路由姿态,不能拿它们的测试结果直接证明某条配置规则生效;Scene 则应先检查实际启用的场景及其对应设置。修改 DNS 前后保持同一姿态,比较才有意义。
[Rule]
DOMAIN-SUFFIX,example.com,PROXY
IP-CIDR,192.168.0.0/16,DIRECT,no-resolve
GEOIP,CN,DIRECT
FINAL,PROXY
DOMAIN-SUFFIX,example.com,PROXY:匹配该域名及其子域名。它按域名判断,不以地址归属作为首要条件;示例域名不表示服务推荐。IP-CIDR,192.168.0.0/16,DIRECT,no-resolve:匹配该私有地址范围;no-resolve表示不为这条规则主动触发域名解析,已知目标地址仍可参与匹配。GEOIP,CN,DIRECT:依据目标 IP 的地理数据库归类,并非按网页语言或域名后缀判断。解析结果变化可能间接改变它的匹配结果。FINAL,PROXY:前面的规则都未匹配时采用的兜底策略。它不能修复解析失败,也不证明 DNS 查询本身走了相同出站。
规则由上向下匹配。上例先处理明确域名,再处理地址范围,最后兜底;不要为了“修 DNS”就把宽泛规则移到最前面,否则可能遮住后面的精确规则。复制示例前应确认现有配置使用的策略名称,避免覆盖原有策略组。
五、用单变量测试定位解析故障
开始测试前,先在 Home 确认已有服务器被选中,再运行 Connectivity Test。它用于建立连接状态的参照,不能代替对全部 DNS 请求的验证。即使测试通过,某个域名仍可能因为解析器返回错误、规则误匹配或网站自身异常而失败。
- 固定条件。选择同一个 Wi-Fi、同一个服务器、同一个域名与同一个 Global Routing 姿态;暂时不要更改协议或更新订阅。
- 先测基线。启用系统 DNS 配置,记录能否打开、是否提示域名解析错误,以及是否只影响个别网站。
- 只换解析器。启用自定义 DNS 或 DoH 配置,重新建立连接并再次访问。首次请求与缓存命中的表现要分开记录。
- 再换网络。保持 DNS 配置不变,从 Wi-Fi 切到蜂窝网络。若只在一张网络失败,检查网络认证、端口限制与端点可达性。
- 回退复核。恢复系统 DNS 再测一次。仅一次成功不足以判断原因,应检查结果能否重复出现。
| 观察现象 | 优先检查 | 下一步操作 |
|---|---|---|
| 系统 DNS 正常,DoH 持续超时 | 端点域名、完整路径、连接出站与网络限制 | 恢复基线,核对端点说明后再单独测试 |
| 外部网站正常,单位内部域名失败 | 是否换成不认识内部域名的解析器 | 在相同网络下恢复系统 DNS 对照 |
| 域名已有解析结果,连接仍超时 | 规则命中、目标端口与服务器连接 | 检查连接记录中的实际策略,不再盲目换 DNS |
| 修改后表现暂时不变 | 应用缓存、现有连接与配置是否启用 | 重建连接并重开目标应用,确认当前配置 |
表中是排查分支,不是本文声称进行过的测速结果。若用命令行工具辅助查询,还要确认工具使用的是哪个解析器;系统外单独执行的一次查询,不能证明 Shadowrocket 内部请求采取了同一路径。也不要把 HTTPS 网站地址直接改成 IP 来比较,证书与虚拟主机差异会干扰结论。
六、常见问题与配置保留原则
填了 DoH 后所有网页都打不开,先改哪里?
先在 Config 切回保留的系统 DNS 配置,重新连接并访问原来的目标。恢复正常后,检查 DoH 端点的协议、域名、路径与端口,不要同时更换服务器。若恢复后仍失败,再回到 Home 检查连接与 Global Routing。
DoH 地址能在浏览器打开,就说明填写正确吗?
不能。DoH 端点处理的是规定格式的 DNS 请求,普通浏览器访问可能返回错误状态,也可能显示说明页。应以客户端实际解析结果、连接记录与服务提供的端点说明共同判断,而不是只看页面是否出现内容。
为什么切换 Wi-Fi 后 DNS 表现变了?
系统解析器可能随网络改变,端点可达性和内部域名范围也可能不同。先比较同一配置在 Wi-Fi 与蜂窝下的结果;若连接开关也自动变化,再检查 Settings → On Demand 的触发条件,避免把自动连接行为误判成 DNS 问题。
订阅更新后,刚改好的 DNS 又变回去了怎么办?
先区分服务器订阅更新和远程配置文件更新:前者主要更新服务器条目,后者可能替换配置内容。检查 Config 当前启用文件的来源,保留本地副本并在更新后核对 dns-server;不要把含凭据的完整配置贴到公开页面。
稳定设置的判断标准是:所需域名可以解析,连接采用预期策略,在常用网络下能重复验证,并且保留恢复方法。只要系统 DNS 已满足这些条件,就没有必要为了更换设置而更换设置;需要 DoH 时,也应从一个已知可用的端点开始,而不是一次添加多项无法区分效果的选项。