我在尝试在互联网上查找某个 DNS 名称时遇到了问题。出于某种原因,我虽然显示了正确的结果,但还是一直遇到 SERVFAIL - 就像 DNS 名称被解析了两次(外部/本地?)。
查找其他任何内容都没有问题,但这个 DNS 名称却让我头疼。我场内的其他服务器可以很好地查找此域。
让我给你一些信息。
操作系统:Ubuntu 14(已安装 bind9)
/etc/resolv.conf:
nameserver 208.67.222.222 # opendns
nameserver 127.0.0.1
错误的查找:
# host whois.verisign-grs.com
whois.verisign-grs.com has address 199.7.48.74
whois.verisign-grs.com has IPv6 address 2001:503:5419:1000::74
Host whois.verisign-grs.com not found: 2(SERVFAIL)
如果我的 resolv.conf 中没有 opendns 条目,则错误可能是超时(通常是第一个答案)或 SERVFAIL。
本地查找工具是否损坏了,或者我的 DNS 查找是否在某种程度上被阻止了?
答案1
host
似乎按顺序查询 resolv.conf 中的每个名称服务器条目。这也许就是为什么SERVFAIL
当它请求您的本地 DNS 服务器时,您会得到答案,然后得到状态。
为了避免该行为,请指定您要查询的服务器:
服务器是一个可选参数,它是主机应该查询的名称服务器的名称或 IP 地址,而不是 /etc/resolv.conf 中列出的服务器。
host whois.verisign-grs.com 208.67.222.222
不要忘记,这resolv.conf
不是 BIND 的配置文件,而是您的机器的配置文件,它知道 DNS 请求将被转发到哪个服务器。
如果您想让自己的 BIND 服务器应答,即使它不拥有记录,请设置一些转发器。
我尝试过并且我的 BIND 服务器也遇到了同样的问题:
dig @0 whois.verisign-grs.com
给了我 SERVFAIL 状态。
dig @208.67.222.222 whois.verisign-grs.com
一个答案。
刷新 DNS 缓存:
sudo rndc flush
然后再次请求:
dig @0 whois.verisign-grs.com +short
199.7.59.74