配置文件
完整的 YAML 配置文件示例请参考配置文件 config.dist.yml。
dns
dns 配置对象用于设置 DNS 服务器的行为。 它包含以下属性:
cache
cache 对象配置缓存查询 DNS 的结果。 它包含以下属性:
enabled:是否启用 DNS 结果缓存。示例:
truesize:DNS 结果缓存的最大值(人类可读的数据量格式)。 如果enabled为true,该值必须大于零。示例:
128MBclient_size:指定每个已配置客户端地址或子网的 DNS 结果缓存的最大尺寸(人类可读的数据量格式)。 如果enabled为true,该值必须大于零。Example:
4MB
server
server 对象配置处理传入请求。 它包含以下属性:
bind_retry: The confguration of the retry mechanism for binding to the listen addresses. This is useful if the server is started before the network is ready and the addresses are not yet available, as on some editions of Windows when installed as a system service.noteThis object is available since v0.0.3.
它包含以下属性:
enabled: Whether bind retry is enabled or not.示例:
trueinterval: The interval between retries as a human-readable duration.Example:
1scount: The maximum number of attempts after the first failure. That is, ifcountis4, the total number of attempts will be five.Example:
4
listen_addresses:客户端监听的地址和端口集合。属性示例:
'listen_addresses':
- address: '127.0.0.1:53'
- address: '[::1]:53'
bootstrap
bootstrap 对象配置上游服务器地址的解析。 它包含以下属性:
servers:该列表用于指定上游服务器主机名的解析服务器。属性示例:
'servers':
- address: '8.8.8.8:53'
- address: '192.168.1.1:53'timeout:指定引导 DNS 请求的超时时间,使用人类可读的数据量格式。示例:
2s
upstream
upstream 对象用于配置实际的请求解析。 它包含以下属性:
groups:使用服务器组名称作为键值定义了一组上游服务器集合。 它包含以下属性:address:指定上游服务器的地址和端口。示例:
'8.8.8.8:53'match: 用于定义将哪些请求路由到该服务器组进行解析。 每个列表项可以包含以下属性:question_domain:指定域名或域名后缀。如果请求的域名匹配该值,则使用此服务器组进行解析。示例:
'mycompany.local'client:指定客户端的地址或子网。如果请求来自匹配的客户端地址或子网,则使用此服务器组进行解析。 该值必须是子网掩码内的有效地址。示例:
'192.0.2.0/24'
note同一条目中指定的属性会使用逻辑 AND 进行组合判断。 不同条目之间的判断会使用逻辑 OR 进行组合判断。
属性示例:
'match':
- question_domain: 'mycompany.local'
client: '192.168.1.0/24'
- question_domain: 'mycompany.external'
- client: '1.2.3.4'
infogroups配置中至少需要包含一个名为default的条目,并且可以 (可选) 包含一个名为private的条目,两个条目都不应该包含match属性。当其他组的匹配规则都不满足时,将使用
default组指定的服务器进行解析。 如果定义了private组,则会将其用于解析来自私有 IP 地址的反向解析请求 (PTR)。 如果未定义private组,此类请求将返回NXDOMAIN。timeout:指定上游 DNS 请求的超时时间,使用人类可读的数据量格式。示例:
2s
fallback
fallback 对象用于配置当主上游 DNS 服务器无法响应时的备用行为。 它包含以下属性:
servers:指定在主上游服务器无法响应时使用的备用服务器列表。属性示例:
'servers':
- address: 'tls://94.140.14.140'timeout:指定备用 DNS 请求的超时时间,使用人类可读的数据量格式。示例:
2s
debug
debug 对象配置调试功能。 它包含以下属性:
pprof
pprof 对象配置 pprof HTTP 处理程序。 它包含以下属性:
port: 用于在本地监听调试 HTTP 请求的端口。示例:
6060enabled:是否启用调试。示例:
true
log
log 对象配置日志记录。 它包含以下属性:
output:指定日志记录的输出位置。note写入系统日志的日志条目采用
text文本格式(如下),并使用系统时间戳。可能的选项值如下:
syslog表示使用特定于平台的系统日志,对于 Linux 是 syslog,对于 Windows 是 Event Log。stdout表示标准输出流。stderr表示标准错误流。日志文件的绝对路径。
示例:
/home/user/logs示例:
C:\Users\user\logs.txt示例:
syslogformat:指定日志条目的格式。可能的选项值如下:
default:简单格式。 例如:INFO service started prefix=program addr=127.0.0.1:53json:结构化 JSON 格式。 例如:{"level":"INFO","msg":"service started","prefix":"program","addr":"127.0.0.1:53"}jsonhybrid:与json相同,但字段数量有限。 例如:{"level":"INFO","msg":"service started, attrs: prefix=program addr=127.0.0.1:53"}text:结构化文本格式。 例如:level=INFO msg="service started" prefix=program addr=127.0.0.1:53
示例:
defaulttimestamp:指定是否在日志条目中包含时间戳。示例:
falseverbose:指定是否启用详细日志输出。示例:
false