王欽國
摘 要: 隨著學校信息化的建設,越來越多的學校架設自己的網站與學生對接,為了方便使用和快速解析,配置私有DNS服務器專門用來解析私有網站必不可少。但在私有DNS和公有DNS作為主備使用時,首選DNS卻不工作了。作者以五個方案探究DNS的解析,試圖解決以上問題。
關鍵詞: DNS Wireshark 遞歸 迭代
筆者作為學校信息化建設的成員,主要從事學校網絡服務器的維護和建設,在工作中積累了許多相關經驗。為了解決這個問題,筆者專門使用Wireshark抓包探究DNS是如何解析的。
在實際工作中,筆者用了三個測試域名,分別是www.testwjzjzx.cn(公網上沒有注冊),www.wjzjzx.cn(學校域名,公網注冊,在校內私有DNS服務器192.168.28.130上注冊),www.qq.com(公網注冊),以下面幾個方案進行探究。
方案1:一般情況下校內PC端都配置至少一個公網的DNS地址,我校的DNS地址為221.228.255.1(電信)。通過Wireshark抓包發現在僅有公網DNS地址的情況下,在校內上這三個域名的數據分別如下圖:
因為www.testwjzjzx.cn是公網沒有注冊的,所以反饋No such name;而其他二個域名是在公網注冊過的,所以公網DNS能解析到,但是不是這個DNS直接解析的,還不能下結論,因為DNS服務器默認是遞歸查詢,可能是其他公網DNS服務器查詢的結果反饋給221.228.255.1這個地址。
方案2:為了方便使用,于是配置了一臺私有的DNS服務器192.168.28.130,專門用來解析私有網站。同時加快域名解析和出口故障時校內域名還能正常使用,所以對學校注冊的所有公有域名在校內DNS服務器上也注冊了。本意就是先校內解析,解析不成功,再公網解析。于是在學校DHCP服務器上分發DNS地址時,首選DNS是校內DNS地址192.168.28.130,備用DNS是公網DNS地址221.228.255.1。
從三個域名的解析可以看到,三個域名都是由備用域名221.228.255.1解析的,首選域名192.168.28.130根本就沒有起作用。問題也就在這里出現,如果首選DNS不能解析,就應該找備用DNS。但www.testwjzjzx.cn和www.wjzjzx.cn在首選DNS的服務器上都是有對應的解析的,那么理應找首選DNS解析,而不是現在只用備用DNS解析。
方案3:在首選和備用DNS都存在的情況下,首選域名不起作用,為了檢查首選DNS能不能起作用,于是在PC端只設置一個首選DNS地址192.168.28.130。
從這里可以看到,三個域名都是由方案2中不起作用的首選DNS地址192.168.28.130解析的,也就是這個DNS服務器是可以工作的,但只是在PC端只配置它的時候可以用。所以在方案2中這個DNS作為首選DNS不起作用就很矛盾。而且在這種情況下,這三個網址打開的速度是相當慢的,尤其是公網域名www.qq.com,最初的幾個查詢根本不起作用,最后還是由8.8.8.8解析完成。從下面的方案中我們可以得知8.8.8.8是怎么來的。
方案4:在之前的方案中,我們發現如果只用一個私有DNS地址,則是可以實現先解析校內私有域名的,只是上公網會很慢。但如果添加備用公網DNS地址,則又會導致首選的私有DNS地址失效。于是就計劃把公網DNS地址配置為私有DNS的轉發器地址。
從這里可以看到,三個域名都是私有DNS地址192.168.28.130解析的,而且公網地址www.qq.com也是由這個地址反饋的。但實際情況是私有DNS服務器上是沒有這個地址的解析,也就是說這個私有DNS地址是不能解析這個公網地址的,是它轉發給其他DNS代為解析,然后再發回本地私有DNS地址,這就是DNS的遞歸查詢。到這里其實已經實現學校的需求,所有域名先由私有DNS解析再由公網DNS解析。
方案5:在方案4中發現不管是私有域名還是公有域名最終都是由私有DNS解析的,為了更好地發掘www.qq.com到底是誰解析的,作者在私有DNS服務器上禁用遞歸。
從這里可以看到,在校內注冊的兩個域名都是由私有DNS地址192.168.28.130解析的,即使www.wjzjzx.cn在公網上也注冊過,私有DNS地址還是優先的。而對于www.qq.com這個公網地址,私有DNS多次解析都是不成功的,最終是由8.8.8.8解析的,應該是調用了根提示。從這里可以驗證方案4中雖然最終體現的是由私有DNS地址192.168.28.130解析的,其實還是公有地址解析的,這就是DNS的迭代查詢。
本文通過對三個域名在若干方案下DNS解析抓包分析得出結果如下:
(1)單一公網DNS不能解析私有域名,但可以解析公網域名。
(2)首選私有DNS,備用公網DNS,不能解析私有域名,但可以解析公網域名。
(3)單一私有DNS能先解析私有域名,再解析公網域名,只是訪問公網會很慢。
(4)單一私有DNS,轉發器配置公網DNS,能先解析私有域名,再解析公網域名,訪問公網正常。
(5)單一私有DNS,禁用遞歸,能先解析私有域名,再解析公網域名,只是訪問公網會很慢。
從結果可以看出,方案1和方案2結果是一樣的,也就是說如果配置私有DNS為首選,公網DNS為備用,私有DNS根本不起作用。方案3和方案5結果是一樣的,其實方案3就是DNS的遞歸過程,方案5就是DNS的迭代過程,方案3是PC端的私有DNS不能解析時,調用根提示讓其他DNS解析再發回給自己,自己再把解析結果給PC端,方案5只是私有DNS不能解析時,調用根提示讓其他DNS解析直接把結果給PC端,而根提示一般解析很慢的,所以方案3和方案5是一樣的,訪問公網會很慢。只有方案4是我們需要的,先是私有DNS解析,不能解析轉發給轉發器里的公網DNS,而這個公網DNS一般是ISP提供的最近的DNS服務器,所以解析一般都很快。