解决了DNS解析的问题

前几天域名的NS服务器更换IP,换完后我用nslookup查看了一下,ns1可以解析到IP,ns2解析不到。

在深圳电信和四川电信的DNS服务器上不断地查我的域名,大概有1/3的时候解析不到IP。set q=ns后再查,发现每次返回的ns服务器顺序并不一样,有时ns1在前,有时ns2在前。

一般网上的说法是,ns1是主DNS服务器,ns2是副DNS服务器,刚才咨询了域名提供商的客服也是得到这个答案。但是现在我觉得,DNS服务器并非安装顺序查询的。DNS服务器在接到解析请求的时候,缓存里找不到时,就去查这个域名的ns服务器,然后在这些ns服务器里,随便挑一个出来连接过去查询。象www.google.com,www.yahoo.com这些域名,一般都有五六个ns记录,如果每次都去第一个ns记录查学,那ns1也太可怜了!

上网查了下DNS服务器的工作原理。在微软网站找到一篇《DNS 查询的工作原理》,详细讲述了DNS查询的过程。浏览器拿URL去本机DNS缓存和hosts文件里查,查不到送第一个DNS服务器。DNS服务器先查自身区域(也就是说如果当前DNS服务器是该域名的ns服务器的话直接返回),然后是缓存,再查不到进入递归过程。具体过程如下图所示:(盗链自微软网站)
完整的 DNS 查询进程概况

接下来是递归查询的过程,如图所示(同样盗链自微软网站)。所谓递归查询,并不是说一级一级网上查询,比如深圳的DNS向上问广东的,广东的问全国的。图片里查询的是example.microsoft.com,DNS服务器进行递归查询,首先是先问那个点".",就是".com"的点,点"."说我不知道,不过我知道"com"的名称服务器,给你。拿到"com"的名称服务器,连接过去问,你有没有"example.microsoft.com"的IP?"com"说我没,不过我有"microsoft.com"的名称服务器,给你。再连接"microsoft.com"的名称服务器,询问"example.microsoft.com"的IP,得到"example.microsoft.com"的名称服务器。再连接"example.microsoft.com"的名称服务器,得到"example.microsoft.com"的IP。然后该DNS服务器赶紧给这边的客户——浏览器返回"example.microsoft.com"的IP地址,顺便问一句:“你等急了吧?”这就叫递归查询。
DNS 递归查询过程

英文wiki中的DNS条目有一幅图片,也满直观的,附在下面,如果你看不到,那么你一定不知道什么是自动配置脚本,什么是foxproxy插件吧,嘻嘻。
A DNS recurser consults three nameservers to resolve the address www.wikipedia.org.

另外可以参考一下《Solaris - dns名称解析过程》《知道如何区分DNS查询类型》

综上所述,一个域名的NS记录就是存放在上级域名中用来记录该域名的DNS服务器的。然后每个NS记录都要保证能解析到IP。现在很多公司的ns1和ns2分别连电信和网通的线,为了确保能解析到IP,我觉得这没什么用处,电信和网通的DNS服务器之间的连接还算通畅。如果一个ns服务器连接不上倒没关系,如果连接的上却解析不到IP就麻烦了,DNS服务器不会去重试另外一个ns服务器,而是直接返回没有IP。我的域名已经搞好了,管理员帮我把域名解析到新网的DNS服务器ns.xinnet.cn上,这下速度嗖嗖的。前几天在FeedBurner上修改设置,改完一项点save的时候,FB都会说“貌似你的domain不存在”,而且每天都会收到FeedBurner的报告,说找不到yskin.net。以后应该不会再有这种问题了。

本文共有 11 条评论解决了DNS解析的问题


  1. 1 豆腐

    四川电信就是渣啊...我的也经常解析不能。
    ps.怎么和DNS服务器的管理员取得联系?

    1. 2 yskin

      ...1楼的,我现在第一DNS放的是四川电信的,第二放的深圳电信的,感觉解析的还行啊,如果某个域名经常解析不到,应该查查NS记录的DNS服务器能否解析到。管理员嘛,你在哪个地方买的域名就去找哪个地方的客服咯。

    2. 3 豆腐

      yskin,我已经换成深圳和香港的dns了,但以前默认的四川的dns就解析不出我的域名。
      我的域名用的二级的免费的啦,你看你能不能打开?

    3. 4 yskin

      域名:chenkeikari.homeftp.org

      ns.sc.cninfo.net(61.139.2.69)上一般要第二、三遍才能解析到IP,ns.szptt.net.cn(202.96.134.133)上则能一次成功。也许深圳的DNS连接国外服务器的速度比较快?我看你的域名的ns记录是ns1.dyndns.org,前面是ns1~ns5,测试了一下,ns2和ns5不容易连上。国外的DNS服务器,国内解析慢也没办法。换用深圳的可以,只要连接速度快,不要影响了其他域名的解析。香港的就不要了吧,速度不可能快的,不过香港的放在第二DNS上也无所谓,Windows会先用第一个再用第二个的,一般解析时第二个都用不上。

    4. 5 豆腐

      re:yskin
      果然还是这样啊,2、3遍能解出已经不错了,最糟糕的时候刷到爆都没法,3Q

  2. 6 shura

    恩,正常登陆了
    恩,感觉模版有些变化^_^
    最大的变化就是右边侧被正文挤到最下面了,应该是上面那个完整的DNS查询进程那幅图把边框撑开了~~

    1. 7 yskin

      shura,你用的IE吧。已经改好了,改的CSS,你再看一下,现在显示应该正常了。

      参考我的文章《解决图片撑破页面的问题》

    2. 8 shura

      嗯,侧边框确实正常了,表扬一下^_^

      用IE,遨游打开你单篇带留言的文章,速度有点慢,耐心等一下,待到 完全打开时,会在左下角有网页错误的提示(黄色三角包含个小叹号)。可能是你留言的代码有点小错,不过无大影响。

      等我linux装好了,我用FF再给你测试下^_^

    3. 9 yskin

      嗯,Firefox下没问题,IE下会出现错误提示。检查了一下,应该是k2/js/prototype.js.php里的第1150行出错了。CSS我会改,js我不会啊。管不了了,反正Firefox下没错,也许是K2开发组故意的吧。

  3. 10 tran

    这个留言功能没问题吗?
    k2 r406版?

    1. 11 yskin

      K2的留言功能当然没问题,只是我装的SK2反垃圾评论插件有一个雪球效应检测,3天之内同一人发送多个评论的话会被当做spam...我这就去关了。

请留下您的评论: