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