已经在 iPhone 或 iPad 上使用 Shadowrocket、却遇到域名打不开或解析结果不符预期时,先分清「向谁查询」「怎样传送查询」与「请求最终走哪条路」。本文给出三种 DNS 设置的选择依据、dns-server 写法和逐项排查顺序;示例地址只用于说明语法。
DNS 在连接过程中负责哪一步
访问域名时,设备通常需要先取得对应的 IP 地址,然后才向目标地址发起连接。DNS 负责这一步查询;它不等同于 Shadowrocket 的连接开关,也不直接决定某个请求采用 Proxy 还是 Direct。Shadowrocket 的 Global Routing 决定流量的路由姿态;选择 Config 时,配置中的规则还会影响请求的处理方式。
因此,「连接已开启,但输入域名打不开」不能直接归因于 DNS。可以先区分两种现象:只有域名失败、已知可达的 IP 地址连接正常,才值得优先检查解析;域名和 IP 地址都失败,则还要检查当前连接、路由姿态及已有服务的状态。不要用一次网页加载失败推断所有 DNS 设置都有问题。
还有一层容易混淆:应用可能使用已经缓存的解析结果,某些请求也可能由连接的另一端处理域名。看到网页恢复访问,并不自动证明刚修改的本地 DNS 已参与那次查询。排查时应记录修改前后的具体域名、网络环境和失败现象,避免把缓存命中当成设置生效。
系统 DNS、自定义 DNS 与 DNS over HTTPS 怎么选
系统 DNS 表示沿用设备当前网络提供或系统正在使用的解析设置。切换 Wi-Fi 与蜂窝网络后,实际解析来源可能随之变化。它适合作为排查起点:先保持默认行为,确认连接和规则正常,再判断有没有必要改变 DNS。
自定义 DNS 则是明确填写解析服务器地址。它适用于你已经掌握可用的服务器地址,且需要核对不同网络下解析行为的情况。服务器是否可达、是否支持当前网络环境,仍需分别验证;填入一个地址不代表所有域名都会得到相同结果,也不代表查询自动经过加密。
系统 DNS
推荐先沿用当前网络的解析设置,建立可复查的默认状态;网络切换后重新观察结果。
适合:初次配置、尚未确认故障是否来自解析
自定义 DNS
在配置中指定已知可用的 DNS 服务器 IP 地址,并单独验证它在当前网络下能否响应。
适合:已有明确解析服务地址、需要控制查询目标
DNS over HTTPS
将支持的 DNS 查询通过 HTTPS 发送到相应端点;端点可达性和请求路由仍需核对。
适合:已有可用 DoH 端点、需要关注查询传输方式
DNS over HTTPS 常缩写为 DoH。它描述的是 DNS 查询的传输方式,不是 Global Routing 的新姿态,也不是把普通 DNS 服务器 IP 加上 https:// 就能完成的转换。DoH 需要有效的 HTTPS 端点;首次连接该端点时如何解析其主机名,以及连接实际采用哪条路径,也会影响结果。
判断顺序:先保持默认,再只改一项
如果系统 DNS 下访问正常,就不要同时更换解析服务器、DoH 端点和路由姿态。每次只改一个变量,才能判断差异来自 DNS、传输方式,还是规则命中。
在 Config 中写 dns-server:格式与生效范围
需要编辑配置文件时,先在 Config 找到当前实际使用的配置,确认编辑的不是一份未启用的副本。dns-server 是配置文件 [General] 区段中的字段,不是 [Rule] 里的规则行。修改后保存配置,再回到 Home 核对当前配置与 Global Routing;要按配置规则运行,应选择 Config 姿态。
[General]
dns-server = system
上例中的 system 表示使用系统 DNS。若要展示自定义地址的写法,可以在同一字段中用英文逗号分隔 IP 地址。以下地址属于文档示例网段,只说明格式,不能作为可用解析服务直接照填:
[General]
dns-server = 192.0.2.53, 198.51.100.53
- 保留
[General]区段,字段名写作dns-server,等号与地址之间的空格只是为了便于阅读。 - 实际使用时,把示例地址换成自己已经确认可达的 DNS 服务器 IP;不要把订阅链接、域名规则或 DoH URL 填进这个 IP 地址示例。
- 保存后核对当前启用的配置。若切到
Direct或Proxy姿态测试,应分别记录结果,不要把它们当成相同的规则环境。
多个地址不应被理解为「第一项始终负责全部查询,失败后才轮到第二项」的固定承诺;实际选择和回退行为会受配置及网络条件影响。若你的目标是验证某一个服务器,先只保留该地址进行测试,再恢复原配置。不要把 dns-server 的地址列表当成测速排名。
设置 DNS over HTTPS 时还要检查什么
在 Settings → DNS 查看当前可用的 DNS 选项;若界面提供 DNS over HTTPS 的输入位置,应填写自己已有且可用的完整 HTTPS 端点,并按界面保存。DoH 端点形如 https://dns.example.com/dns-query;这里的域名仅用于展示 URL 结构,不是可直接使用的服务地址。不要把这条 URL 填入前述以服务器 IP 为例的 dns-server 行。
DoH 能改变受其处理的 DNS 查询如何传输,但不能单独保证网页请求也走同一条路径。若当前网络无法连接所填端点,或者端点主机名本身无法完成初始解析,查询仍可能失败。先确认端点地址完整、服务确实可用,再结合连接状态与规则检查请求路径。
分开记录 DNS 与请求路由
检查解析
- 记录当前使用系统 DNS、自定义地址还是 DoH 端点
- 切换网络后,对同一域名重复测试
- 修改配置后确认启用的是已编辑的文件
检查路由
- 在 Home 核对连接状态
- 记录 Global Routing 是 Config、Proxy 还是 Direct
- 使用 Config 时再检查具体规则的命中情况
两组信息一起记录,才能区分「域名未解析」与「解析成功但后续连接失败」。
例如,DOMAIN-SUFFIX,example.com,DIRECT 表示匹配该域名后采用 DIRECT;它不是指定 DNS 服务器的语法。GEOIP、IP-CIDR 等规则涉及地址匹配,FINAL 则处理未被前面规则匹配的请求。调整 DNS 可能改变得到的 IP 地址,但不能据此推断所有规则的匹配结果必然随之改变。
改完仍打不开:按现象逐项排查
先把测试条件固定下来:保持同一网络、同一域名、同一 Global Routing 姿态,只改变一项 DNS 设置。记录「无法解析域名」「解析后连接超时」或「只有某个应用失败」这类具体表现,比笼统记录「不能用」更有助于定位问题。完成一轮测试后,可恢复原设置,再验证现象是否随之恢复。
填了 dns-server,为什么看不出变化?
先到 Config 核对正在使用的文件是否包含刚保存的 [General] 字段,再到 Home 记录 Global Routing。用同一网络和域名重新测试;不要只凭一个已打开的页面判断,已有连接或缓存可能沿用先前结果。
换成 DoH 后,域名反而打不开?
检查 URL 是否包含 https://、端点路径是否完整,并确认所填服务在当前网络可达。然后暂时恢复先前可用的 DNS 设置;若现象随之消失,再单独检查 DoH 端点及其初始解析。
Wi-Fi 正常,换网络就失败?
分别记录两种网络下的 DNS 设置与测试结果。使用系统 DNS 时,切换网络可能改变解析来源;使用自定义地址或 DoH 时,还需确认指定服务在新网络中是否可达。不要同时修改规则和 DNS。
域名能解析,网页却一直等待?
回到 Home 检查连接状态与 Global Routing。若使用 Config,再检查 DOMAIN-SUFFIX、IP-CIDR 或 FINAL 等规则的匹配方向;解析成功并不等于后续连接一定成功。
排查完成后保留一份已验证可用的设置。需要重新了解 Home、Config 和连接步骤时,可接着阅读站内入门指南。Shadowrocket 是通过 App Store 获取的 Apple 平台付费应用;iPhone、iPad 及其他设备的兼容性与系统要求以 App Store 页面标注为准。客户端的购买与 DNS 服务、已有订阅的服务内容是不同事项。