我想使用 BIND 作为公司域的公共名称服务器。我正在使用全新安装的 ubuntu 服务器 20.04.1 和 BIND 9.16.1。问题是 BIND 从不权威地回答。我可以使用 dig 看到这一点。为了找到问题,我尝试了一个最小的区域“example.com”,但没有成功。区域文件是 db.example.com:
example.com. 86400 IN SOA ns1.example.com. hostmaster.example.com. (
1 ; Serial
900 ; Refresh
300 ; Retry
86400 ; Expire
600 ) ; Negative Cache TTL
example.com. 86400 IN NS ns1.example.com.
example.com. 86400 IN MX 10 mail.example.com.
ns1.example.com. 86400 IN A 123.123.123.123
mail.example.com. 86400 IN A 125.125.125.125
当然,上面的 IP 地址并不是真正的 IP 地址,但是 ns1.example.com 的 IP 地址是 BIND 运行的系统的公共 IP 地址。named-checkzone 对此很满意。在 named.conf.local 中仅添加以下行:
zone "example.com" {
type master;
file "/var/lib/bind/db.example.com";
};
命名.conf.options:
options {
directory "/var/cache/bind";
dnssec-validation auto;
auth-nxdomain no;
listen-on { any; };
listen-on-v6 { any; };
recursion no;
};
将 dig 与 ANY 一起使用,我可以看到区域文件中的所有记录,但 BIND 总是回答AUTHORITY: 0。A 记录也不会出现在答案部分,而是出现在附加部分中。不幸的是,我不允许发布 dig 的原始输出,因为它看起来像垃圾邮件。该区域配置为主,NS 记录指向运行 BIND 的服务器的 IP 地址。另一个想法是 BIND 可能会尝试从 root 查询“example.com”并且知道它不是真正的权威名称服务器。所以我也尝试了同样不应该存在于任何地方的域“example.invalid”。结果与“example.com”相同。我以前从来没有遇到过这个问题。我还能尝试什么来解决这个问题?