在Linux和Unix上用Dig工具排除域名解析DNS故障

http://tech.ddvip.com   2007年09月01日    社区交流

内容摘要:在实际应用过程中可能会遇到DNS解析错误的问题,就是说当我们访问一个域名时无法完成将其解析到IP地址的工作,而直接输入网站IP却可以正常访问,这就是因为DNS解析出现故障造成的。

  如果只有Question,没有Answer,那就有问题了

  如何判断域名的DNS服务器记录本身有没有解析

  域名的DNS服务器记录是一组特殊的主机名。这些DNS主机名必须要在Internic注册之后,才能用于域名注册。注册之后,通过whois能够查到,而且在互联网根服务器上会为注册的DNS服务器作解析。

以upsdn.com为例,他的dns服务器
Name Server: SENS01.DIG.COM
Name Server: SENS02.DIG.COM
Name Server: orNS01.DIG.COM
Name Server: orNS02.DIG.COM

  都可以通过whois以及dig @a.gtld-servers.net查到。

  为了保险起见,所有注册过的DNS服务器,同时也要在它本身的域名服务器上作A纪录的解析。否则,有的客户端可能不能正常工作。

  如SENS01.DIG.COM本身在其自身的DNS服务器上也作了解析。

  如果你注册了自己的DNS服务器,但没有为DNS服务器做解析,可能会出现解析不稳定的情况。

  如何判断域名的DNS服务器上未解析

  登陆到域名的DNS服务器上,执行:

dig @localhost upsdn.net

  如果没有结果,可以看/etc/named.conf中有没有该域名的记录,以及记录中的zone文件是否存在,如果都存在,可以执行程序代码:

rndc reload abc.com

  然后执行:

tail /var/log/messages

  看log中有没有报错,有没有zone文件格式的问题。

  如何判断域名的多个DNS服务器上的解析不一致

  依次查询该域名的每个DNS服务器,看结果是否一致。在所有的服务器中,如果有的服务器没有返回结果,不会影响到域名的正常解析,因为此时解析客户端会尝试其他的服务器,只有当所有的服务器都没有结果才会报错。但是如果A服务器上和B服务器上的解析不一致,则会出现域名解析时对时不对的故障。

Dig @ns2.everydns.com upsdn.net
Dig @ns4.dnspod.net upsdn.net

  如果不一致,通常是服务器之间的同步问题。

  如何判断域名的DNS服务器网络设置是否正确

  可以从其他机器分别以tcp和udp协议连接,如:

dig +tcp @ns4.dnspod.net upsdn.net

dig +notcp @ns4.dnspod.net upsdn.net

  如果不能连接,而且服务器上named服务已经启动,多半是软件或硬件防火墙的原因。在服务器上检查/etc/sysconfig/ipchains或 iptable中是否允许domain(53端口)的tcp及udp连接。或暂时停止ipchains/iptable服务,看外部是否能够连接。如果软件防火墙配置正确或根本未启动,则检查硬件防火墙有没有打开53端口。

  如何判断本地DNS cache未更新

  可以查出域名的DNS服务器,检查这些服务器上解析是否正确,如果服务器上正确,而本地解析不正确,则说明使用的本地DNS服务器没有刷新,需要等到它刷新之后。通常需要4到12个小时左右。

责编:豆豆技术应用

正在加载评论...