先保留系统 DNS 作为对照;需要固定解析上游时再设置自定义 DNS;需要加密到解析服务的查询传输时考虑 DNS over HTTPS。本文适合已经有可用服务配置、正在排查域名打不开或切换网络后解析异常的用户,说明三种方式的边界、dns-server 的填写方法,以及修改后如何判断问题发生在解析还是连接阶段。
DNS 负责解析,不等于连接出口
Shadowrocket(小火箭)中的 DNS 设置主要回答“域名怎样取得 IP 地址”。它与 Home 中的 Global Routing 不是同一个设置:前者影响名称解析,后者决定连接采用哪种路由方式。网页打不开时,应先区分“没有取得地址”与“取得地址后连接失败”,不要同时修改 DNS、规则和服务器参数。
这条流程描述一次需要本地解析的典型访问,不代表所有连接都先经过完全相同的步骤。应用可能复用缓存,也可能自行使用加密 DNS;部分代理连接可以把目标域名交给远端解析。因此,修改 dns-server 后,不应预期设备上每一次名称查询都会立即改用新设置。
- 解析成功:查询得到可用的 A 或 AAAA 记录,只说明取得了地址,不说明目标端口可达。
- 连接成功:还需要路由策略、服务器配置、目标服务及当前网络都满足条件。
- 页面显示成功:还可能依赖多个资源域名;主域名可解析,不代表图片、登录和接口域名也正常。
系统 DNS、自定义 DNS 与 DoH 的区别
系统 DNS 指采用当前系统网络环境提供的解析器,通常来自 Wi-Fi 或蜂窝网络配置。自定义 DNS 是手动指定上游;若只填写普通 IP 地址,通常使用传统 DNS 传输。DNS over HTTPS,简称 DoH,则通过 HTTPS 与解析端点交换 DNS 消息。它们不是三个完全互斥的类别:DoH 本身也属于手动指定解析上游的一种方式。
| 设置方式 | 上游来源与传输 | 适合先验证的场景 | 需要注意 |
|---|---|---|---|
| 系统 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,避免重复添加同名设置。
- 记录 Home 中当前的
Global Routing选项与已选服务器,保留后续对照条件。 - 打开 Config 中当前使用的文件,找到
[General]和已有的dns-server。 - 只替换这一项,保存后确认仍选用该文件;为便于验证,可断开后重新连接。
- 重新发起目标域名请求并检查结果。已有连接和缓存可能继续复用旧结果,不能只刷新一次页面就下结论。
使用系统解析器
[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:证书身份、服务路由和端点支持情况未必允许这种替换。
用端口与配置值判断设置是否写对
端口号用于辨认传输,不是速度排名。普通 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
DOMAIN-SUFFIX,example.com,PROXY:按域名后缀匹配,示例将该域名及其子域名交给 PROXY 策略。IP-CIDR,192.168.0.0/16,DIRECT,no-resolve:按指定 IPv4 网段匹配;no-resolve表示不为这一条 IP 规则额外触发域名解析。FINAL,DIRECT:作为前面规则未匹配时的兜底策略;放置位置会影响后续规则能否被判断。
这是用于解释规则关系的片段,不是完整配置,也不是要求覆盖现有规则。GEOIP 与 IP-CIDR 属于基于地址的判断,可能涉及解析得到的 IP;DOMAIN-SUFFIX 使用域名条件。分析连接去向时,应同时查看命中的规则与最终策略,不能只看 DNS 返回的地址。
域名打不开时按什么顺序排查
先选一个此前能够访问的目标域名,并记录故障发生在 Wi-Fi、蜂窝网络还是两者都有。下面列出的是观察结果对应的检查方向,不是本页给出的实测结论;每次修改后都应重新发起请求,记录时间、网络和结果,避免拿不同条件下的表现作比较。
| 观察到的现象 | 优先检查 | 验证动作 |
|---|---|---|
| 换成 DoH 后多个域名都无法解析。 | 端点拼写、端点域名初始解析、HTTPS 可达性。 | 恢复 system 对照;若恢复正常,集中检查 DoH 端点而非重写全部规则。 |
| 公共网站正常,内部域名失效。 | 是否改用了不包含内部记录的公共解析器。 | 在原网络恢复系统解析器,重新测试同一内部域名。 |
| 已经得到地址,连接仍超时。 | 命中策略、服务器连通性、目标端口和 IPv6 路径。 | 先核对连接记录中的策略与目标,不继续盲目更换 DNS。 |
| 修改设置后,个别应用表现未变。 | 缓存、旧连接,以及应用自行使用的解析方式。 | 结束相关请求后重试,比较新请求,而不是只观察已打开的页面。 |
Connectivity Test 可以辅助检查服务器连通情况,但它不能独立证明所有业务域名均已正确解析。反过来,一次 DNS 查询成功也不能证明所选服务器和目标网站都可访问。应把解析结果、连接测试和实际页面请求分开记录。
结论:找到故障阶段后再修改对应设置
没有地址时检查解析器与端点;已有地址但无法连接时检查路由与连接路径;只有单个应用异常时再检查它的缓存和解析行为。保留原配置,验证不通过就恢复,避免连续叠加未经确认的改动。
按使用环境保留最终设置
- 以内部服务访问为主:先使用系统 DNS 验证组织网络提供的解析结果;涉及内部域名的更改应遵循该网络的配置要求。
- 需要固定公共解析上游:选择当前网络确实可达的解析服务,先用单个地址验证,再考虑是否需要多个上游。
- 需要加密 DNS 传输:使用解析服务提供的完整 DoH 端点,并分别在常用 Wi-Fi 与蜂窝网络下检查。
- 配置文件会定期更新:更新前后核对
[General]中的设置;文件更新可能覆盖本地修改,不能仅凭此前设置过就认定它仍在生效。
最终应保留的是能够解释、能够复现、方便恢复的配置,而不是上游数量最多的配置。本文以前提为用户已有自己的服务配置,不涉及服务订阅的提供或推荐。继续了解配置文件与连接验证,可阅读完整手册或使用教程。