我的 BIND 9.8.2 设置出了问题。配置主区域后,发现运行正常,但无法使用带有选项的实用程序获取所有A
记录的列表。dig
ANY
这里有些例子:
google.com
如果我尝试 google.com 我能够获得A
记录:
# dig google.com ANY
; DiG 9.8.2rc1-RedHat-9.8.2-0.17.rc1.el6_4.4 <<>> google.com ANY
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 51302
;; flags: qr rd ra; QUERY: 1, ANSWER: 21, AUTHORITY: 0, ADDITIONAL: 0
;; QUESTION SECTION:
;google.com. IN ANY
;; ANSWER SECTION:
google.com. 264 IN A 46.28.246.109
google.com. 54220 IN NS ns3.google.com.
google.com. 264 IN A 46.28.246.108
google.com. 264 IN A 46.28.246.84
google.com. 264 IN A 46.28.246.113
google.com. 264 IN A 46.28.246.104
google.com. 54220 IN NS ns2.google.com.
google.com. 264 IN A 46.28.246.99
google.com. 264 IN A 46.28.246.118
google.com. 264 IN A 46.28.246.119
google.com. 54220 IN NS ns4.google.com.
google.com. 264 IN A 46.28.246.89
google.com. 264 IN A 46.28.246.93
google.com. 264 IN A 46.28.246.88
google.com. 264 IN A 46.28.246.94
google.com. 60 IN SOA ns1.google.com. dns-admin.google.com. 1559778 7200 1800 1209600 300
google.com. 54220 IN NS ns1.google.com.
google.com. 264 IN A 46.28.246.123
google.com. 264 IN A 46.28.246.98
google.com. 264 IN A 46.28.246.103
google.com. 264 IN A 46.28.246.114
;; Query time: 47 msec
;; SERVER: 192.168.0.1#53(192.168.0.1)
;; WHEN: Thu Jun 26 18:43:50 2014
;; MSG SIZE rcvd: 402
我的实验室域名 - MX 记录作为示例
MX
如果我提出要求,我可能会得到记录:
# dig internal.bluenet.lab MX
; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.23.rc1.el6_5.1 <<>> internal.bluenet.lab MX
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 40974
;; flags: qr rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 1, ADDITIONAL: 0
;; QUESTION SECTION:
;internal.bluenet.lab. IN MX
;; ANSWER SECTION:
internal.bluenet.lab. 257965 IN MX 20 mail2.internal.bluenet.lab.
internal.bluenet.lab. 257965 IN MX 10 mail1.internal.bluenet.lab.
;; AUTHORITY SECTION:
internal.bluenet.lab. 257439 IN NS ns.internal.bluenet.lab.
;; Query time: 2 msec
;; SERVER: 10.200.1.99#53(10.200.1.99)
;; WHEN: Thu Jun 26 18:53:35 2014
;; MSG SIZE rcvd: 99
我的实验室域名 - 没有 A 记录
无论我是否使用ANY
或A
选项,我都无法获得所有A
记录作为答案。只有当我使用选项时,A
我才能获得一条 A 记录
# dig internal.bluenet.lab ANY
; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.23.rc1.el6_5.1 <<>> internal.bluenet.lab ANY
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 39681
;; flags: qr rd ra; QUERY: 1, ANSWER: 4, AUTHORITY: 1, ADDITIONAL: 0
;; QUESTION SECTION:
;internal.bluenet.lab. IN ANY
;; ANSWER SECTION:
internal.bluenet.lab. 257961 IN MX 10 mail1.internal.bluenet.lab.
internal.bluenet.lab. 257961 IN MX 20 mail2.internal.bluenet.lab.
internal.bluenet.lab. 257961 IN SOA ns.internal.bluenet.lab. adminlab.bluenet.lab.internal.bluenet.lab. 3837556585 28800 7200 2419200 86400
internal.bluenet.lab. 257435 IN NS ns.internal.bluenet.lab.
;; AUTHORITY SECTION:
internal.bluenet.lab. 257435 IN NS ns.internal.bluenet.lab.
;; Query time: 0 msec
;; SERVER: 10.200.1.99#53(10.200.1.99)
;; WHEN: Thu Jun 26 18:53:40 2014
;; MSG SIZE rcvd: 168
我有一个典型的 BIND 安装 - chrooted,只有一个主区域。我已阻止区域传输(以防止AXFR
查询)。
我不知道为什么我无法获取A
记录。请帮助我。应该有一些选项命名配置文件用于允许这一点?
答案1
假设确实存在A
记录,我相信观察到的行为只是归结为ANY
针对缓存服务器的查询的一般行为。
需要注意的重要一点(可能不太直观)是,任何服务器(无论是缓存服务器还是权威服务器)只需要返回查询中请求的名称的任何记录ANY
。
也就是说,如果缓存服务器的缓存中有内容,则返回缓存中仍存在的该名称的内容是完全有效的(也是最普遍的实现)。这意味着如果存在不同的 TTL,则结果的某些部分可能已过期。
这在实践中意味着ANY
查询仅在非常特殊的情况下有用(通常不会内置到软件中,而是用于调试和类似用途)。