关于域名DNS服务器设置,不同ns

By | 2014年3月29日

本来一直使用dnspod的域名解析服务的,后来发现国外的DNS服务HE.NET也不错,有一天突发奇想,就是想能不能混用多个DNS 解析服务器,于是就混用了dnspod和HE.NET这两家的NS,现在域名的NS列表变成了如下:

1 Name Server:NS2.HE.NET
2 Name Server:NS3.HE.NET
3 Name Server:NS4.HE.NET
4 Name Server:NS5.HE.NET
5 Name Server:F1G1NS1.DNSPOD.NET
6 Name Server:F1G1NS2.DNSPOD.NET

后来解析生效后网站访问正常,于是暗暗自喜,然而DNSPOD控制台却显示解析错误,然后我通过DNSPOD查看了各地的生效情况,基本都能正常解析到服务器IP上,不过我注意到一个东西,那就是SOA,什么是SOA?“起始授权机构 (SOA) 资源记录指明区域的源名称,并包含作为区域信息主要来源的服务器的名称。它还表示该区域的其他基本属性。”也就是说其指明了哪个Name Server为主要的权威解析服务器,观察各地的解析情况,发现要么只定位到HE.NET的SOA,要不只定位到DNSPOD的SOA,本来以为没有什么,但是通过在线域名DNS诊断服务INTODNS发现了问题,首先每个SOA指定了权威NS服务器的序列号,很明显HE.NET的一组NS服务器和DNSPOD的NS服务器的序列号是不一样的,一般情况下一个域名DNS解析不允许有两个SOA服务器存在,貌似这样会导致NO GLUE问题(在参考了《DNS NO GLUE》这篇文章后,了解到不是同属于一个 TLDs才会出现NO GLUE现象),NO GLUE略微会造成解析上的延迟,不过不是致命的问题,还有就是解析的混乱了,一会SOA是HE.NET一会是DNSPOD的,所以这个问题还是要尽快更正的。

 

其实稍微有些高级的域名DNS服务器都提供Primary DNS(Master DNS)和Secondary DNS(Slave DNS),顾名思义,域名NS分为两种模式,一种是首要DNS服务器(Primary/Master),一种是辅助DNS服务器(Secondary/Slave),也称为主DNS和从DNS。之所以前面那篇文章介绍不能混用,是因为不能混用多个不同的主DNS服务器,因为一个主DNS服务器拥有一个起始授权机构(SOA),多个主DNS混用必然导致SOA混乱,进而容易造成解析混乱。假如我们想利用多家DNS服务商进行冗余解析,那该怎么办呢?其实很简单,我们只需要保证一个Primary DNS,其余的都是Secondary DNS就可以了,对于不同的DNS服务商来说,从属DNS和主要DNS通讯的方式就是AXFR。什么是AXFR,准确的说AXFR是一种请求(request),是指从DNS服务器请求在主DNS服务器上更新信息的一类域名系统的请求。也就是说我们只需要更新主DNS的解析设置,相关的设置将在设定的时间内被从DNS抓取,所以我们也没有必要再去设置从DNS了。相关的操作又称为Zone Transfer。

 

国内支持这项服务的免费DNS较少,至少目前我还没有发现,如果你知道的话可以分享一下。国外支持Secondary DNS的免费DNS服务比较多,比如像著名的HE.NET,你可以用Free Secondary DNS或者Free Slave DNS为关键字去谷歌搜索一下就能找到一些,关键是好用的免费Primary DNS就比较少了,尤其是支持AXFR的那种,在这里我推荐zoneedit.com的服务,免费账户限制域的数量,创建一个新域后到Advanced栏目下,找到Allow-transfer,这里就可以设置允许访问的从DNS权限,只要把你所期望的从DNS的IP地址填进去即可(用英文分号;分割),当然你所申请从DNS的供应商会告诉你允许哪些IP访问。然后在从DNS那里设置zoneedit.com的NS,拥有SOA的那个NS,基本上是数字比较小的,比如我有两个NS,ns4.zoneedit.com和ns12.zoneedit.com,基本上从DNS要访问的就是ns4.zoneedit.com了。

ZoneEdit allow DNS Transfer.png

设置完成后,稍等片刻,基本上所有的从DNS就会自动同步了,同样也不会出现SOA混乱了,同步会共用一个SOA,并且序列号也会统一,以后要修改,也只要修改主DNS即可。