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