Skip to content

DNS 规则 ​

DNS 规则与路由规则共用域名、地址、来源、模式等匹配字段,并额外可以匹配已评估响应。匹配字段的完整语义见路由规则。

yaml
dns:
  servers:
    local:
      type: hosts
      hosts:
        nas.lan: 192.0.2.10
    real:
      type: udp
      address: 127.0.0.1:53
  rules:
    - {domain_suffix: [nas.lan], server: local}
    - {query_type: AAAA, action: reject}
  final: real

字段 ​

action ​

  • 类型:字符串枚举。
  • 默认:route。
  • 取值:route、evaluate、respond、route-options、reject、predefined。

server ​

  • 类型:DNS 服务器名。
  • 必填:route、evaluate 时是。
  • 限制:名字必须存在。

tag ​

  • 类型:字符串。
  • 行为:evaluate 保存响应时使用的标签,供后续 match_response 引用。

method ​

  • 类型:字符串枚举。
  • 取值:default、drop。
  • 限制:只用于 reject;default 答 REFUSED,drop 不回应。

match_response ​

  • 类型:true 或 evaluate 的标签。
  • 默认:不匹配已评估响应。
  • 行为:启用响应条件;true 看最近一次未打标签的响应。

ip_accept_any ​

  • 类型:布尔值。
  • 默认:false。
  • 行为:响应至少含一条地址记录即可匹配。

response_rcode ​

  • 类型:字符串枚举。
  • 取值:NOERROR、FORMERR、SERVFAIL、NXDOMAIN、NOTIMP、REFUSED。

response_answer ​

  • 类型:记录模式或数组。
  • 行为:匹配 DNS answer 区。

response_ns ​

  • 类型:记录模式或数组。
  • 行为:匹配 DNS authority 区。

response_extra ​

  • 类型:记录模式或数组。
  • 行为:匹配 DNS additional 区。

rcode ​

  • 类型:字符串枚举。
  • 默认:NOERROR。
  • 行为:predefined 响应的 RCODE。

answer ​

  • 类型:zone 文件记录字符串或数组。
  • 行为:predefined 的 answer 区记录。

ns ​

  • 类型:zone 文件记录字符串或数组。
  • 行为:predefined 的 authority 区记录。

extra ​

  • 类型:zone 文件记录字符串或数组。
  • 行为:predefined 的 additional 区记录。

rewrite_ttl ​

  • 类型:32 位无符号整数,单位秒。
  • 行为:改写响应 TTL,也决定缓存保留时间。

disable_cache ​

  • 类型:布尔值。
  • 默认:false。
  • 行为:不读也不写 DNS 缓存。

strategy ​

  • 类型:字符串枚举。
  • 取值:as_is、prefer_ipv4、prefer_ipv6、ipv4_only、ipv6_only。
  • 行为:本次查询的地址族策略,覆盖 dns.strategy。

client_subnet ​

  • 类型:IP 地址或 CIDR。
  • 行为:覆盖默认 EDNS Client Subnet。

remove_client_subnet ​

  • 类型:布尔值。
  • 默认:false。
  • 行为:删除客户端查询自带的 ECS,不向上游透露。

timeout ​

  • 类型:时长。
  • 行为:本次上游等待时间,覆盖 dns.timeout。

说明 ​

ip_cidr 或 ip_is_private 没有写 match_response 时使用旧式响应过滤:规则必须同时 route 到 server,先问该服务器,只有响应地址满足条件才返回,否则继续后续规则。

DNS Facts 不提供 MAC、主机名、进程、用户、DSCP 和 IN-PORT,所以对应的共享匹配字段在 DNS 规则中不匹配。

相关 ​

页面历史

开发者设计、代码地图和验证记录保留在仓库 manual/。