Shadowrocket DNS 设置:系统 DNS、自定义 DNS 与 DoH 怎么选

解释 Shadowrocket 中 DNS 的三种来源:何时沿用系统 DNS,何时填写自定义 DNS 或 DNS over HTTPS,并附 [General] 段 dns-server 的写法示例。

本文速览

本文适用于已在 Shadowrocket(小火箭)中导入自己已有配置、需要调整域名解析的用户。先区分解析与流量出站,再对照系统 DNS、自定义 DNS 和 DoH 的适用条件;随后备份 Config、修改 dns-server,并用同一网络下的单变量测试判断是否保留改动。

DNS 解析与规则分流分别处理什么

DNS 用于把域名查询为 IP 地址等记录。打开一个网站时,解析只是连接过程的一部分;解析得到地址后,还要完成路由选择、传输连接、TLS 握手及网页资源加载。因此,“改 DNS 后能打开”可以作为排查线索,但“网页打不开”不能直接等同于 DNS 故障。

Shadowrocket 的 dns-server 指定解析上游;规则里的 DIRECT、PROXY 指定匹配流量的处理策略。两者不是同一个开关。使用加密解析不等于网站流量必定走代理,使用系统 DNS 也不等于网站流量必定直连。

域名查询 解析上游 地址返回 建立连接 页面加载

上面的链条表示需要区分的排查阶段,并不表示所有规则都要等待解析完成。DOMAIN-SUFFIX 可以直接按域名后缀匹配;IP-CIDR 和 GEOIP 按 IP 地址匹配,在只有域名信息时可能涉及解析。规则按顺序评估,末尾的 FINAL 承接未命中的流量;改动 DNS 不会自动重排这些规则。

系统 DNS、自定义 DNS 与 DoH 的选择边界

“系统”与“自定义”描述解析器从哪里取得;DoH 描述查询如何传输。两种分类并不完全平行:手动填写一个 DoH 地址,本质上也是自定义解析上游。选择时应同时考虑网络可达性、内部域名需求以及查询传输方式,而不是只比较名称。

设置方式 适用条件 主要边界
系统 DNS 当前 Wi-Fi 或蜂窝网络解析正常;需要访问由当前网络解析的内部域名。 解析来源随网络变化,实际行为还受系统配置与网络管理策略影响。
自定义普通 DNS 需要固定解析器,且其 IP 地址在当前网络可达。 普通 DNS 通常使用 UDP 53,也可使用 TCP 53;查询本身不提供传输加密。
DNS over HTTPS 已有可信、可达的 DoH 端点,且需要对客户端到解析端点的查询传输加密。 依赖 HTTPS 连通性、有效证书及端点启动解析;解析服务仍能处理查询内容。
53
普通 DNS 常用端口:UDP / TCP
443
DoH 的 HTTPS 默认端口
1 项
每轮对照测试只改一项设置

结论:先保留可用基线,再决定是否固定解析上游

当前网络能正常解析且需要内部域名时,先保留系统 DNS;只有在明确需要固定解析器或加密查询传输时,再单独测试自定义 DNS 或 DoH,并保留可恢复的原配置。

在 Config 中修改前,先确认当前配置

本文以编辑配置文件中的 [General] 段为操作基准,不依赖某个界面版本的按钮位置。Home 用于查看连接状态及 Global Routing,Config 用于管理配置文件,Settings 用于应用设置。只编辑一个未启用的文件,通常不会改变当前连接所用的配置。

  1. 在 Home 记录当前连接项与 Global Routing 的取值。若要按规则测试,使用 Config 姿态,并确认当前启用的配置。
  2. 进入 Config,备份或复制当前配置。保留原来的 DNS 行及其他 General 参数,避免同时修改多个变量。
  3. 打开该文件的编辑功能,定位 [General]。已有 dns-server 时修改原行,不要追加多个同名设置来尝试切换。
  4. 保存并确认测试文件处于启用状态,然后断开、重新连接,使后续测试使用新的配置。
  5. 记录当前使用 Wi-Fi 还是蜂窝网络、测试域名、现象及恢复方法,再开始比较。

[General] 段 dns-server 的三种写法

以下是三个互斥的最小片段:每次只选择一个,用于替换当前配置中对应的设置。不要用这些短片段覆盖整个配置文件,否则会丢失原有规则及其他参数。用户已有配置若包含专门的域名映射或 DNS 相关选项,还需要一并核对其作用。

沿用系统 DNS

[General]
dns-server = system

system 表示使用系统提供的 DNS。它适合作为对照基线,尤其是在当前网络需要解析内部域名时。这里的“系统”并不承诺某一个固定解析器地址;切换 Wi-Fi、蜂窝网络或系统网络配置后,解析来源可能变化。

填写自定义普通 DNS

[General]
dns-server = 1.1.1.1

1.1.1.1 是普通 DNS 地址写法的示例,不是对其在所有网络中表现的推荐。请使用自己确认可信且可达的解析器地址。仅填写 IP 地址不会把普通 DNS 自动变为 DoH,也不能据此判断查询是否经由代理传输。

填写 DNS over HTTPS 端点

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

dns.example.com 是保留示例域名,上述地址仅用于展示语法,不能直接用于解析。实际使用时,应替换为已有 DNS 服务提供的完整 DoH 端点,包括 https://、主机名及路径。/dns-query 是常见路径,但应以端点的实际要求为准,不要只填服务首页。

普通 DNS 核对项

配置段
[General]
键名
dns-server
地址形式
解析器 IP 地址
常用端口
UDP / TCP 53

先确认地址在当前网络可达,再比较解析结果。

DoH 核对项

配置段
[General]
键名
dns-server
地址形式
完整 HTTPS 端点
证书要求
证书有效且主机名匹配

端点主机名自身也需要完成启动解析,不能只检查 URL 拼写。

DoH 解决查询传输问题,不替代出站检查

DoH 为客户端与解析端点之间的 DNS 查询提供 HTTPS 传输保护,但不隐藏解析服务本身需要处理的查询,也不替代网站连接所需的 TLS。解析器返回的地址可能因地理位置、缓存和服务策略不同而变化,变化本身不能作为错误或更快的证据。

DoH 端点使用域名时,客户端首先需要获得这个端点的地址,这一步通常称为启动解析。如果端点域名不能解析、证书验证失败,或到端点的 HTTPS 连接不通,即使配置文本符合语法,也可能无法正常提供解析。

不要把 Global Routing 的 Proxy、Direct、Config 与 DNS 类型一一对应。它们是流量处理姿态;Scene 用于场景相关的切换,也不是第四种 DNS 协议。为了得到可比较的结果,测试 DNS 时保持同一姿态、同一连接项与同一规则文件。

按同一组步骤验证,避免缓存造成误判

浏览器、系统及应用都可能保留连接或解析缓存。刚修改设置后,已经打开的页面仍能继续加载,并不能证明新解析器已经生效;第一次打开较慢,也可能包含新连接的握手开销。应对同一组目标重复观察,而不是只凭一次页面加载判断。

  1. 建立基线:保持当前网络,使用原配置访问一个常用网站与一个当前有问题的网站,分别记录“解析超时”“连接超时”或“页面部分资源失败”等具体表现。
  2. 只改 DNS:保持连接项、Global Routing 与规则不变,仅替换 dns-server,保存后重新连接。
  3. 产生新请求:关闭原有页面后重新访问,并结合连接记录或日志中实际可见的信息检查。无痕窗口也不能保证系统 DNS 缓存已被清除。
  4. 做恢复对照:恢复原 DNS 后再试一次。如果两种设置下都失败,应继续检查目标服务、出站连接与规则,而不是反复更换解析器。
  5. 单独测试网络变化:最后再切换 Wi-Fi 与蜂窝网络重复测试,不要在修改 DNS 的同一轮同时换网络。

DNS 设置常见问题

换成 DoH 后,所有网站都打不开怎么办?

先恢复备份中的 dns-server,重新连接并确认基线恢复。随后核对 DoH 端点是否为完整 URL、端点域名能否启动解析,以及 HTTPS 证书是否有效。本文的 example.com 地址仅为语法示例,不能作为实际服务使用。

公司内部域名只有系统 DNS 能打开,应该怎么设?

先恢复 dns-server = system,在原公司网络中验证。公共解析器通常不了解内部 DNS 区域,不能因为它能解析公共网站就直接替换内部解析器。需要混合解析时,应先取得网络管理员提供的域名范围与解析要求,再调整已有配置。

DNS 已返回地址,网页还是一直转圈呢?

回到 Home 检查连接状态与 Global Routing。在 Config 姿态下查看目标是否命中预期规则,再检查出站连接和 TLS 错误。此时问题已经可能位于解析之后,继续更换 DNS 不一定有效。

订阅更新以后,之前改的 DNS 不见了?

进入 Config 核对当前启用的文件及 [General] 内容,确认更新的是连接列表还是完整远程配置。完整配置刷新可能替换本地编辑内容;先保留个人副本并比较差异,再决定在哪个文件中维护 DNS 设置。

App Store 下载先核对正版信息