本地 DNS 映射

Chute 支持本地自定义 DNS 映射。它等效于 /etc/hosts,但具有更强大的功能,包括通配符、别名和指定 DNS 服务器。

[Host]
abc.com = 1.2.3.4
*.dev = 6.7.8.9
foo.com = bar.com
bar.com = server:8.8.8.8

注意:这里描述的映射行同样可以写在 [DNS] 段中,与 DNS 服务器选项并列。参见 DNS 段。Shadowrocket 的 ssid: 形式(按网络设置 DNS)是个例外:它只在 [Host] 中被识别,写在 [DNS] 中时会被读作一个永远不会出现的名称的映射。

一条映射可以列出多个地址,IPv4 与 IPv6 可以混写:dns.google = 8.8.8.8, 8.8.4.4, 2001:4860:4860::8888。A 查询以其中的 IPv4 地址应答,AAAA 查询以其中的 IPv6 地址应答。列表中含有地址以外的内容属于配置错误。只映射了一种地址族的名字,另一族的查询得到空应答(NODATA),不会再问上游服务器。同一个名字也可以写成两行,分别映射 IPv4 和 IPv6 地址。配置重载或模块新增的映射立即生效。如果名称被 [Host] 映射或别名覆盖,则不会缓存上游的 NXDOMAIN 应答;本地映射或别名优先。

通配符

你可以使用 * 前缀来通配所有子域名。请注意,Chute 使用简单的字符串匹配。例如,*google.com 将匹配 google.com、foo.google.com 和 bargoogle.com。而 *.google.com 不会匹配 google.com。

[Host]
*.dev = 6.7.8.9

别名

它等效于 CNAME 记录。

[Host]
foo.com = bar.com

对别名域名的 A 或 AAAA 查询会直接返回目标域名的地址,客户端无需自行跟随该别名。当目标域名没有所查询地址族的地址时,应答为空,而不会返回另一地址族的记录。Chute 会在规则加载时解析目标域名;若尚未解析完成,本次应答为 CNAME 记录,并会解析目标域名以供下次查询使用。


指定 DNS 服务器

你可以为单个或多个域名指定特定的 DNS 服务器。

[Host]
bar.com = server:8.8.8.8

server: 也接受 DoH URL,因此可以直接为域名指定一个 DoH 端点。

[Host]
*.example.com = server:https://doh.example/dns-query

server: 接受用逗号分隔的服务器列表。所有可用的条目都会保留并被同时查询,最先返回的应答胜出。条目可以是 IP 地址(可带端口,如 8.8.8.8:5353、[2001:db8::1]:5353)、system、syslib(force-syslib 与之相同)或 DoH URL。IP 地址和 DoH URL 可以以 #proxy 后缀结尾;system 和 syslib 若这样写会被丢弃并给出警告,因为系统解析器没法经由策略发出。tcp://IP[:port] 条目通过 DNS over TCP 查询该服务器。

[Host]
bar.com = server:8.8.8.8, 8.8.4.4

你可以为单个或多个域名指定系统 DNS 服务器。Chute 将仅使用系统 DNS 配置来查询这些域名。

[Host]
devs = server:system

由于 Chute 拥有自己的 DNS 客户端实现,某些主机名可能无法解析。你可以使用 server:syslib 让系统处理查询。

[Host]
Macbook = server:syslib

指定 DoH 服务

你可以为单个或多个域名指定特定的 DoH 服务。

[Host]
bar.com = doh:cloudflare

默认情况下,对后缀为 .local 的主机名的 A 与 AAAA 查询由系统解析。其他类型的查询——PTR、SRV、TXT——仍然发给配置的上游服务器。


指定 DoT 服务

你可以为单个或多个域名指定特定的 DoT(DNS-over-TLS)服务。

[Host]
bar.com = dot:dns.google

dot: 条目不能带 #proxy 后缀。


指定 DoQ 服务

你可以为单个或多个域名指定特定的 DoQ(DNS-over-QUIC)服务。

[Host]
bar.com = doq:dns.adguard.com

条目末尾可以加上 #proxy 后缀,例如 bar.com = doq:dns.adguard.com#proxy=HK,让查询经由该策略发出。策略名按原样保留。


指定 DoH3 服务

你可以为单个或多个域名指定特定的 DoH3(DNS-over-HTTP/3)服务。

[Host]
bar.com = doh3:https://dns.google/dns-query

和 DoQ 条目一样,它的末尾同样可以加上 #proxy 后缀。


规则集键

键也可以是一个规则集,而不是域名模式:

[Host]
RULE-SET:https://example.com/cn-domains.list = server:223.5.5.5
RULE-SET:MyProvider = server:https://doh.pub/dns-query
DOMAIN-SET:https://example.com/ad-hosts.txt = 0.0.0.0

RULE-SET:<来源> 接受 URL 或某个规则提供者的名称;DOMAIN-SET:<来源> 接受 URL。只有集合中的域名类规则参与匹配,IP 及其他类型的规则会被忽略。该集合的下载和刷新方式与 [Rule] 行引用它时相同,它匹配到的每个域名都使用右侧的值。内置的 SYSTEM 和 LAN 集合不能在这里使用。


DNS 脚本

[Host]
*.corp.example = script:CorpResolver

script:<名称> 把匹配域名的解析交给同名的 type=dns 脚本处理,应用发出的查询和 Chute 自己做的解析都是如此。脚本没有返回地址,或者没有启用中的同名 dns 脚本时,该域名按正常方式解析。


按网络设置 DNS(Shadowrocket)

[Host]
ssid:Home WiFi = server:192.168.1.1

Shadowrocket 的 ssid:<网络名称> = server:<服务器> 会被读作该 Wi-Fi 网络的 [SSID Setting] DNS 覆盖:设备连接该网络期间,这些服务器会替换主池中的普通解析器。网络名称可以包含空格。这里只认普通解析器——可带端口的地址、system 或 syslib;DoH URL 在 [Host] 的其他地方可以写在 server: 中,在这里则会被丢弃并给出提示。


系统 hosts 文件

[General]
read-etc-hosts = false

在 macOS 和 Android 上,Chute 还会读取系统的 hosts 文件 /etc/hosts,把其中的条目加入这张表,排在 [Host] 各行之前,因此同一个名称在两处都出现时,以 hosts 文件中的地址为准。[General] 中的 read-etc-hosts 控制这一行为,默认开启;设为 false 即不读取该文件。Chute iOS 和 tvOS 从不读取 hosts 文件。


组合使用

所有功能可以组合使用。例如:

[Host]
*.dev = foo.com
*.bar.com = server:system
Macbook = server:syslib
*.foo.com = doh:cloudflare
*.local = dot:dns.google
api.internal = doq:dns.adguard.com
S. Smart Rabbit LLC © All Rights Reserved            updated 2026-09-29 21:57:05

本页为英文版的翻译。如内容有出入,以英文版为准。

results matching ""

    No results matching ""