Skip to content

DNS 规则动作 ​

DNS 规则默认询问一个服务器;evaluate 保存响应供后续匹配,respond 返回已保存响应,route-options 只合并选项,reject 和 predefined 当场回答。

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}
    - {domain_suffix: [cdn.example], action: route-options, rewrite_ttl: 60}
    - {domain: [gone.example], action: predefined, rcode: NXDOMAIN}
  final: real

字段 ​

action ​

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

server ​

  • 类型:DNS 服务器名。
  • 必填:route、evaluate 时是。
  • 行为:本次要询问的服务器。

tag ​

  • 类型:字符串。
  • 行为:evaluate 给保存的响应打标签。

method ​

  • 类型:字符串枚举。
  • 默认:default。
  • 取值:default、drop。
  • 限制:只用于 reject;其他值被拒绝。

rewrite_ttl ​

  • 类型:32 位无符号整数,单位秒。
  • 行为:改写答案 TTL,并决定缓存多久;后面的规则覆盖前面的。

disable_cache ​

  • 类型:布尔值。
  • 默认:false。
  • 行为:合并后只要任一规则打开,本次查询就绕过缓存。

strategy ​

  • 类型:字符串枚举。
  • 取值:as_is、prefer_ipv4、prefer_ipv6、ipv4_only、ipv6_only。
  • 行为:后面的规则覆盖前面的地址族策略。

client_subnet ​

  • 类型:IP 地址或 CIDR。
  • 行为:后面的规则覆盖前面的 ECS。

remove_client_subnet ​

  • 类型:布尔值。
  • 默认:false。
  • 行为:合并后只要任一规则打开,就删除客户端自带 ECS。

timeout ​

  • 类型:时长。
  • 行为:本次查询等待上游的时间。

rcode ​

  • 类型:字符串枚举。
  • 默认:NOERROR。
  • 取值:NOERROR、FORMERR、SERVFAIL、NXDOMAIN、NOTIMP、REFUSED。
  • 限制:用于 predefined。

answer ​

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

ns ​

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

extra ​

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

说明 ​

route 询问服务器并立即返回;evaluate 询问并保存响应,不返回,继续遍历;respond 返回最近一次未打标签或 match_response 选中的响应。route-options 把选项并入后续查询,自身不回答。

reject 默认回答 REFUSED,method: drop 不回答。predefined 直接构造响应,记录在配置加载时解析;不写 TTL 的记录默认使用 300 秒。

除 method 外,解析器会接受字段,但动作自身不使用的选项不会产生效果;跨动作写明显矛盾字段时以 check 的编译错误为准。

相关 ​

页面历史

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