当使用“挖掘host.name.here.com A”我得到SERVFAIL,没有答案。 但是,当我做一个“挖掘host.name.here.com ANY”我得到了NOERROR,它返回一个Alogging。
任何想法可能是有问题的域名有问题?
下面是一个卫生的例子。 同样的事情发生在我使用其他@dns_servers时:
user@server1:~$ dig host.name.here.com A ; <<>> DiG 9.7.3 <<>> host.name.here.com A ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: SERVFAIL, id: 19887 ;; flags: qr rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 0, ADDITIONAL: 0 ;; QUESTION SECTION: ;host.name.here.com. IN A ;; Query time: 3719 msec ;; SERVER: 172.16.1.5#53(172.16.1.5) ;; WHEN: Fri Feb 15 01:17:10 2013 ;; MSG SIZE rcvd: 39 user@server1:~$ dig host.name.here.com ANY ; <<>> DiG 9.7.3 <<>> host.name.here.com ANY ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 24213 ;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0 ;; QUESTION SECTION: ;host.name.here.com. IN ANY ;; ANSWER SECTION: host.name.here.com. 20 IN A 1.2.3.4 ;; Query time: 88 msec ;; SERVER: 172.16.1.5#53(172.16.1.5) ;; WHEN: Fri Feb 15 01:21:45 2013 ;; MSG SIZE rcvd: 55
取3.7s的SERVFAIL很有趣,它远低于任何正常的超时值。 dig不用@将使用您的本地parsing器configuration。 你需要消除这个原因。
直接检查所有公司的解决scheme,这应该一般工作(虽然在某些情况下):
for ns in $(dig +short company.com ns); do dig @$ns host.company.com any; done
然后依次检查你所有的parsing器:
for ns in $(awk '/nameserver/{print $2}' /etc/resolv.conf); do dig @$ns host.company.com any; done
通常情况下,观察到的问题是相反的,接收“ANY”的问题是因为答复太大,或防火墙/ IPS正在放弃“ANY”查询。