DNS的问题,通常都是因为管理的时候,没有细心的去设定,而产生的.下面,就来提几个常见的DNS错误.
1.没有增加SOA (start of authority)RR的serial值
这是最主要的DNS出错的原因.因为,serial 值没有增加,secondary server 就不会在 primary server的资料改变後随著更心.包括改变SOA里面其他的值,seconrary server自己并不会发觉.即使是修改SOA RR里面的资料,也都要记得去改 SOA RR的serial值.改了serial後,secondary到时後查出有增加,就会从primary作一次zone transfer.改了SOA RR後,最好去测试一下secondary server是不是有更新.目前有些工具程式可以帮忙检查.
2.在BIND中的资料後面,少打了一个点(.)
少打了一个点,看起来差不多.但是却造成了很大的问题.BIND的设定档案一定要小心的设定.要不然很可能产生以下的效果:
在sample.com.tw.这层:sample.com.tw IN NS ns.sample.com.tw却是代表:sample.com.tw.sample.com.tw.IN NS ns.sample.com.sample.com.tw.
--在com.tw这层,的确发生过这样的事情.
3.忘记设定reverseDNS(或称pointer,PTR)RR
很多系统,在有connection建立时,会花一段不短的时间.去查查client端的 Domain Name是否能够转成IP Address.(例:Telnet)另外一个例子是traceroute.当在traceroute时,所经过的router都会去查reverse,在台湾常常因为没有设,显示时就会delay.就是因为traceroute 会去查每个 hop 的 domain name.另外一个例子就是当连线到其它的h该host上就会纪录来源地.这时也要用PTR.== 参阅 RFC 1537,RFC 1713
4.DNS管理者的协调工作
要是parent跟chile zone的管理者(这层有可以有好几个)没有联络好,很可能,就会产生两种错误:lame delegations(不完整的授与)还有missing delegations(遗失的授与).lame delegations 的情况是,parent列出下面某个 domain 的 name server,但是其中可能有几台,没有这个zone的全部资料(authority的意义).要是parent列出的这些name server通通都没有 SOA(primary,secondary server都会有 SOA),这就成了missing delegations.最常遇到missing delegations的状况是这个单位改IP,但是又没有与上面一层通知.当然,也有一些程式可以帮忙找出lame and missiong delegations.
--事实上,从syslog中就可以找到一堆“Lame server on...“的讯息.当然,在make BIND时也可以关掉这些.
5.坏的resolv.conf设定
resolv.conf里面包含了local domain,当你没有把全部的domain name打出来时,就会自动加上去这个东西.然後机器就不会去查DNS而直接用这个domain name连出去了.要是resolv.conf 有不正确的 domain name entry,那就有可能连到一堆不存在的地方.(然後得到error.)
6.旧的 root cache 档案
root cache 档案里面会写 root domain 的DNS的 domain name 还有 IP,root cache并不是自己会去改变,更新的.而是要人工去设定.系统管理员要去注意是否有新增家 root server.要是一台 DNS 用了一个太旧的 root cache 档案,就有可能有些 domain 会查不到.最新的 root cache 档案可以从 ftp://rs.internic.net/domain/named.root 抓到.