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