Shadowrocket DNS 设置教程:系统 DNS、自定义 DNS 与 DoH 怎么选
简答:Shadowrocket 的 DNS 设置主要通过应用内全局设置(Settings → DNS)或当前配置文件的 `[General]` 段(如 `dns-server`、`doh-server`)来完成。若遇到节点能测速但网页打不开、域名解析失败,通常需要将系统默认 DNS 更改为可靠的自定义 IP 或加密 DoH 服务。修改时坚持“一次只改一个变量”,并在修改后断开重连以清除旧缓存。
定义:Shadowrocket DNS 设置是指在 iOS 代理客户端中指定域名解析服务器(如系统 DNS、常规 IP 地址或加密的 DoH 服务器)的过程,用于将网址转换为 IP 地址并决定流量如何走向路由规则。
Shadowrocket DNS 设置的两种入口与基本概念
在 iOS 的 Shadowrocket(小火箭)中,DNS 设置主要有两个地方可以控制:一是应用全局的 Settings(设置)→ DNS,二是当前正在使用的 Config(配置)文件中的 [General] 段。这两者可能会互相影响,通常优先以当前活动配置文件的定义为准。
- 系统 DNS(system):默认选项。直接调用 iOS 蜂窝网络或 Wi-Fi 当前分配的运营商 DNS。优点是连接兼容性好,缺点是可能存在运营商 DNS 污染或解析慢。
- 自定义 DNS(IP 地址):如
223.5.5.5、1.1.1.1等。通过直接指定一个或多个公共 DNS 服务器,提高解析速度并减少劫持。 - DoH(DNS over HTTPS):通过加密的 HTTPS 协议进行域名解析(例如
https://dns.alidns.com/dns-query),能有效防止 DNS 查询被监听或中间人篡改。
三种 DNS 方式的对比与适用场景对照
为了帮助你在不同网络环境下做出选择,可以参考下表进行对照配置:
Shadowrocket 常见 DNS 填写格式与配置示例
如果你通过文本编辑器修改配置文件的 [General] 段,请参考以下常见字段的正确写法。注意:不要将 DoH 的 URL 网址直接填入普通的 IP 格式字段中。
[General]
# 使用系统默认 DNS
dns-server = system
# 或者使用自定义 IP(多个用逗号隔开)
# dns-server = 223.5.5.5, 1.1.1.1
# 如果使用 DoH 加密解析,需配置 doh-server
# doh-server = https://dns.alidns.com/dns-query
# 确保 IPv6 开关与当前网络及节点匹配
ipv6 = false操作提示:修改前请先备份当前的 Config 文件。如果从第三方导入了订阅,每次更新订阅可能会覆盖你手工修改的配置文件内容,建议通过自定义模块或在本地安全副本中调整。
节点测速正常但网页打不开?DNS 故障排查步骤
假如你遇到了节点延迟很低、测速正常,但大部分或部分网页无法加载的情况,请按照以下四个步骤逐步排查:
- 检查当前活动配置:确认你修改 DNS 的配置文件正是当前主界面勾选正在使用的那一份,避免改错文件。
- 断开并重建 VPN 隧道:Shadowrocket 在修改 DNS 后,必须关闭连接(主开关拨到关闭)再重新开启,以彻底清除旧的 DNS 缓存和系统套接字。
- 测试系统或自定义切换:暂时将
dns-server改为system或切换至公共 DNS(如1.1.1.1),排除由于某一个特定 DNS 服务器宕机或被拦截导致的解析失败。 - 排查路由与 IPv6 冲突:若部分海外网站无法打开,可能是由于本地运营商或代理节点对 IPv6 支持不完善。尝试在设置中将
ipv6关闭,然后重新测试网页连通性。
Shadowrocket 三种 DNS 模式对比表
| DNS 模式 | 配置写法示例 | 优点 | 缺点与适用场景 |
|---|---|---|---|
| 系统 DNS | <code>dns-server = system</code> | 兼容性最高,不干扰本地网络判断 | 容易遭遇本地 DNS 污染,海外解析可能较慢 |
| 自定义 DNS | <code>dns-server = 223.5.5.5, 1.1.1.1</code> | 解析速度较快,可避开部分运营商劫持 | 若所填 IP 在当前网络不可达会导致全部断网 |
| DoH(加密) | <code>doh-server = https://...</code> | 防窃听、防篡改,隐私保护较好 | 配置错误或网络握手失败时会导致解析超时 |
常见问题
为什么修改了 Shadowrocket 的 DNS 之后网页还是打不开?
修改 DNS 后必须将 Shadowrocket 连接断开并重新打开(重启代理隧道),才能清除旧的 DNS 缓存。此外,如果配置文件的 Global Routing 规则或代理节点本身出现故障,单纯改 DNS 也无法恢复访问。
可以把 DoH 的网址填到 dns-server 字段里面吗?
不可以。dns-server 字段仅支持传统的 IP 地址(如系统自带的 system 或标准 IPv4 地址),DoH 必须使用专属的 doh-server 字段并填写完整的 https:// 链接,否则会导致语法错误或解析失效。
为什么更新订阅后我之前改的 DNS 设置消失了?
因为在线订阅链接通常会完整覆盖并替换你本地的配置文件。若要长期保留自定义的 DNS 修改,建议将配置文件另存为本地文件修改,或通过 Shadowrocket 的模块功能进行覆盖。
相关阅读
参考资料
- shadow-doc.com(shadow-doc.com)
- shadowrocketwin.com(shadowrocketwin.com)