跳至正文

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

说明系统 DNS、自定义 DNS 与 DNS over HTTPS 三种方式的解析路径和适用场景,并给出配置文件里 dns-server 字段的示例写法与验证方法。

本文速览

当前网络解析正常时,先保留系统 DNS;需要固定解析服务器时,再测试自定义 DNS;需要加密客户端到解析器之间的查询传输时,考虑 DNS over HTTPS。本文适合已在 Shadowrocket(小火箭)中载入自己已有配置的用户,重点说明 dns-server 的修改位置、三种方式的边界,以及如何区分解析失败、规则误匹配和连接失败。

1. 先区分 DNS 解析与连接分流

DNS 的任务是把域名解析为 IP 地址。例如访问 www.example.com 时,解析器可能返回 IPv4 的 A 记录或 IPv6 的 AAAA 记录。拿到地址之后,客户端还需要根据当前路由模式与规则决定如何建立连接。因此,“解析成功”和“网页能够打开”是两个不同的检查点。

域名请求 缓存检查 解析器查询 地址返回 连接验证

这条流程描述常见的域名解析检查顺序,不代表每个请求都会重新查询 DNS。应用缓存、客户端缓存,以及由远端处理域名的连接方式,都可能改变实际查询位置。域名规则也可能在本地解析前完成匹配,不能把 DNS 当作所有规则之前必经的独立步骤。

在 Home 查看 Global Routing 时,应把模式与解析设置分开理解:Config 使用当前配置中的规则,Proxy 与 Direct 改变整体连接策略,Scene 按场景设置工作。切换模式不能替代修复错误的解析器地址;配置了 DoH,也不等于所有业务连接都经过代理。

2. 三种 DNS 方式如何选择

“系统 DNS”和“自定义 DNS”主要回答使用哪个解析器;“DNS over HTTPS”还规定了查询的传输方式。三者并非完全同一层面的分类:手动指定一个 DoH 端点,本身也是一种自定义解析设置。选择时先确认解析目标、网络可达性,再考虑传输加密。

方式 解析路径 适用条件 主要检查项
系统 DNS 使用系统当前网络提供的解析器信息。 网络解析正常,或需要解析局域网内部名称。 更换 Wi-Fi 或蜂窝网络后,解析器可能变化。
自定义传统 DNS 向手动指定的 DNS 地址发起查询。 已有可用解析器,需要固定查询目标。 地址是否可达、是否支持目标域名、查询传输是否受限。
DNS over HTTPS 通过 HTTPS 向指定端点提交 DNS 查询。 需要加密查询传输,且端点与证书可正常验证。 端点路径、TLS、端点域名的初始解析与实际出站路径。
53
传统 DNS 常用 UDP / TCP 端口
443
DoH 使用 HTTPS 时的默认端口
2 类
常见地址记录:A 与 AAAA

DoH 加密的是客户端到 DoH 解析器之间的查询传输,解析器仍需处理域名查询。它不负责改变网站自身的 HTTPS 行为,也不保证访问更快。增加 TLS 建连可能使首次查询耗时上升;连接复用和缓存又会影响后续结果,不能只用一次网页加载判断优劣。

结论:先保留可用基线,再替换解析器

若系统 DNS 下相同域名能够稳定解析,先保存这一配置作为回退点。之后每轮只修改 dns-server,不同时更换规则、连接策略和服务端参数,才能判断变化来自哪里。

3. 在 Config 中修改 dns-server

修改前先在 Config 找到当前使用的配置,保留副本,再进入该配置的文本编辑入口。目标是 [General] 段中的 dns-server 字段,而不是 Home 中某个连接条目的 Address。编辑动作以当前界面提供的菜单为准,避免把服务器地址误当成 DNS 地址修改。

  1. 在 Config 确认当前选用的配置名称,记录原来的 dns-server 值;如果原本没有该字段,也记录这一状态。
  2. 打开配置文本,找到已有的 [General] 段;同一配置已有此段时,在原段内修改,不重复添加整段。
  3. 只保留一条本次测试需要的 dns-server 设置,保存后重新选用该配置。
  4. 回到 Home,将 Global Routing 设为 Config 以测试配置规则,并在允许短暂断网的情况下断开再连接,让修改后的设置重新载入。
  5. 重新访问固定测试域名,记录解析与连接现象;失败时先恢复原值,而不是连续叠加多个解析器。

系统 DNS:作为第一轮基线

[General]
dns-server = system

system 表示使用系统 DNS 信息,并不承诺一定由路由器直接回答,也不代表其他应用的解析一定采用完全相同的路径。切换网络后应重新验证,尤其是需要先完成网络登录的 Wi-Fi。

自定义传统 DNS:使用已确认可达的地址

[General]
dns-server = 192.168.1.1

192.168.1.1 是局域网示例地址,仅在该设备确实提供 DNS 服务且当前网络可达时才有效。网关地址不一定就是 DNS 地址;也不能把家用网络里的私有地址原样带到蜂窝网络。实际填写值应来自用户已有网络或解析服务的配置说明。

DoH:填写完整端点而不是网站首页

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

上面的 dns.example.com 是说明格式的假值,不能直接用于连接。应替换为用户已经确认可用的 DoH 完整端点;路径不一定是 /dns-query,以该解析服务的说明为准。普通 HTTPS 网页即使能打开,也不意味着它能够处理 DNS 查询。

4. 同时核对端点、网络与出站条件

DoH 端点通常以域名表示,建立 HTTPS 连接前可能先需要解析端点自身的地址。如果初始解析不可用,查询还没有到达 DoH 服务就会失败。这类问题不能仅靠把更多域名形式的端点填入列表解决,还要检查端点初始解析、路由与当前网络的可达性。

传统 DNS 核对项

配置字段
dns-server
示例地址
192.168.1.1,仅用于对应局域网
常用端口
UDP 53 / TCP 53
网络条件
当前接口可达,目标确实提供 DNS 服务

先确认服务器角色,再检查域名是否能得到回答。

DoH 核对项

地址格式
HTTPS 完整端点,包含服务要求的路径
默认端口
TCP 443
TLS 条件
证书与端点域名匹配,设备时间正确
初始解析
端点域名能够在建连前获得地址

HTTPS 表示传输加密,不表示查询必然经过代理。

不要用关闭证书验证来处理 DoH 失败。先检查完整地址、设备日期与时间,以及网络是否处于需要登录的状态。对于“只有开着 Shadowrocket 才失败”的情况,应同时核对 Config 中的规则和端点出站条件,避免把端点本身送入不可达路径。

5. 用固定顺序验证 DNS 是否生效

验证时应保留同一个网络、同一份规则和同一个连接条目。先用系统 DNS 建立记录,再替换成一个自定义解析器;每轮都使用相同的目标域名。不要同时刷新已有订阅、切换网络和修改 DNS,否则即使恢复访问,也无法定位真正生效的变化。

  1. 记录基线:记下网络类型、启用的配置、Global Routing 模式、测试域名,以及修改前是解析超时还是连接超时。
  2. 确认重新载入:保存后重新选用配置并重连;如果访问应用仍在复用旧连接,完全退出该应用后再打开测试。
  3. 看解析阶段:在可用的诊断或日志信息中寻找同一域名的查询、回答或超时。已有缓存时未必会产生新查询,不要据此直接判断失败。
  4. 看连接阶段:若已经有目标 IP,却在随后建连时超时,继续检查匹配策略、目标端口和已有连接条目的可用性。
  5. 重复比较:在相同条件下重复访问数次,区分首次查询和缓存命中。一次偶然成功不应作为长期稳定的依据。
观察到的现象 优先检查 下一步操作
查询超时,没有收到回答 解析器地址、网络可达性、DoH 端点路径 恢复 system 对照,再单独测试一个已知可用端点。
返回 NXDOMAIN 拼写、域名是否存在、是否依赖内部 DNS 核对完整域名,用相同网络的基线配置复查。
已返回 IP,但连接超时 规则策略、目标服务与实际连接路径 查对应连接的策略记录,不继续盲目更换 DNS。
Wi-Fi 正常,蜂窝网络失败 是否填写了私有解析地址、端点能否跨网络访问 先排除局域网专用地址,再在蜂窝网络重新建立基线。

结论:用阶段证据决定下一步

看到解析回答后,应把排查重点移到连接策略与目标服务;只有查询本身失败时,才继续调整解析器、端点或其出站条件。不要把全部“打不开”都归为 DNS 问题。

6. DNS 设置常见问题

改完 dns-server,为什么看起来没变化?

先在 Config 核对修改的是当前启用的配置,再保存、重新选用并重连。随后退出测试应用重新访问。若应用复用了地址缓存或自己处理解析,单看网页结果不足以证明客户端设置没有生效,应结合查询日志判断。

填了 DoH,DNS 查询就一定经过代理吗?

不一定。DoH 决定查询使用 HTTPS 传输,实际出站还受到客户端 DNS 处理逻辑、当前模式和相关配置影响。检查端点连接的实际路径,不要仅凭地址以 https 开头就下结论。

为什么换 DNS 后家里的内部域名打不开了?

外部解析器通常不了解家用路由器或单位网络里的内部记录。先恢复 system,并在原 Wi-Fi 下测试同一个完整名称;若恢复正常,再按内部网络要求设计解析设置,不把外部解析器当作所有名称的替代。

更新已有订阅,为什么没有修好 DNS?

连接条目订阅与 Config 中的 dns-server 是不同配置对象。回到 Config 检查实际启用文件中的字段;如果更新的是远程配置文件,还要核对本地修改是否被替换。不要通过反复更新连接列表来代替检查 DNS。

测试时刚断开就自动连上,怎么做对照?

先查看 Settings → On Demand,记录当前条件,必要时暂时停用自动连接后再测试,完成后恢复原设置。On Demand 负责连接触发,不负责选择解析器;对照期间应避免连接状态自行变化。

App Store 正版核对