跳转至

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 类型的服务器来使用:

  1. 打开「DNS 策略页面 → DNS 服务器设置」弹窗
  2. 在「Rover DNS 服务」区域确认已启用,并设置监听端口(默认 5353
  3. 点击添加 DNS 服务器,类型选择 Rover
  4. 配置上游地址、是否使用代理等参数
  5. 在 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 预先解析上游域名:

  1. 解析上游地址中的域名(如 dns.google
  2. 使用 Bootstrap DNS(IP 地址,如 223.5.5.5)进行 A/AAAA 查询
  3. 将解析结果缓存 5 分钟
  4. 使用解析后的 IP 连接上游服务器
  5. TLS/HTTPS 连接仍使用原始域名作为 SNI

为什么需要 Bootstrap?

如果上游是 tls://dns.google:853,需要先解析 dns.google 的 IP 地址。但如果系统 DNS 本身就需要通过 Rover DNS 解析,就形成了循环依赖。

Bootstrap DNS 使用纯 IP 地址(如 223.5.5.5),不需要域名解析,因此打破了循环。

Rover DNS 需要解析 dns.google
    ▼ 使用 Bootstrap DNS (223.5.5.5)
解析得到 8.8.8.8
    ▼ 使用解析后的 IP
连接 tls://8.8.8.8:853 (SNI: dns.google)

SOCKS5 代理模式

使用 SOCKS5 代理时,跳过 Bootstrap 解析,由代理服务器远程解析域名。这意味着即使上游域名无法在本地解析,通过代理仍可正常连接。