DNS
dns 定义命名上游服务器、规则、兜底服务器,以及代理服务器名字专用的 bootstrap 解析路径。
yaml
dns:
servers:
real:
type: udp
address: 127.0.0.1:53
fake:
type: fakeip
inet4_range: 198.18.0.0/15
check_aaaa: real
rules:
- {domain_suffix: [lan], server: fake}
final: real
cache: 4096
optimistic: 1h
strategy: prefer_ipv4
timeout: 5s字段
servers
- 类型:名字到 DNS 服务器 的映射。
- 默认:空。
- 行为:每个服务器把
type写在第一项;名字在同一映射中唯一。
rules
final
- 类型:DNS 服务器名。
- 必填:可选。
- 默认:首个会向别处询问的真实上游。
- 限制:必须存在;没有可选真实上游时
check失败。
cache
- 类型:非负整数。
- 默认:
4096。 - 行为:响应缓存容量。
optimistic
- 类型:时长。
- 必填:可选。
- 默认:过期后不再提供旧响应。
- 行为:TTL 过期后最多继续提供旧响应这么久,同时在后台刷新。
disable_expire
- 类型:布尔值。
- 默认:
false。 - 行为:缓存项永不过期,直到被容量淘汰。
- 限制:不能与
optimistic同时出现。
bootstrap
- 类型:DNS 服务器名。
- 必填:可选。
- 默认:无。
- 行为:专门解析代理服务器自己的名字,不经过 DNS 规则或出站代理。
- 限制:必须存在、不是主机名上游,也不能经
via出站;任何上游写via时必须有可用的 bootstrap。
strategy
- 类型:字符串枚举。
- 必填:可选。
- 取值:
as_is、prefer_ipv4、prefer_ipv6、ipv4_only、ipv6_only。 - 行为:所有查询的默认地址族策略;规则自己的设置优先。
client_subnet
- 类型:IP 地址或 CIDR。
- 必填:可选。
- 行为:默认随查询发送的 EDNS Client Subnet;裸 IPv4 视为
/24,裸 IPv6 视为/56。
timeout
- 类型:时长。
- 必填:可选。
- 默认:
5s。 - 行为:等待上游响应的默认时间;规则自己的设置优先。
说明
DNS 与路由共用 RuleSpec 的匹配语法。DNS 专用的响应匹配与动作见 DNS 规则 和 DNS 规则动作。
上游的 via 表示用某条出站承载查询;domain_resolver 表示上游地址写成主机名时用哪个 DNS 服务器解析它。完整边界见 DNS 服务器总览 和各类型页。