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

逐项说明系统 DNS、自定义 DNS 与 DNS over HTTPS 的工作方式和适用场景,附配置示例与修改后的验证方法。

本文速览

Shadowrocket(小火箭)的 DNS 设置应从当前网络可用性出发:网络正常时先保留系统 DNS;需要明确解析入口时再使用已有的自定义 DNS;需要保护查询传输时核对 DNS over HTTPS。本文面向已经拥有自己的服务商、订阅与可用连接的用户,说明解析、路由与连接的区别,并给出单项修改、日志核对和恢复原配置的方法。

先区分 DNS 解析与 Global Routing 流量去向

DNS(域名系统)负责把域名转换为可连接的地址。打开一个页面时,解析成功只是前置条件,后面还包括规则匹配、建立连接、TLS 握手与传输响应。网页打不开不能直接归因于 DNS;更换解析器也不能修复所有连接超时。

域名解析 取得地址 出站选择 建立连接 接收响应

这条流程用于区分排查阶段,不表示所有请求都严格按同一顺序处理。已有缓存、域名规则提前匹配、远端解析以及应用自带解析机制,都可能改变实际过程。尤其是域名规则可以在本地取得 IP 地址之前完成匹配。

如果用户已有订阅,更新订阅通常是在更新其中的连接条目,不代表当前 Config 内的 DNS 设置也已更新。排查前分别记录所选连接、当前启用配置与 Global Routing 姿态,避免把三个不同的状态混在一起。

系统 DNS、自定义 DNS 与 DoH 的选择依据

系统 DNS 使用当前系统网络环境提供的解析设置,Wi-Fi 与蜂窝网络可能不同。自定义 DNS 则指定解析入口;若填写普通 DNS 服务器地址,通常使用传统 DNS 传输。DNS over HTTPS(通过 HTTPS 传输 DNS,简称 DoH)改变的是查询传输方式,并不保证返回更快或更适合当前网络的地址。

设置方式 先满足的条件 适合的检查场景 主要限制
系统 DNS 当前网络已提供可用解析 建立基线、访问局域网名称、完成网络登录 切换网络后解析入口可能改变
自定义普通 DNS 已有服务器地址且当前网络可达 固定解析入口、对比不同网络的解析差异 普通查询本身不提供传输加密
DNS over HTTPS 已有完整端点、有效证书与可用 HTTPS 路径 需要保护到解析端点之间的查询传输 依赖端点连通性、域名引导解析及 TLS 握手
53
普通 DNS 常用端口,涉及 UDP 与 TCP
443
HTTPS 默认端口,DoH 常通过此端口传输
2 类
常见地址记录:A 对应 IPv4,AAAA 对应 IPv6

DoH 端点可能使用显式指定的其他端口;“能访问某个 HTTPS 网站”也不能证明某个 DoH 端点可达。服务器的域名、端口、请求路径与证书必须匹配。查询传输加密后,解析端点仍能处理并看到查询,不能据此推导所有流量均已隐藏。

结论:先保留可用基线,再改变解析入口

若系统 DNS 已能稳定访问目标,先记录结果,不为追求更低的单次耗时同时更换解析器与出站连接。确有解析失败时,每轮只修改一个 DNS 选项,再复测同一域名。

从当前 Config 核对 DNS,再进行单项修改

先进入 Config(配置)确认当前启用的文件,再查看其中的 [General](通用设置)与 dns-server(DNS 服务器)项。应用内 DNS 选项可从 Settings → DNS(DNS 设置)核对;不要只修改一个未启用的配置文件,随后误认为解析器没有生效。

  1. 保留原值。复制当前配置作为回退副本,记录 DNS 字段、Global Routing 姿态及当前网络。配置中如含凭据,副本应妥善保存。
  2. 确认测试对象。选一个已知可以正常访问的公开域名,以及一个确实出现问题的域名。局域网名称单独测试,不与公开域名混为一组。
  3. 只修改解析设置。在启用配置中核对 dns-server,或在对应 DNS 设置入口检查已有值。不要同时修改出站、规则、IPv6 与 On Demand。
  4. 保存并重新连接。结束当前连接后重新开启,随后产生新的请求。已打开页面、已有连接与缓存命中不适合作为唯一验证依据。
  5. 对照失败阶段。核对是解析超时、连接超时还是证书错误;若结果变差,恢复原配置并再次重连。

下面两段只展示同一个字段的两种写法,不能把两段重复追加进同一配置。保留实际文件中其他必要设置;不要为了套用示例而用几行文字覆盖完整配置。

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

若已有配置由远端更新管理,应先确认更新是否覆盖本地修改。测试应在保留副本的基础上进行,更新后重新检查启用文件中的实际值,而不是根据上次输入内容判断当前状态。

DoH 地址与普通 DNS 地址怎样填写和核对

普通 DNS 地址与 DoH URL 不是可以随意互换的格式。前者描述服务器地址,后者还包含协议、主机名与请求路径。把普通 DNS 地址前面加上 https://,并不会使该服务器自动支持 DoH。

普通 DNS 地址核对

地址示例
192.0.2.53
常用端口
53,检查 UDP 与 TCP 路径
填写位置
当前配置的 dns-server 项
前置条件
已有可用服务器及网络访问权限

192.0.2.53 属于文档示例地址,不能直接用于测试。

DoH 端点核对

协议
https://
主机示例
resolver.example.com
路径示例
/dns-query,以实际端点文档为准
证书要求
证书有效且与端点主机名匹配

DoH 使用完整 URL;示例只解释结构,不提供解析服务。

以域名表示的 DoH 端点存在引导解析需求:建立 HTTPS 连接之前,需要先得到端点自身的地址。如果引导解析不可用,可能出现“为了查询 DNS,先要解析 DNS 服务器域名”的依赖问题。此时应检查当前网络基础解析与端点连接路径,不应继续叠加更多同样无法建立连接的端点。

规则、IPv6 与局域网解析为什么会影响结果

DNS 返回地址后,流量仍需经过适用的路由决策。DOMAIN-SUFFIX(域名后缀匹配)依据域名;IP-CIDR(IPv4 地址段匹配)与 GEOIP(IP 地理归属匹配)依据地址信息。修改解析器后,返回地址可能变化,命中的地址类规则也可能随之改变。

[Rule]
DOMAIN-SUFFIX,example.com,DIRECT
IP-CIDR,192.0.2.0/24,DIRECT,no-resolve
GEOIP,CN,DIRECT
FINAL,PROXY

上例只说明语法与匹配关系,不是完整配置。DIRECT 表示直连,PROXY 表示代理去向;实际使用时须核对当前配置认可的策略名称。规则自上而下匹配,FINAL(最终规则)承接前面未匹配的流量。地址段是文档示例,不应直接作为日常分流配置套用。

访问需要网页登录的 Wi-Fi 时,应先完成网络认证,再评估自定义解析。认证未完成时,HTTPS 端点不可达、证书异常或所有外部请求超时,往往是网络准入问题,而不是 DNS 字段写法有误。

修改后如何验证:记录失败阶段而不是只看能否打开

验证应在同一网络、同一出站和同一路由姿态下进行。先用原设置建立基线,再换成候选设置。每轮记录请求时间、目标域名、是否得到地址,以及后续连接的结果;不要将缓存命中的瞬时响应与首次建立 DoH 连接的耗时直接比较。

观察现象 优先检查 下一步操作
记录中没有得到地址,随后超时 解析器可达性、端点格式与引导解析 恢复系统 DNS,保持其他设置不变后复测
已得到地址,但建立连接超时 规则命中、出站路径与目标端口 核对实际策略,不先重复更换 DNS
公开域名正常,内部名称失败 是否依赖本地网络解析 回到原网络与原解析设置对照测试
Wi-Fi 正常,蜂窝网络失败 两种网络的端点可达性与连接状态 分别重连并记录,检查 On Demand 条件
重连后仍显示先前地址 DNS 缓存、应用缓存与已有连接 重新发起请求,区分缓存结果与新查询

应用内日志能辅助定位,但不同请求未必都显示相同字段。日志中没有新的 DNS 行,既可能是缓存命中,也可能是解析发生在其他位置。需要结合实际请求时间与路由记录判断,不能只凭一行缺失给出结论。

  1. 在可重复的问题域名上,分别记录原设置和新设置的表现。
  2. 检查是否得到 A 或 AAAA 记录,再看连接最终采用的地址及策略。
  3. 若涉及隐私验证,只使用自己控制的测试域名与服务端记录;不同解析出口地址不一定代表异常。
  4. 完成对照后只保留已经验证的改动,删除测试值并保留回退副本。

结论:已有地址时,转查连接与规则

若记录表明地址已经返回,而失败发生在后续连接阶段,就先核对命中策略与目标路径。继续替换 DNS 会引入新的地址变量,使原来的故障更难定位。

常见问题:设置保存后仍不生效怎么办

改了 DNS,为什么还是原来的结果?

先在 Config 确认修改的是当前启用文件,再保存并重新连接。随后关闭旧页面并发起新请求,对照日志时间。还要检查配置更新是否覆盖修改,以及目标应用是否保留缓存或使用自己的解析机制。

用了 DoH,所有请求就一定通过代理吗?

不是。DoH 描述查询的 HTTPS 传输方式,不等于代理策略。先核对 Home → Global Routing,再检查当前配置对端点连接与目标流量的处理;解析请求路径和网页请求路径应分别验证。

节点延迟正常,但域名始终打不开,要先换 DNS 吗?

先确认日志中有没有返回地址。延迟测试只能反映相应测试过程,不能证明目标域名解析与网页连接均正常。只有确认失败在解析阶段后,才在保持出站不变的情况下对照系统 DNS。

设置后完全无法访问,怎么恢复?

切回修改前保留的配置,核对 dns-server 原值并重新连接。如果当前网络需要登录,先完成网络认证;若每次切换网络都会重新触发连接,再检查 Settings → On Demand 的现有条件。

App Store 正版获取先核对应用信息 →