描述
file 插件用于“老式”DNS 服务器。它从包含 RFC 1035 样式数据,在磁盘上存在的预先加载文件进行服务。如果区域文件包含签名(即,使用 DNSSEC 签名),则返回正确的 DNSSEC 应答。仅支持 NSEC!如果你使用此设置,你负责对区域文件重新签名。
语法
file DBFILE [ZONES...]
- DBFILE 要读取和解析的数据库文件。如果路径是相对路径,则将从根插件中预先添加路径。
- ZONES 它应具有对其进行授权的区域。如果为空,则使用来自配置块的区域。
如果你想对 A 和 AAAA 应答进行循环处理,请查看loadbalance 插件。
file DBFILE [ZONES... ] {
reload DURATION
}
reload
间隔,当 SOA 版本更改时对区域执行重新加载。默认为一分钟。0
的值表示不扫描更改和重新加载。例如,30s
每 30 秒检查一次区域文件,并在序列更改时对区域重新加载。
如果你需要对外出区域传输,请查看transfer 插件。
示例
从 db.example.org
加载 example.org
区域,并允许向互联网传输,但将通知发送至 10.240.1.1
example.org {
file db.example.org
transfer {
to * 10.240.1.1
}
}
其中 db.example.org
将包含 RFC 1035 中(文本)表示格式的 RRSets (https://tools.ietf.org/html/rfc7719#section-4)
$ORIGIN example.org.
@ 3600 IN SOA sns.dns.icann.org. noc.dns.icann.org. 2017042745 7200 3600 1209600 3600
3600 IN NS a.iana-servers.net.
3600 IN NS b.iana-servers.net.
www IN A 127.0.0.1
IN AAAA ::1
或针对多个区域使用一个区域文件
. {
file example.org.signed example.org example.net
transfer example.org example.net {
to * 10.240.1.1
}
}
请注意,如果你具有如下配置,你可能会遇到无法正确识别原点的问题
. {
file db.example.org
}
我们忽略了文件 db.example.org
的原点,因此这引用的是服务器块中的区域,在此情况下,是根区域。db.example.org
的任何内容然后将使用设置的原点读取;这可能会或可能不会按照你的意愿执行。最好在这里明确说明并指定正确的原点。有以下两种方式可用于执行此操作
. {
file db.example.org example.org
}
或
example.org {
file db.example.org
}
另请参阅
如果你需要简单的记录改组,另请参阅loadbalance 插件。以及用于区域传输的transfer 插件。最后,root 插件可以帮助你指定区域文件的位置。
另请参阅 RFC 1035,获取有关如何构造区域文件的更多信息。