我有两个 DNS 解析器:
RHEL5 - BIND 9.7.0-P2-RedHat-9.7.0-17.P2.el5_9.2
RHEL6 - BIND 9.8.2rc1-RedHat-9.8.2-0.17.rc1.el6_4.4
配置完全相同,两个 DNS 服务器均未配置 IPv6 地址,并且 BIND 不监听 IPv6 上的客户端查询。
我想知道为什么只有 RHEL6 返回 IPv6 记录,是否有与此相关的配置选项:
RHEL5
# dig @RHEL5 example.com NS
; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.23.rc1.el6_5.1 <<>> @RHEL5 example.com NS
; (1 server found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 59564
;; flags: qr rd ra; QUERY: 1, ANSWER: 6, AUTHORITY: 0, ADDITIONAL: 12
;; QUESTION SECTION:
;example.com. IN NS
;; ANSWER SECTION:
example.com. 84843 IN NS ns01.example.com.
example.com. 84843 IN NS ns02.example.com.
;; ADDITIONAL SECTION:
ns01.example.com. 2233 IN A 192.168.10.10
ns02.example.com. 2233 IN A 192.168.20.20
;; Query time: 1 msec
;; SERVER: 10.10.1.10#53(10.10.1.10)
;; WHEN: Wed May 7 15:08:33 2014
;; MSG SIZE rcvd: 464
RHEL6
# dig @RHEL6 example.com NS
; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.23.rc1.el6_5.1 <<>> @RHEL6 example.com NS
; (1 server found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 59564
;; flags: qr rd ra; QUERY: 1, ANSWER: 6, AUTHORITY: 0, ADDITIONAL: 12
;; QUESTION SECTION:
;example.com. IN NS
;; ANSWER SECTION:
example.com. 84843 IN NS ns01.example.com.
example.com. 84843 IN NS ns02.example.com.
;; ADDITIONAL SECTION:
ns01.example.com. 2233 IN A 192.168.10.10
ns01.example.com. 171236 IN AAAA 2001:502:f4gg::1
ns02.example.com. 2233 IN A 192.168.20.20
ns02.example.com. 171236 IN AAAA 2410:a1:1024::1
;; Query time: 1 msec
;; SERVER: 10.10.2.10#53(10.10.2.10)
;; WHEN: Wed May 7 15:08:53 2014
;; MSG SIZE rcvd: 464
答案1
当您查询缓存 DNS 服务器(ra
在响应中设置了标志)时,您在该ADDITIONAL
部分中得到的内容应被视为“尽力而为”,超出了 RFC 明确要求服务器执行的操作。有些服务器会禁用该ADDITIONAL
部分完全除非 RFC 要求,即 BIND 的minimal-responses
选项。
在这种情况下,该ADDITIONAL
部分将包含服务器被动了解的记录,但您不能认为这些信息是详尽无遗的。它不会特意为您获取额外的数据,因为这将是不必要的工作,而且它有更好的事情要做。AAAA
名称服务器 IP 并不经常被请求,并且它们经常不存在。
请看以下示例:
$ rpm -q bind97
bind97-9.7.0-17.P2.el5_9.1
$ dig @localhost +noall +additional serverfault.com
brad.ns.cloudflare.com. 82084 IN A 173.245.59.105
roxy.ns.cloudflare.com. 6209 IN A 173.245.58.142
$ dig @localhost +short brad.ns.cloudflare.com AAAA
2400:cb00:2049:1::adf5:3b69
$ dig @localhost +noall +additional serverfault.com
brad.ns.cloudflare.com. 82056 IN A 173.245.59.105
brad.ns.cloudflare.com. 86397 IN AAAA 2400:cb00:2049:1::adf5:3b69
roxy.ns.cloudflare.com. 6181 IN A 173.245.58.142
我在这里所做的是演示我的缓存返回ADDITIONAL
缺少AAAA
记录的部分。然后我给缓存一个有用的提示,提示一条记录的存在AAAA
,然后我随后的重试会拉下一个包含AAAA
该记录响应但不包含另一条记录的附加部分。
权威名称服务器或引用名称服务器不会被动地填充该ADDITIONAL
部分。