DNS 服务器
你可以使用此选项来覆盖系统的 DNS 设置。Chute 支持 DNS 服务器、DoH(DNS-over-HTTPS)、DoT(DNS-over-TLS)、DoQ(DNS-over-QUIC)和 DoH3(DNS-over-HTTP/3)服务。
[General]
dns-server = 8.8.8.8, 8.8.4.4
doh = cloudflare, google, 1111
dot = dns.google, cloudflare-dns.com
doq = dns.adguard.com
doh3 = https://dns.google/dns-query
你可以使用关键字 system 将额外的 DNS 服务器追加到系统设置中。(重复的服务器将被忽略)
你可以使用关键字 syslib 通过系统内置 API 获取 DNS 结果。在 macOS 上,TUN 接口处于活动状态时,池一级的 syslib 会被跳过,因为此时系统解析器又指回 Chute;[Host] 中的 server:syslib 和 .local 那条路径仍然使用它。
[General]
dns-server = system, syslib, 8.8.8.8, 8.8.4.4
条目可以带端口:192.0.2.53:5353,IPv6 写作 [2001:db8::1]:5353。dns-server 不接受主机名;要使用以名称提供的解析器,请用 DoH、DoT、DoQ 或 DoH3。它们也可以直接写在这里,带上各自的 scheme——https://、tls://、quic:// 或 h3://——并归入 doh、dot、doq 或 doh3,与 encrypted-dns-server 中一样。
目前,内置有以下 5 个 DoH 服务。标识符为小写且区分大小写:
cloudflare(Cloudflare)google(Google)1111(1.1.1.1)securedns(SecureDNS)dnssb(DNS.SB)
你也可以配置个人的 DoH 服务。例如,如果你使用 https://dns.nextdns.io/xxxxxx 作为 NextDNS 的 DoH 端点,你可以这样配置:
[General]
doh = google, dns.nextdns.io/xxxxxx
无效的 DoH 条目会被报告为配置错误,并导致整行 doh 配置被拒绝。
为兼容 Surge 配置,doh-server、doh-service 这两种写法都可作为 doh 的别名使用。
DNS-over-TLS (DoT) 服务
你可以配置 DoT 服务以通过 TLS 加密 DNS 查询。
[General]
dot = dns.google, cloudflare-dns.com
每个 DoT 服务条目应为支持 DNS-over-TLS 的域名。Chute 默认通过 853 端口连接到该主机名;条目也可以写成 host:port 或 host:port:peer-name(IPv6 地址请使用 [IPv6]:port)来覆盖端口和 TLS 对端名称。
如果 DoT 主机名无法解析或不可达,它将被静默跳过。
你可以在同一个配置中混合使用 DoT、DoH、DoQ、DoH3 和传统 DNS 服务器:
[General]
dns-server = system, 8.8.8.8
doh = cloudflare
dot = dns.google
doq = dns.adguard.com
doh3 = https://dns.google/dns-query
DNS-over-QUIC (DoQ) 服务
你可以配置 DoQ 服务器以通过 QUIC 加密 DNS 查询。
[General]
doq = dns.adguard.com
每个 DoQ 条目应为支持 DNS-over-QUIC 的域名或 IP 地址。默认使用 853 端口;条目也可以写成 host:port 或 host:port:peer-name(IPv6 地址请使用 [IPv6]:port)来覆盖端口和 TLS 对端名称。Chute 使用 QUIC 传输进行 DNS 查询,相比基于 TCP 的 DNS 加密,延迟更低。
可以指定多个 DoQ 服务器,用逗号分隔:
[General]
doq = dns.adguard.com, dns.nextdns.io
如果 DoQ 服务器不可达,它将被静默跳过。
DNS-over-HTTP/3 (DoH3) 服务
你可以配置 DoH3 服务,使用 HTTP/3 (QUIC) 传输进行 DNS-over-HTTPS。
[General]
doh3 = https://dns.google/dns-query
每个 DoH3 条目应为指向支持 HTTP/3 的 DNS 解析器的完整 HTTPS URL。可以指定多个 DoH3 服务器,用逗号分隔:
[General]
doh3 = https://dns.google/dns-query, https://cloudflare-dns.com/dns-query
DoH3 结合了 DNS-over-HTTPS 的隐私保护与 QUIC 传输的性能优势。如果 DoH3 服务器不支持 HTTP/3 或不可达,它将被静默跳过。
DNS over TCP
[General]
dns-server = tcp://8.8.8.8, tcp://[2001:4860:4860::8888]:53
写成 tcp://IP[:port] 的解析器通过 TCP(RFC 7766)而不是 UDP 查询;端口默认为 53。适用于会丢弃或篡改 UDP DNS 的网络。凡是接受普通解析器的地方都接受它:dns-server、专用 DNS 池、SSID 暂停条目的 dns-server=,以及 [Host] 的 server: 列表。与普通解析器一样,它只接受 IP 地址——不接受主机名、system 或 syslib。逐服务器选项(如 #disable-qtype=)照常适用。带 #proxy 时,查询经由该策略发出,与所有经由策略的普通查询一样走 TCP。encrypted-dns-server 不接受它。
专用 DNS 池
除上面的主池之外,还有三个可选的池专门解析特定的名称:
[General]
direct-dns-server = 223.5.5.5, https://doh.pub/dns-query, system
proxy-dns-server = 1.1.1.1, tls://dns.google
fallback-dns-server = 8.8.8.8
direct-dns-server
解析规则判定为 DIRECT 的域名:Chute 拨出直连连接时所做的解析,以及到达 Chute 解析器的应用查询——发到 Chute DNS 监听端口的查询、always-real-ip 中列出的名字,或 A 和 AAAA 以外的记录类型。经 TUN 发出的应用 A 和 AAAA 查询不会到达这个池:无论规则怎么判定,虚拟 IP 层都会直接应答它们。这里只会查询域名类规则,所以应用发来的、没有任何域名规则命中的域名——也就是判定取决于 IP-CIDR、GEOIP 这类 IP 规则的那些——按 FINAL 走:FINAL 是 DIRECT 就用这个池,是代理就用主池。Chute 自己为这种域名做的解析走主池,因为此时连接还没有被定到 DIRECT 上。未设置该键时,全部由主池应答。
proxy-dns-server
解析你的代理服务器自身的主机名。未设置该键时,它们使用主池。
fallback-dns-server
主池完全没有返回应答时,在解析失败之前查询一次。和其他 DNS 键一样,可以写在 [General] 或 [DNS] 中,且只能写一次。
这些池中的条目可以混用各种传输方式:ip[:port]、[v6][:port]、system、syslib、DoH URL(https://…)、DoT 的 tls://host[:port]、DoQ 的 quic://host[:port] 以及 DoH3 的 h3://…。普通 DNS、DoH、DoT、DoQ 和 DoH3 条目都可以带上 #proxy 后缀;system#proxy 和 syslib#proxy 会被跳过并给出警告。direct-dns-server 或 proxy-dns-server 没有返回应答时,会改用主池重试。每个键只能出现一次。tcp://IP[:port] 条目通过 DNS over TCP 查询。
为兼容 Shadowrocket,dns-direct-system = true 会被读作 direct-dns-server = system,并按这种形式保存。同样,dns-fallback-system = true 会把 system 追加到 fallback-dns-server;若配置同时声明了 fallback-dns-server,两者合并为同一个池。
加密 DNS 选项
encrypted-dns-server
encrypted-dns-server = https://dns.google/dns-query, tls://dns.google, quic://dns.adguard.com, h3://cloudflare-dns.com/dns-query
Surge 用来列出加密解析器的单一列表。每个条目按其 scheme(https://、tls://、quic://、h3://)归入 doh、dot、doq 或 doh3;tcp:// 及其他 scheme 会被忽略并给出提示。DNS over TCP 请把 tcp:// 写在 dns-server 或专用池中——见 DNS over TCP。
encrypted-dns-follow-outbound-mode(默认:false)
encrypted-dns-follow-outbound-mode = true
让到 DoH、DoT、DoQ 和 DoH3 上游的连接像其他请求一样遵循出站模式和规则:直连模式下直连,全局模式下走所选策略,规则模式下走命中规则的策略——PROTOCOL,DOH、PROTOCOL,DOT、PROTOCOL,DOQ 与 PROTOCOL,DOH3 可以匹配它们。判定为 REJECT 的上游会被跳过。DoQ 和 DoH3 使用 QUIC,所以它们的连接经由所选策略的 UDP 中继发出;该策略(策略组则为其当前选择)不承载 UDP 时,由 udp-policy-not-supported-behaviour 决定:默认的 REJECT 跳过该上游,DIRECT 则直接向它查询。
encrypted-dns-skip-cert-verification(默认:false)
encrypted-dns-skip-cert-verification = true
不校验 DoH、DoT、DoQ 和 DoH3 上游的证书,适用于使用自签名证书的解析器。它同时也去掉了防止解析器被冒充的保护。
让查询经由策略发出
[General]
dns-server = 1.1.1.1#proxy, 8.8.8.8#proxy=HK
doh = https://dns.google/dns-query#proxy=Proxy%20Group
doq = dns.adguard.com#proxy=HK
dns-server、doh、dot、doq、doh3 或任一专用池中的条目末尾可以加上 #proxy 或 #proxy=<策略>:查询随后经由该策略发出,而不是直连。单独的 #proxy 使用全局模式下所选的策略;没有所选策略时,使用 FINAL 规则的策略。#proxy=<名称> 指定一个策略或策略组,名称中的空格写作 %20。普通 DNS 条目会改用 DNS over TCP,因为并非每种策略都能中继 UDP。DoQ 或 DoH3 条目仍使用 QUIC,它的连接经由该策略的 UDP 中继发出:该策略(策略组则为其当前选择)不承载 UDP 时,这个上游会被跳过并给出警告,绝不改为直接查询。策略不存在或解析为 REJECT 时,该上游会被跳过。代理服务器自身主机名的查询永远不会经由代理上游。
逐服务器选项
[General]
dns-server = 1.1.1.1#disable-ipv6, 8.8.8.8#disable-qtype=65
doh = https://dns.google/dns-query#h3=true, https://10.0.0.1/dns-query#skip-cert-verify=true
同一个 # 片段还能携带只作用于该服务器的选项。多个选项用 & 连接,=true 可以省略:
h3=true—— 该 DoH 服务器改用 HTTP/3 而非 HTTP/2 询问。skip-cert-verify=true—— 不校验这一个上游的证书。对该服务器而言,它去掉了针对伪造解析器的保护,效果与全局的encrypted-dns-skip-cert-verification对所有加密上游相同。disable-ipv4=true/disable-ipv6=true—— 永远不向该服务器询问 A / AAAA 记录。disable-qtype=65—— 永远不向它询问该记录类型。disable-qtype-65含义相同;用逗号列出多个类型可以一次全部禁用:8.8.8.8#disable-qtype=65,64就是一个条目,两种类型都被关掉。拆分条目时会识别#片段,所以片段之外的逗号照旧用来分隔服务器——8.8.8.8#proxy, 1.1.1.1是两个条目。
对某种记录类型已被禁用的服务器,在发出查询之前就会被跳过,不占用尝试次数,也不会产生超时;当池中每个服务器都拒绝该类型时,查询直接失败,而不是等待一个没人发出的应答。
HTTPS 与 SVCB 查询
allow-dns-svcb = true
默认关闭:应用发出的 HTTPS(类型 65)和 SVCB(类型 64)查询会直接得到一个空的 NOERROR 应答,而不会转发给上游,因为这类记录中的地址提示会让应用绕过虚拟 IP 和规则直接连接。设为 true 即可转发。这个开关同样涵盖应用经 TUN 发出的查询,无论是发往 Chute 自己的 DNS 地址,还是发往被 hijack-dns 接管的解析器。Chute 自身的 ECH 查询不受影响。
本页为英文版的翻译。如内容有出入,以英文版为准。