原文地址:http://zhiwei.li/text/2008/08/%E7%94%A8dig%E6%8E%92%E6%9F%A5dns%E6%95%85%E9%9A%9C/

    一个域名注册之后,如果需要使大众可访问,必须要设置好DNS。DNS解析就是一套用域名得到对应的IP地址的机制。

DNS不能解析的常见原因有:
域名本身已经过期或被停止;
域名的DNS服务器记录不正确;
域名的DNS服务器记录本身没有作解析;
域名的DNS服务器上named服务没有启动;
域名的DNS服务器上未解析;
域名的多个DNS服务器上的解析不一致;
域名的DNS服务器网络设置禁止了53端口TCP/UDP协议;
本地DNS cache未更新,与DNS服务器上的记录不同步

DNS的解析过程:

1) 首先查找本地DNS的cache,如果cache里有,且未超过服务器或域名本身定义的生存时间,则返回cache中的记录;
2) 如果cache中没有,或已过期,首先查询互联网根服务器(如a.gtld-servers.net),找出该域名的DNS服务器是哪几个,如果查不到,返回错误;
3) 随机地从域名的DNS服务器中挑出一个,查出其IP地址,如果查不到,返回错误;
4) 连接到该IP地址的53端口(UDP或TCP协议),查询域名,如果连接不上,或服务器未返回结果,则返回错误。

如何判断域名的DNS服务器记录不正确
在Linux/Unix上,可以使用dig
$dig @a.gtld-servers.net upsdn.net

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

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

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

以zhiwei.li为例,他的dns服务器都可以通过whois以及dig @a.gtld-servers.net查到。
为了保险起见,所有注册过的DNS服务器,同时也要在它本身的域名服务器上作A纪录的解析。否则,有的客户端可能不能正常工作。<br />如SENS01.DIG.COM本身在其自身的DNS服务器上也作了解析。<br />如果你注册了自己的DNS服务器,但没有为DNS服务器做解析,可能会出现解析不稳定的情况。

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

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

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

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

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

如何判断域名的DNS服务器网络设置是否正确
可以从其他机器分别以tcp和udp协议连接,如:

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

如何判断本地DNS cache未更新

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