我正在尝试让 BIND9 DNS 服务器在 Debian 服务器上工作,以完成学校作业。问题是,当我尝试使用 测试我的 DNS 服务器时dig -t soa my.domain.com @ns.my.domain.com
,我只是得到dig: couldn't get address for 'ns.my.domain.com': failure
.老师正在运行自动检查,它只告诉我“SOA 记录不匹配”。我完全蒙在鼓里。
以下是 IP 地址和名称的概述(出于隐私考虑而编造):
My server: my.domain.com 123.123.123.100
Name server 1: ns1.school.com 123.123.123.101
Name server 2: ns2.school.com 123.123.123.102
Test server: 123.123.123.103
这些IP地址是老师给我的。测试服务器每2小时运行一次自动检查,以检查模块是否正常工作。
当我运行时systemctl status bind9
,我多次收到以下消息:
client 123.123.123.103#51478 (my.domain.com): zone transfer 'my.domain.com/AXFR/IN' denied
我不知道可能出了什么问题。有人能引导我走向正确的方向吗?
配置
命名.conf.选项
options {
directory "/var/cache/bind";
recursion no;
allow-transfer { none; };
dnssec-validation auto;
auth-nxdomain no; # conform to RFC1035
listen-on-v6 { any; };
};
命名.conf.local
zone my.domain.com {
type master;
file "/etc/bind/zones/db.my.domain.com";
allow-transfer { 123.123.123.101; 123.123.123.102; };
};
区域/db.my.domain.com
@ IN SOA ns.my.domain.com. [email protected]. (
2018082501 ; Serial
604800 ; Refresh
86400 ; Retry
2419200 ; Expire
604800 ) ; Negative Cache TTL
;
; Name servers
my.domain.com. IN NS ns.my.domain.com.
my.domain.com. IN NS ns1.school.com.
my.domain.com. IN NS ns2.school.com.
; A records for name servers
ns IN A 123.123.123.100
ns1 IN A 123.123.123.101
ns2 IN A 123.123.123.102
www IN A 123.123.123.100
test IN A 123.123.123.103
答案1
从您向我们展示的配置来看,有几点需要修复:
- 域名文件应该是
zones/db.mydomain,com
而不是zones/db.mydomaon.com
; 至于您向我们提供的错误,它表示向测试机 123.123.123.103 的域传输被拒绝;因此,您可以允许它,将其添加到允许 DNS 传输的服务器,如下所示:
允许传输{123.123.123.101; 123.123.123.102;123.123.123.103;};
进行此更改后,您将需要重新启动 BIND。
有理由相信测试服务器正在对应该传输的实际文件运行脚本/测试,因此会出现错误。
如果 ns1 和 ns2 已经在 school.com 域中注册,我不认为有必要在该
mydomain.com
域中再次注册它们(实际上已经看到许多专业人士犯了同样的错误);至于机器测试,目前尚不完全清楚它是属于 school.com 还是 mydomain.com。
至于你的 dig 命令失败,我会直接输入 IP 地址,如下所示:
如果在您的服务器内:
dig -t soa my.domain.com @127.0.0.1
或者实际上更好:
dig -t soa my.domain.com @123.123.123.100
作为最后的评论,负缓存 TTL 的 1 周太高了。我会用30分钟或1小时。