我的 bind9 dns 缓存无法返回任何查询的答案,这是什么原因?我能以某种方式禁用该行为吗?
nslookup not.a.valid.query
Server: UnKnown
Address: 192.168.0.1
Non-authoritative answer:
Name: not.a.valid.query.robertfoss.se
Address: *my public ip address*
如果我禁用该行option domain-name "robertfoss.se";
(dhcpd.conf
并重新启动服务),相同的查询将产生更加合理的 dns-answer:
nslookup not.a.valid.query
Server: UnKnown
Address: 192.168.0.1
bind9 命名.conf.选项
options {
directory "/var/cache/bind";
forwarders {
81.88.9.218;
8.8.8.8;
81.88.9.220;
8.8.4.4;
};
// Security options
allow-query {127.0.0.1; 192.168.0.0/24; };
allow-recursion { 127.0.0.1; 192.168.0.0/24; };
allow-transfer { none; };
auth-nxdomain no; # conform to RFC1035
listen-on-v6 { any; };
};
我在 ubuntu 主机上运行 bind9。
答案1
您正在测试的域名 robertfoss.se 的 DNS 记录提供通配符 A 记录。直接查询 robertfoss.se 的名称服务器,我得到:
$ nslookup
> server ns1.loopia.se
Default server: ns1.loopia.se
Address: 93.188.0.20#53
> test.robertfoss.se
Server: ns1.loopia.se
Address: 93.188.0.20#53
Name: test.robertfoss.se
Address: 85.235.31.248
> nothing.should.be.here.robertfoss.se
Server: ns1.loopia.se
Address: 93.188.0.20#53
Name: nothing.should.be.here.robertfoss.se
Address: 85.235.31.248
那么,当 robertfoss.se 被设置为 dhcp 客户端的域名时,您的本地机器上会发生什么?这很简单,nslookup 会将默认域名附加到查询中。因此,例如,如果您nslookup 这个是很酷的名字,它会将其更改为nslookup this.is.a.cool.name.robertfoss.se。
有两件事可以解决这个问题。首先,在named.conf中确保“。”区域是type=hint,而不是type=master。其次,检查resolv.conf搜索和领域选项。
就我个人而言,对于小型网络我更喜欢域名系统. 轻量,灵活,易于配置。