DNS原理與實(shí)踐詳解
DNS 原理與配置指導(dǎo)手冊(cè)(一)基礎(chǔ)、概覽本系列主要講述有關(guān)Windows 下DNS 服務(wù)器的相關(guān)知識(shí)點(diǎn),由于DNS 和AD 結(jié)合異常緊密,所以與AD 相關(guān)的DNS 應(yīng)用和知識(shí)將在AD 專欄中講述。此
DNS 原理與配置指導(dǎo)手冊(cè)
(一)基礎(chǔ)、概覽
本系列主要講述有關(guān)Windows 下DNS 服務(wù)器的相關(guān)知識(shí)點(diǎn),由于DNS 和AD 結(jié)合異常緊密,所以與AD 相關(guān)的DNS 應(yīng)用和知識(shí)將在AD 專欄中講述。
此為本系列的第一節(jié)。
我想沒有什么人在訪問的時(shí)候會(huì)直接輸入IP 地址,取而代之的是輸入一串簡單,容易記憶的字符,有數(shù)字的,如;只是字符轉(zhuǎn)換為IP 地址這部分工作由DNS 服務(wù)器代勞了而已,而這個(gè)轉(zhuǎn)換過程對(duì)于客戶端來講是完全透明的。 在講述DNS 之前,先讓我們來認(rèn)識(shí)一下幾個(gè)與域名相關(guān)的概念。 也有純字母的,如,只要網(wǎng)絡(luò)連接沒問題,就可以直接訪問對(duì)應(yīng)的網(wǎng)站。但在理論上訪問網(wǎng)址依然需要用到IP 地址的,
什么是域名?
域名,即DomainName ,準(zhǔn)確是說它是由英文字母、阿拉伯?dāng)?shù)字以及橫" -" 組成的一串字符,且英文不區(qū)分大小寫,通常一個(gè)域名可以分為主體和后綴2部分,各部分由一個(gè)小點(diǎn). 隔開。以常見的163.com 為例,163是這個(gè)域名的主體,而后面的.com 表示這個(gè)域名屬于國際域名,常見的還有.net 、.cn 等等。這兩部分構(gòu)成了是一個(gè)完整的域名。有朋友可能問了,那我們常見的www.163. 又是什么呢。從整體上來說,這是一個(gè)URL 地址,而非域名。細(xì)化來講,WWW 是一個(gè)主機(jī)名稱,在這臺(tái)主機(jī)上運(yùn)行著網(wǎng)頁服務(wù)器,當(dāng)客戶端輸入www.163.com 時(shí),系統(tǒng)會(huì)在某個(gè)系統(tǒng)上查詢這個(gè)地址所對(duì)應(yīng)的IP 地址,如果一切正常則會(huì)很快返回這臺(tái)主機(jī)的I P 地址,之后瀏覽器會(huì)向這個(gè)地址發(fā)起HTTP 請(qǐng)求進(jìn)行網(wǎng)頁解析。在此過程中提到的“某個(gè)系統(tǒng)”就是我們要講述的DNS 系統(tǒng)。 什么是DNS ?
通常,我們定位一臺(tái)公網(wǎng)計(jì)算機(jī)主要依靠的是IP 地址,倘若這臺(tái)計(jì)算機(jī)正在對(duì)外提供網(wǎng)頁瀏覽服務(wù),IP 為1.1.1.1。訪問時(shí)可以直接輸入IP 地址即可,因?yàn)檫@個(gè)地址簡單好記,但網(wǎng)絡(luò)上的計(jì)算機(jī)千千萬,IP 地址又是一串無序的數(shù)字,單憑人腦去記憶這些數(shù)字,顯然不現(xiàn)實(shí),所以急需一種途徑或者方法將我們從數(shù)字苦海中解救出來,經(jīng)過不斷地探索,人們終于找到一個(gè)很好的解決辦法,那就是通過將一些字符進(jìn)行有的規(guī)律組合和拼湊,使其可以表達(dá)出一定的含義,然后將這些名詞與服務(wù)器的IP 地址對(duì)應(yīng)起來,我們就可以把這些組合成為域名。當(dāng)然域名的定義規(guī)范遠(yuǎn)遠(yuǎn)要比這里談到的嚴(yán)謹(jǐn)和規(guī)范。那這部分工作或是功能由誰來實(shí)現(xiàn)呢,這就引出了我們本系列的主角:DNS 。在今天看來,DNS 系統(tǒng)工作的正常與否,直接關(guān)系到整個(gè)互聯(lián)網(wǎng)系統(tǒng)的安全和穩(wěn)定。
DNS 即域名解析系統(tǒng)。前面已經(jīng)提到,它可以將域名轉(zhuǎn)換成IP 地址,反之亦可。當(dāng)然這也是DNS 最基本的功能之一。 談到DNS 就不能不說起域名,概念可以參考上面一小節(jié),那這兩者是怎樣結(jié)合在一起的呢?我們先來看一下INTERNET 域名的整體結(jié)構(gòu)。
在整個(gè)INTERNET 網(wǎng)絡(luò)中,域名占據(jù)著極其重要的地位,因?yàn)樗兄粋€(gè)很嚴(yán)謹(jǐn)?shù)慕鹱炙频膶蛹?jí)結(jié)構(gòu)模式,通常又被稱為命名空間。我們?cè)陂喿xDNS 相關(guān)資料時(shí),會(huì)經(jīng)常碰到“命名空間”這個(gè)詞。那如何去理解呢。來看下面一張圖,借此來幫助大家更好的理解命名空間的概念。
,從這個(gè)圖中,我們可以大致了解域名體系的邏輯結(jié)構(gòu)。在最頂層的是根域名,圖中用一個(gè). 表示,在此基礎(chǔ)上延伸出其他所有的域名,嚴(yán)格意義上來說,我們?cè)跁鴮懹蛎臅r(shí)候都應(yīng)該在最后帶上一個(gè). ,這樣才是最完整的域名表達(dá)方式,但這樣明顯過于繁瑣,況且按照書寫反而無法正常訪問網(wǎng)頁。
比如訪問網(wǎng)易我輸入
,可以看到結(jié)果是“拒絕訪問”,有的地址加上一個(gè). 再訪問會(huì)自動(dòng)跳轉(zhuǎn)。
所以這里只是想讓大家對(duì)此有更多了解。 在根域名下就是頂級(jí)域名,大致分為三大類,圖中每一類都舉出了3例子作為代表,其實(shí)還單獨(dú)的com 是沒有意義的,這里我省略了最后的一個(gè)點(diǎn)。在.com 下我列出了三個(gè)常見的二級(jí)名稱,比如.163、.QQ 等,以此類推,后面可能會(huì)有很多層這樣的結(jié)構(gòu)。但在名稱上并非是三級(jí)、四級(jí)等,而統(tǒng)一稱為子域。下一層為上一層的子域,在.163.com 這個(gè)域名層級(jí)關(guān)系中,news 就是這與域名的子域名,同理v 就是.news.163.com 的子域,以此類推。但我們?cè)跁鴮懙臅r(shí)候是從最低一級(jí)的寫起,直至頂級(jí)域名,而DNS 查詢和解析順序正好和這個(gè)相反。
從圖中我們可以看到,整個(gè)域名體系結(jié)構(gòu)是非常有層次關(guān)系和等級(jí)限定的,每一個(gè)域名都有類似這樣的結(jié)構(gòu),那么廣泛的看,整個(gè)域名體系就是一個(gè)連續(xù)的、層級(jí)關(guān)系的邏輯的立體名稱空間。知道這個(gè)概念對(duì)我們理解域名以及后面的DNS 都非常有幫助。大家應(yīng)該有這樣的反應(yīng),域名是以特定名稱為起點(diǎn)的、立體的、名字空間。是一個(gè)很連續(xù)的結(jié)果,在這里我不厭其煩的把這些關(guān)鍵字眼重復(fù)再重復(fù),目的就是為了加深大家的印象。
因?yàn)橹挥薪⒑昧撕暧^模型,這樣才可以更好的把握細(xì)節(jié)知識(shí)點(diǎn)。 也很多。頂級(jí)域名位于根域名之下,而在頂級(jí)域名下又有二級(jí)域名,我們以.com 為例,請(qǐng)大家留意,這里說的是.com ,而不是com ,
(二)理解計(jì)算機(jī)的主DNS 后綴選項(xiàng)
原本在這一節(jié)要講解DNS 的安裝,但我發(fā)現(xiàn)其實(shí)在此之前,還需要向大家說明幾個(gè)基本的概念,首先說到的是DNS 后綴。
在之前的基礎(chǔ)章節(jié)里,我們知道了一個(gè)域名可以分為主體和后綴2部分,這里的主機(jī)我們可以理解為一臺(tái)主機(jī)或者一個(gè)網(wǎng)絡(luò)終端的名稱,后綴則直接決定這個(gè)域名的性質(zhì)、類別等一些重要特征。我們這里會(huì)從單機(jī)入手,理解一下單擊里的DNS 后綴到底是怎么一回事,把這個(gè)弄清楚了,再去理解與AD 相結(jié)合的DNS 才會(huì)更容易。那單機(jī)的DNS 后綴在那里找呢?我們一起來看一下:
為了方便實(shí)驗(yàn),我做了一個(gè)拓?fù)鋱D,如下:
,上圖已經(jīng)將兩者的關(guān)系表述清楚了,XP2現(xiàn)在還是一臺(tái)普通的客戶端,為加入域。
我們打開XP2的屬性,在里面找一下它的DNS 后綴,如下圖:
從上圖我們可以看到,默認(rèn)情況下 計(jì)算機(jī)的DNS 后綴的空白的。但請(qǐng)大家注意,圖中的是主DNS 后綴,為什么是主呢?難道DNS 后綴還有主次之分??其實(shí)這樣的,這個(gè)里面的主DNS 后綴是針對(duì)這臺(tái)主機(jī)而言的,相比之下,每一個(gè)網(wǎng)卡也可以設(shè)置自己的DNS 后綴,而那些設(shè)置準(zhǔn)確來講是綁定某一網(wǎng)卡上的連接DNS 后綴,這部分內(nèi)容在后面還會(huì)詳解。
,我們已經(jīng)知道主DNS 后綴的位置了,那這里的設(shè)置到底有什么作用呢?其實(shí)是這樣的,我們可以利用一個(gè)命令來解答這個(gè)疑惑。P ING 命令的作用我想大家都很清楚,也是作為網(wǎng)絡(luò)連通性診斷的一個(gè)必備工具,當(dāng)我們用ping 命令去ping 一臺(tái)主機(jī)或一個(gè)地址會(huì)發(fā)生什么呢?
我們運(yùn)行ping xp2命令,看一下效果:
從上圖得知,XP2自動(dòng)獲取的IP 是192.168.1.2,請(qǐng)大家注意第三個(gè)紅框,
XP2 [192.168.1.2] ,前者是主機(jī)名,后者是對(duì)應(yīng)的IP 地址。這個(gè)解析過程是由系統(tǒng)本身完成的,我們也可以ping 一下它的NET BIOS 名稱,如下圖:
可以看到,最終結(jié)果都是一樣的,但不同的顯示對(duì)象有區(qū)別。這里存在著一個(gè)解析的過程,單單ping 本機(jī)比較難分析這個(gè)解析過程,我們?nèi)我鈖ing 一個(gè)名稱,然后用wireshark 來監(jiān)視這個(gè)過程,應(yīng)該會(huì)有更多的發(fā)現(xiàn)。
運(yùn)行ping XP3命令 ,看一下結(jié)果:
,顯然,結(jié)果是不通的,通過wireshark 的分析我們可以看到在這個(gè)過程中,系統(tǒng)會(huì)利用NBNS 服務(wù)來查找是否有名為XP3的主機(jī),如果沒有則返回一個(gè)信息,通知查詢者未能找到主機(jī)XP3。此時(shí),主DNS 后綴依然為空,我們是否可以這樣試想,如果主DNS 后綴不為空,在查詢時(shí)候某臺(tái)主機(jī)時(shí),是否會(huì)自動(dòng)將這個(gè)后綴添加到主機(jī)名之后呢,比如 后綴為 ms.local ,在查詢XP3時(shí),返回的結(jié)果就是ping xp3.ms.local 呢?我們來試一下,首先將主DNS 后綴改成 ms.local 并重啟。結(jié)果如下圖:
我們可以看到,計(jì)算機(jī)名也變成了xp2.ms.local 了,這個(gè)有點(diǎn)類似域內(nèi)的計(jì)算機(jī)名稱的樣式。我們現(xiàn)在再來ping 一下XP3,結(jié)果如下圖:
,可以看到,在圖形界面下僅僅提示找不到XP3這個(gè)主機(jī),而從抓包的情況來分析更明顯些,我們可以很清楚的看到當(dāng)提交此請(qǐng)求后,系統(tǒng)會(huì)向已配置的DNS 服務(wù)器(DHCP 自動(dòng)配置)發(fā)起解析請(qǐng)求,來查詢是否存在XP3.ms.local 這條記錄,經(jīng)過多次查詢后返回的結(jié)果如圖,結(jié)果是未能找到XP3主機(jī)。從這個(gè)實(shí)例我們可以看出,在名稱解析時(shí),系統(tǒng)會(huì)自動(dòng)加上之前已設(shè)置的主DNS 后綴,然后參與解析。當(dāng)在指定的DNS 服務(wù)器上找不到記錄時(shí)就會(huì)返回相應(yīng)的信息。反之,如果沒有配置DNS 服務(wù)器地址時(shí),系統(tǒng)只能通過N BNS 服務(wù)器利用廣播方式進(jìn)行查找了,具體如何查找可以參考之前的WINS 系列。
我們?cè)俳Y(jié)合現(xiàn)有的AD 域來看,在DC 上,肯定是無法解析到XP3這臺(tái)主機(jī),XP2也一樣,因?yàn)樵贒C 的DNS 上沒有XP2和XP 3的記錄信息。如果我們將XP2的主DNS 后綴改成和AD 域一樣,那么當(dāng)在XP2上ping win2k3時(shí),一定會(huì)成功,因?yàn)橹坝懻撨^,系統(tǒng)會(huì)自動(dòng)將其轉(zhuǎn)換為 win2k3.os.ad ,因?yàn)樵?92.168.1.1這臺(tái)服務(wù)器上有這條記錄,所以可以ping 同,反之在DC 上pi ng XP2則不行。因?yàn)樵贒NS 上并不存在xp2.os.ad 的記錄,之所以這個(gè)過程無法交互,是因?yàn)槲覀儾⒎前凑粘R?guī)方法將XP2注冊(cè)到DNS 服務(wù)器上,而僅僅是在本機(jī)上修改了主DNS 后綴,從某種程度上來說這僅僅是個(gè)假象而已。如果按照一般加域的步驟,相互通訊是沒有問題的,這個(gè)我們后面會(huì)討論到。
(三)理解計(jì)算機(jī)的多種DNS 后綴選項(xiàng)
上節(jié)介紹了計(jì)算機(jī)主DNS 后綴的一些內(nèi)容,今天這一節(jié)將繼續(xù)延伸此話題,同時(shí)也談到與之相關(guān)的其他概念。
本節(jié)的試驗(yàn)環(huán)境是一臺(tái)DC 和一臺(tái)客戶機(jī)相連,很簡單的拓?fù)洵h(huán)境。如下圖:
在WINS 系列中我們說到,當(dāng)利用ping 程序訪問某一名稱時(shí),如果本機(jī)設(shè)置了WINS 服務(wù)器,則會(huì)向此服務(wù)器發(fā)出解析請(qǐng)求,反之,系統(tǒng)將會(huì)利用NBNS 服務(wù)通過廣播的方式來解析此名稱。如下圖:
,但是,當(dāng)我們ping 一個(gè)類似域名結(jié)構(gòu)的名稱時(shí)候,比如 ping sss.com ,此時(shí)系統(tǒng)會(huì)分兩種情況進(jìn)行處理。
當(dāng)本機(jī)網(wǎng)卡屬性中未設(shè)置DNS 服務(wù)器時(shí),系統(tǒng)依舊會(huì)利用NBNS 服務(wù)進(jìn)行解析此名稱,盡管這個(gè)名稱看上去具有域名的結(jié)構(gòu)特征。如下圖:
從上圖可以看到,NBNS 服務(wù)試圖在解析sss.com 這個(gè)名詞,而不是一個(gè)域名,因?yàn)閷?duì)于NBNS 服務(wù)而言,只有名稱的概念,而不存在域名的概念。
當(dāng)我們?yōu)槠渑渲靡粋€(gè)合法且有效的DNS 服務(wù)器地址之后呢?測試結(jié)果如下圖:
剛開始,系統(tǒng)會(huì)向DNS 服務(wù)器發(fā)出標(biāo)準(zhǔn)的A 記錄查詢請(qǐng)求,看是否存在sss.com 這樣的A 記錄,經(jīng)過幾次嘗試以失敗告終,第四個(gè)數(shù)據(jù)包是由DNS 服務(wù)器發(fā)給客戶機(jī)的,所傳達(dá)的信息是“Server Failure”??梢娫谶@臺(tái)DNS 的區(qū)域里并不存在sss.com 這樣的A 記錄。
那這些內(nèi)容和我們今天要講的多種DNS 后綴有什么關(guān)聯(lián)呢?其實(shí)是這樣的,當(dāng)我們?yōu)橄到y(tǒng)配置了多種的DNS 后綴后,再去ping 某一名稱時(shí),系統(tǒng)會(huì)自動(dòng)在該名稱后添加上已設(shè)定的DNS 后綴,并對(duì)此名稱進(jìn)行解析,此時(shí)才是真正的對(duì)一個(gè)域名進(jìn)行解析,其中包括了主體名稱和設(shè)定的DNS 后綴。
,如何設(shè)置這些DNS 后綴呢?在Windows 系統(tǒng)中,有很多地方可以設(shè)置。下面我們一一進(jìn)行描述。
設(shè)定主DNS 后綴
從名稱上應(yīng)該可以看出,這個(gè)DNS 后綴的優(yōu)先級(jí)是很高的,因?yàn)檫@個(gè)設(shè)置是針對(duì)整個(gè)系統(tǒng)的,這一部分在上一節(jié)中也有提及。我們?cè)賮砘仡櫼幌略O(shè)置的過程。按照下圖找到如下位置:
這里就是設(shè)置本機(jī)的主DNS 后綴的地方。我們?cè)诖溯斎雖s.local 并重啟。
下面是設(shè)置的結(jié)果:
,大家可以看到,此時(shí)計(jì)算機(jī)全名已經(jīng)修改成了xp2.ms.local ,其中XP2是原來的計(jì)算機(jī)名稱。
此時(shí),我們?nèi)我鈖ing 一個(gè)名稱,比如 kkk ,看一下與之前的有什么變化。如下圖:
從上圖可以看到,在解析kkk 這個(gè)名稱的時(shí)候會(huì)自動(dòng)在后面加上ms.local 的主DNS 后綴進(jìn)行解析,類似的,我們輸入另一個(gè)名稱比則自動(dòng)加上并組合成【單名稱 . 主DNS 后綴】這樣的形式參與解析。
還有一點(diǎn)要提一下,如果我們把主DNS 后綴改成很DC 域名一樣,那么ping win2k3時(shí)就可以自動(dòng)替換成 ping win2k3.os.ad 了,因?yàn)镈NS 里有這條記錄,所以可以順ping 通了。
而類似這樣的單標(biāo)簽的名稱,系統(tǒng)統(tǒng)稱之為【不合格的名稱】。
除了在這里設(shè)置,還有其他地方嗎? 當(dāng)然有的。打開網(wǎng)卡屬性并點(diǎn)選【高級(jí)】,在【DNS 】選項(xiàng)卡中就可以看到了,如下圖: 如mmm ,也會(huì)得到同樣的結(jié)果。也就是說,當(dāng)我們輸入一個(gè)單標(biāo)簽的名稱時(shí),系統(tǒng)會(huì)自動(dòng)檢查此時(shí)是否設(shè)置有主DNS 后綴,如果有,