Rover DNS 服务¶
Rover DNS 是可选的本地 DoH(DNS over HTTPS)服务器,由 RoverService 提供。默认监听 127.0.0.1:5353。
优势¶
| 特性 | 说明 |
|---|---|
| 多上游并发 | 同时向多个 DNS 服务器查询,取最快响应 |
| 协议多样 | 支持 DoH、DoT、TCP、UDP 作为上游 |
| 代理支持 | 上游 DNS 可通过 SOCKS5 代理连接 |
| 无系统 DNS 依赖 | 使用 Bootstrap DNS 解析上游域名,避免循环依赖 |
| 本地缓存 | Bootstrap DNS 结果缓存 5 分钟 |
启用方式¶
Rover DNS 通过在 DNS 服务器设置中添加 rover 类型的服务器来使用:
- 打开「DNS 策略页面 → DNS 服务器设置」弹窗
- 在「Rover DNS 服务」区域确认已启用,并设置监听端口(默认
5353) - 点击添加 DNS 服务器,类型选择 Rover
- 配置上游地址、是否使用代理等参数
- 在 DNS 策略中选择该 Rover 类型的服务器作为上游
自动配置
Rover 会自动将 rover 类型的服务器生成为指向本地 https://127.0.0.1:5353/dns-query 的 DoH 服务器配置,无需手动填写地址。
请求流程¶
App DNS Query → sing-box DNS → [match rule] → Rover DNS (DoH)
│
│ POST /dns-query
▼
RoverService DNS Server
├── Upstream A (DoH/DoT/UDP/TCP)
├── Upstream B (DoH/DoT/UDP/TCP)
└── Upstream C (DoH/DoT/UDP/TCP)
│
First success
│
▼
Return DNS response to sing-box
Rover 类型服务器配置¶
添加 rover 类型的 DNS 服务器时,可配置以下参数:
| 参数 | 说明 | 示例 |
|---|---|---|
| 上游地址 | 上游 DNS 地址列表,逗号分隔 | tls://8.8.8.8:853,https://1.1.1.1/dns-query |
| 使用代理 | 开启后通过 SOCKS5 代理连接上游 | 开启/关闭 |
| Bootstrap 地址 | 用于解析上游域名的 DNS 地址 | 223.5.5.5 |
| Fallback 地址 | 备用 DNS 地址 | 119.29.29.29 |
上游地址格式¶
8.8.8.8 → UDP (默认端口 53)
udp://8.8.8.8:53 → UDP (显式指定)
tcp://8.8.8.8:53 → TCP
tls://dns.google:853 → DoT (DNS over TLS)
https://cloudflare-dns.com/dns-query → DoH (DNS over HTTPS)
如何配置上游?
上游地址由 Rover 的配置生成器自动设置。当你在 DNS 服务器中配置 rover 类型时,Rover 会根据是否开启代理自动添加相应的请求头。
高级用户可以在「设置 → 关于 → 查看当前配置」中检查生成的 dns.servers 配置来确认上游设置。
Bootstrap DNS 机制¶
为避免 DNS 查询循环,Rover DNS 使用 Bootstrap DNS 预先解析上游域名:
- 解析上游地址中的域名(如
dns.google) - 使用 Bootstrap DNS(IP 地址,如
223.5.5.5)进行 A/AAAA 查询 - 将解析结果缓存 5 分钟
- 使用解析后的 IP 连接上游服务器
- TLS/HTTPS 连接仍使用原始域名作为 SNI
为什么需要 Bootstrap?
如果上游是 tls://dns.google:853,需要先解析 dns.google 的 IP 地址。但如果系统 DNS 本身就需要通过 Rover DNS 解析,就形成了循环依赖。
Bootstrap DNS 使用纯 IP 地址(如 223.5.5.5),不需要域名解析,因此打破了循环。
SOCKS5 代理模式
使用 SOCKS5 代理时,跳过 Bootstrap 解析,由代理服务器远程解析域名。这意味着即使上游域名无法在本地解析,通过代理仍可正常连接。