描述
records 插件对于直接从配置文件中的内联方式提供区域数据非常有用。与hosts 插件相反,本插件支持所有记录类型。记录需要按照 RFC 1035 中规定的文本形式指定。如果记录中未指定 TTL,将假定默认 TTL 为 3600s。
对于否定响应,应在响应中包含 SOA 记录,这仅在数据中包含 SOA 记录时才执行。
records 插件使用一个简单的算法来查找要返回的正确记录。这意味着当前无法使用一些更高级的功能,例如
- DNSSEC,如果添加了 RRSIG 记录,即使客户端能够处理它们,它们也不会在回复中返回。如果您需要签名回复,请将dnssec 插件与之结合使用。
- 通配符,即
*.example.org
,不会被检测为通配符记录。
如果您需要更可靠的实现,您可能要使用file 插件。
请注意,host 插件在plugin.cfg
中的配置优先于records,这意味着当在服务器块中同时指定两者时,host 插件将优先。
每个服务器块只能使用一次此插件。
语法
records [ZONES...] {
[INLINE]
}
- ZONES 它应该具有权威性。如果为空,则使用来自配置块的区域。
- INLINE 要提供的资源记录。这些必须按记录的文本形式(如 RFC 1035 中指定的)指定。请参见以下示例。每条记录必须位于单行上。
如果INLINE 中的域名没有完全限定,则每个ZONES 都会用作源并添加到名称中。
示例
为 example.org 提供 MX 记录并为 MX 服务器指定名称 mx1
和地址 127.0.0.1。
example.org {
records {
@ 60 IN SOA ns.icann.org. noc.dns.icann.org. 2020091001 7200 3600 1209600 3600
@ 60 IN MX 10 mx1
mx1 60 IN A 127.0.0.1
}
}
创建 2 个区域,每个区域都包含一个 MX 记录。请注意,没有提供 SOA 记录。此外,您需要用引号将 TXT 记录数据中的;
引起来,以使解析器正常工作。(;
是 RFC 1035 区域文件中的注释,它后面的所有内容都将被忽略,因此需要在此处用引号将其引起来。)
. {
records example.org example.net {
mx1 IN MX 10 mx1
dkim._domainkey.relay 3600 IN TXT "v=DKIM1\; h=sha256\; k=rsa\; s=email\; p=MIIBIj ..."
}
}
缺陷
DNSSEC 和通配符并未实现。查找算法非常基本。未来的增强功能可能会利用file 插件中的代码,使其更符合 DNS 规范。
请参见
如果只需要返回地址记录,请参阅hosts插件文档。当内联记录的内容已更改时,使用reload插件可自动重新加载相关内容。可使用dnssec插件对回复进行签名。请参阅 RFC 1035 和定义此插件中必须使用的文本表示形式的新记录类型的后续 RFC。请注意,还支持 RFC 3597(处理未知 DNS 资源记录)语法。
对于功能更全面的 DNS 实现(包括 DNSSEC),请使用file插件。