“dig ... any” 显示 A 记录,但“dig ... a”不显示

“dig ... any” 显示 A 记录,但“dig ... a”不显示

使用“dig host.name.here.com A”时,我收到 SERVFAIL 且无响应。但当我执行“dig host.name.here.com ANY”时,我收到 NOERROR 且它返回 A 记录。

对于所讨论的域名可能存在什么问题,您有什么想法吗?

下面是一个经过清理的示例。当我使用其他 @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

答案1

SERVFAIL 耗时 3.7 秒,这很有趣,它远低于任何正常超时值。 dig没有@将使用您的本地解析器配置。您需要排除这是原因。

直接检查全部公司的解析器反过来,这通常是可行的(尽管在某些情况下不行):

for ns in $(dig +short company.com ns); do 
    dig @$ns host.company.com any; 
done

然后依次检查所有自己的解析器:

for ns in $(awk '/nameserver/{print $2}' /etc/resolv.conf); do 
    dig  @$ns host.company.com any; 
done

通常观察到的问题是相反的,由于答复太大而导致接收“ANY”出现问题,或者防火墙/IPS 丢弃了“ANY”查询。

相关内容