本文速览

先保留系统 DNS 作为对照;需要固定解析上游时再设置自定义 DNS;需要加密到解析服务的查询传输时考虑 DNS over HTTPS。本文适合已经有可用服务配置、正在排查域名打不开或切换网络后解析异常的用户,说明三种方式的边界、dns-server 的填写方法,以及修改后如何判断问题发生在解析还是连接阶段。

DNS 负责解析,不等于连接出口

Shadowrocket(小火箭)中的 DNS 设置主要回答“域名怎样取得 IP 地址”。它与 Home 中的 Global Routing 不是同一个设置:前者影响名称解析,后者决定连接采用哪种路由方式。网页打不开时,应先区分“没有取得地址”与“取得地址后连接失败”,不要同时修改 DNS、规则和服务器参数。

域名查询 解析上游 地址返回 连接判断 目标访问

这条流程描述一次需要本地解析的典型访问,不代表所有连接都先经过完全相同的步骤。应用可能复用缓存,也可能自行使用加密 DNS;部分代理连接可以把目标域名交给远端解析。因此,修改 dns-server 后,不应预期设备上每一次名称查询都会立即改用新设置。

系统 DNS、自定义 DNS 与 DoH 的区别

系统 DNS 指采用当前系统网络环境提供的解析器,通常来自 Wi-Fi 或蜂窝网络配置。自定义 DNS 是手动指定上游;若只填写普通 IP 地址,通常使用传统 DNS 传输。DNS over HTTPS,简称 DoH,则通过 HTTPS 与解析端点交换 DNS 消息。它们不是三个完全互斥的类别:DoH 本身也属于手动指定解析上游的一种方式。

三种 DNS 设置方式对照
设置方式 上游来源与传输 适合先验证的场景 需要注意
系统 DNS 使用系统提供的解析器;具体传输取决于系统网络配置。 建立故障对照,访问局域网或组织内部域名。 切换 Wi-Fi 与蜂窝网络后,上游及结果可能变化。
自定义普通 DNS 填写指定解析器 IP,通常通过 UDP 53 查询,必要时使用 TCP 53。 验证问题是否与当前网络提供的解析器有关。 仅更换 IP 地址不会自动为 DNS 查询增加加密。
DNS over HTTPS 填写完整 HTTPS 端点,通常使用 TCP 443。 需要加密客户端到解析端点的查询传输。 端点连通性、证书验证及端点域名的初始解析都可能影响可用性。

结论:先用同一域名做单变量对照

保持网络、Global Routing 和默认服务器不变,只更换 DNS 设置;确认结果可重复后再保留修改。一次同时调整多个项目,即使网页恢复,也无法确定是哪项设置起作用。

DoH 加密的是到解析服务这一段的 DNS 传输,不是整个访问过程。解析服务仍需处理查询,网站连接仍按相应路由建立。不能从“已使用 DoH”推导出“所有 DNS 都走代理”或“访问出口已经改变”。

在 Config 的 [General] 中填写 dns-server

先在 Config 中确认当前选用的配置文件,再备份原内容并进入该文件的文本编辑入口。下面三个代码块是互相替换的独立示例,不应一次全部粘贴。若文件已经有 [General],就在原分区修改 dns-server,避免重复添加同名设置。

  1. 记录 Home 中当前的 Global Routing 选项与已选服务器,保留后续对照条件。
  2. 打开 Config 中当前使用的文件,找到 [General] 和已有的 dns-server。
  3. 只替换这一项,保存后确认仍选用该文件;为便于验证,可断开后重新连接。
  4. 重新发起目标域名请求并检查结果。已有连接和缓存可能继续复用旧结果,不能只刷新一次页面就下结论。

使用系统解析器

[General]
dns-server = system

system 是设置值,不是需要替换的域名。它适合作为排查基线,尤其是网络中存在内部域名、路由器名称或组织专用解析记录时。公共解析器通常不知道这些记录,换成公共 DNS 后内部服务反而可能无法访问。

指定普通 DNS 地址

[General]
dns-server = 1.1.1.1

这里的 1.1.1.1 是公开解析器的语法示例,不表示它在所有网络中都更快。多个上游可用英文逗号分隔,但不要把排列顺序直接理解成严格的“主用、备用”切换保证。排查时先只保留一个上游,更容易识别它是否可达以及返回了什么结果。

指定 DNS over HTTPS 端点

[General]
dns-server = https://cloudflare-dns.com/dns-query

DoH 值需要包含 https://、主机名和服务要求的路径;普通网站首页地址不能代替 DNS 端点。示例用于说明格式,实际填写前应核对解析服务公布的端点。不要随意把主机名换成 IP:证书身份、服务路由和端点支持情况未必允许这种替换。

用端口与配置值判断设置是否写对

53
传统 DNS 的标准服务端口,使用 UDP 或 TCP
443
HTTPS 的默认端口,DoH 通常使用此端口
2 类
常见地址记录:A 对应 IPv4,AAAA 对应 IPv6

端口号用于辨认传输,不是速度排名。普通 DNS 的 53 端口能访问,不代表 DoH 端点的 HTTPS 连接一定正常;能够打开某个普通 HTTPS 网页,也不代表指定 DoH 服务可用。应测试实际使用的解析器,而不是把任意网站的连通性当作解析服务的连通性。

系统 DNS 基线

配置分区
[General]
设置名称
dns-server
设置值
system
观察重点
相同网络下,公共域名与内部域名是否都能解析。

先记录基线,再替换解析上游。

DoH 端点检查

协议前缀
https://
示例主机名
cloudflare-dns.com
示例路径
/dns-query
观察重点
端点初始解析、HTTPS 连接与证书验证是否正常。

端点地址应逐项核对,不能只检查协议前缀。

若域名返回 AAAA 记录后访问不稳定,应进一步检查 IPv6 路径,而不是立刻认定 DNS 返回了错误地址。解析器能返回某个地址,与当前网络能够连接这个地址,是两个独立条件。也不要把浏览器直接访问 IP 当作唯一证据:HTTPS 网站可能依赖域名完成证书验证和虚拟主机选择。

DNS 与 Global Routing、规则的关系

在 Home 的 Global Routing 中,Config 按当前配置中的规则判断连接;Proxy 和 Direct 分别用于代理与直连路由方式;Scene 则涉及已配置场景的选择。排查 DNS 时应记下当前选项,不要把切换路由后的差异全部归因于解析器。

[Rule]
DOMAIN-SUFFIX,example.com,PROXY
IP-CIDR,192.168.0.0/16,DIRECT,no-resolve
FINAL,DIRECT

这是用于解释规则关系的片段,不是完整配置,也不是要求覆盖现有规则。GEOIP 与 IP-CIDR 属于基于地址的判断,可能涉及解析得到的 IP;DOMAIN-SUFFIX 使用域名条件。分析连接去向时,应同时查看命中的规则与最终策略,不能只看 DNS 返回的地址。

域名打不开时按什么顺序排查

先选一个此前能够访问的目标域名,并记录故障发生在 Wi-Fi、蜂窝网络还是两者都有。下面列出的是观察结果对应的检查方向,不是本页给出的实测结论;每次修改后都应重新发起请求,记录时间、网络和结果,避免拿不同条件下的表现作比较。

DNS 故障现象与下一步检查
观察到的现象 优先检查 验证动作
换成 DoH 后多个域名都无法解析。 端点拼写、端点域名初始解析、HTTPS 可达性。 恢复 system 对照;若恢复正常,集中检查 DoH 端点而非重写全部规则。
公共网站正常,内部域名失效。 是否改用了不包含内部记录的公共解析器。 在原网络恢复系统解析器,重新测试同一内部域名。
已经得到地址,连接仍超时。 命中策略、服务器连通性、目标端口和 IPv6 路径。 先核对连接记录中的策略与目标,不继续盲目更换 DNS。
修改设置后,个别应用表现未变。 缓存、旧连接,以及应用自行使用的解析方式。 结束相关请求后重试,比较新请求,而不是只观察已打开的页面。

Connectivity Test 可以辅助检查服务器连通情况,但它不能独立证明所有业务域名均已正确解析。反过来,一次 DNS 查询成功也不能证明所选服务器和目标网站都可访问。应把解析结果、连接测试和实际页面请求分开记录。

结论:找到故障阶段后再修改对应设置

没有地址时检查解析器与端点;已有地址但无法连接时检查路由与连接路径;只有单个应用异常时再检查它的缓存和解析行为。保留原配置,验证不通过就恢复,避免连续叠加未经确认的改动。

按使用环境保留最终设置

最终应保留的是能够解释、能够复现、方便恢复的配置,而不是上游数量最多的配置。本文以前提为用户已有自己的服务配置,不涉及服务订阅的提供或推荐。继续了解配置文件与连接验证,可阅读完整手册或使用教程。