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 抓到.