第4季 DNS服務(wù)全攻略
第4季 DNS服務(wù)全攻略1 DNS原理1.1 DNS簡介DNS (Domain Name System )域名系統(tǒng),在TCP/IP網(wǎng)絡(luò)中有非常重要的地位,能夠提供域名與IP 地址的解析服務(wù)。1.2 域
第4季 DNS服務(wù)全攻略
1 DNS原理
1.1 DNS簡介
DNS (Domain Name System )域名系統(tǒng),在TCP/IP網(wǎng)絡(luò)中有非常重要的地位,能夠提供域名與IP 地址的解析服務(wù)。
1.2 域名空間
DNS 是一個分布式數(shù)據(jù)庫,命名系統(tǒng)采用層次的邏輯結(jié)構(gòu),如同一棵倒置的樹,這個邏輯的樹形結(jié)構(gòu)稱為域名空間,由于DNS 劃分了域名空間,所以各機(jī)構(gòu)可以使用自己的域名空間創(chuàng)建DNS 信息。
注:DNS 域名空間中,樹的最大深度不得超過127層,樹中每個節(jié)點最長可以存儲63個字符。
1)域和域名
DNS 樹的每個節(jié)點代表一個域,通過這些節(jié)點,對整個域名空間進(jìn)行劃分,成為一個層次結(jié)構(gòu)。域名空間的每個域的名字,通過域名進(jìn)行表示。域名通 常由一個完全正式域名(FQDN )標(biāo)識。FQDN 能準(zhǔn)確表示出其相對于DNS 域樹根的位置,也就是節(jié)點到DNS 樹根的完整表述方式,從節(jié)點到樹根采用反向 書寫,并將每個節(jié)點用“.”分隔,對于DNS 域google 來說,其完全正式域名(FQDN )為google.com 。
一個DNS 域可以包括主機(jī)和其他域(子域),每個機(jī)構(gòu)都擁有名稱空間的某一部分的授權(quán),負(fù)責(zé)該部分名稱空間的管理和劃分,并用它來命名DNS 域 和計算機(jī)。例如,google 為com 域的子域,其表示方法為google.com ,而www 為google 域中的Web ,可以使用www.google.com 表示。
注意:通常,F(xiàn)QDN 有嚴(yán)格的命名限制,長度不能超過256字節(jié),只允許使用字符a-z,0-9,A-Z 和減號(-)。點號(. )只允許在域名標(biāo)志之間(例如“google.com”)或者FQDN 的結(jié)尾使用。域名不區(qū)分大小。
2.Internet 域名空間
,Internet 域名空間結(jié)構(gòu)為一棵倒置的樹,并進(jìn)行層次劃分。由樹根到樹枝,也就是從DNS 根到下面的節(jié)點,按照不同的層次,進(jìn)行了統(tǒng)一的命 名。域名空間最頂層,DNS 根稱為根域(root )。根域的下一層為頂級域,又稱為一級域。其下層為二級域,再下層為二級域的子域,按照需要進(jìn)行規(guī)劃,可 以為多級。所以對域名空間整體進(jìn)行劃分,由最頂層到下層,可以分成:根域、頂級域、二級域、子域。并且域中能夠包含主機(jī)和子域。主機(jī)www 的FQDN 從最 下層到最頂層根域進(jìn)行反寫,表示為www.europe.example.com 。
Internet 域名空間的最頂層是根域(root ),其記錄著Internet 的重要DNS 信息,由Internet 域名注冊授權(quán)機(jī)構(gòu)管理,該機(jī)構(gòu)把域名空間各部分的管理責(zé)任分配給連接到Internet 的各個組織。
DNS 根域下面是頂級域,也由Internet 域名注冊授權(quán)機(jī)構(gòu)管理。共有3種類型的頂級域。
組織域:采用3個字符的代號,表示DNS 域中所包含的組織的主要功能或活動。比如com 為商業(yè)機(jī)構(gòu)組織,edu 為教育機(jī)構(gòu)組織,gov 為政府機(jī)構(gòu)組織,mil 為軍事機(jī)構(gòu)組織,net 為網(wǎng)絡(luò)機(jī)構(gòu)組織,org 為非營利機(jī)構(gòu)組織,int 為國際機(jī)構(gòu)組織。
地址域:采用兩個字符的國家或地區(qū)代號。如cn 為中國,kr 為韓國,us 為美國。 反向域:這是個特殊域,名字為in-addr.arpa ,用于將IP 地址映射到名字(反向查詢)。
對于頂級域的下級域,Internet 域名注冊授權(quán)機(jī)構(gòu)授權(quán)給Internet 的各種組織。當(dāng)一個組織獲得了對域名空間某一部分的授權(quán)后,該組織就負(fù)責(zé)命名所分配的域及其子域,包括域中的計算機(jī)和其他設(shè)備,并管理分配的域中主機(jī)名與IP 地址的映射信息。
1.3 區(qū)(Zone)
區(qū)是DNS 名稱空間的一個連續(xù)部分,其包含了一組存儲在DNS 服務(wù)器上的資源記錄。每個區(qū)都位于一個特殊的域節(jié)點,但區(qū)并不是域。DNS 域是名 稱空間的一個分支,而區(qū)一般是存儲在文件中的DNS 名稱空間的某一部分,可以包括多個域。
,一個域可以再分成幾部分,每個部分或區(qū)可以由一臺DNS 服務(wù)器控 制。使用區(qū)的概念,DNS 服務(wù)器回答關(guān)于自己區(qū)中主機(jī)的查詢,它是哪個區(qū)的授權(quán)服務(wù)器。
1.4 主域名服務(wù)器與輔助域名服務(wù)器
DNS 服務(wù)器可以不存儲任何區(qū)的信息或者存儲一個或多個區(qū)的信息。當(dāng)DNS 服務(wù)器接收到DNS 查詢時,它檢索它的本地區(qū)以定位所請求的信息。如 果因為服務(wù)器不是所DNS 域的授權(quán)服務(wù)器,從而沒有所請求域的數(shù)據(jù)而使用檢索失敗,服務(wù)器就檢查它的高速緩存并與其他DNS 服務(wù)器通信以解析該請求,或者 把客戶機(jī)提交給另一個可能知道答案的DNS 服務(wù)器。
DNS 服務(wù)器可以管理主區(qū)和輔助區(qū)。用戶可以把服務(wù)器配置成管理多個不同的主區(qū)和輔助區(qū),以盡量接近實際情況,這意味著服務(wù)器可能管理一個區(qū)的 主拷貝和另一個區(qū)的輔助拷貝,或只管理一個區(qū)的主拷貝和輔助拷貝。對每個區(qū),管理其主區(qū)的計算機(jī)是該區(qū)的主服務(wù)器,管理其輔助區(qū)的服務(wù)器是該區(qū)的輔助服務(wù) 器。
主區(qū)是本地更新的,在區(qū)數(shù)據(jù)改變時,例如把該區(qū)的某個部分授權(quán)給另一臺DNS 服務(wù)器,或在區(qū)中添加資源記錄,這些改動必須在該區(qū)的主DNS 服務(wù)器上進(jìn)行,以便新信息能加進(jìn)本地區(qū)。
相反,輔助區(qū)是從其他服務(wù)器復(fù)制的。在輔助服務(wù)器上定義區(qū)時,區(qū)配置有服務(wù)器的IP ,輔助區(qū)就是從該地址復(fù)制信息。復(fù)制區(qū)文件的服務(wù)器可以是該區(qū)的主服務(wù)器或輔助服務(wù)器,有時稱為輔助區(qū)的主控服務(wù)器。
當(dāng)區(qū)的輔助服務(wù)器啟動時,它與該區(qū)的主控服務(wù)器進(jìn)行連接并啟動一次區(qū)傳輸,區(qū)輔助服務(wù)器定期與區(qū)主控服務(wù)器通信,查看區(qū)數(shù)據(jù)是否改變。如果改變了,它就啟動一次區(qū)傳輸。
每個區(qū)必須有主服務(wù)器,另外每個區(qū)至少要有一臺輔助服務(wù)器,否則如果該區(qū)的主服務(wù)器崩潰了,就無法解析該區(qū)的名稱。
輔助服務(wù)器的優(yōu)點:
1)容錯能力
配置輔助服務(wù)器后,在該區(qū)主服務(wù)器崩潰的情況下,客戶機(jī)仍能解析該區(qū)的名稱。一般把區(qū)的主服務(wù)器和區(qū)的輔助服務(wù)器安裝在不同子網(wǎng)上,這樣如果到一個子網(wǎng)的連接中斷,DNS 客戶機(jī)還能直接查詢另一個子網(wǎng)上的名稱服務(wù)器。
2)減少廣域鏈路的通信量
如果某個區(qū)在遠(yuǎn)程有大量客戶機(jī),用戶就可以在遠(yuǎn)程添加該區(qū)的輔助服務(wù)器,并把遠(yuǎn)程的客戶機(jī)配置成先查詢這些服務(wù)器,這樣就能防止遠(yuǎn)程客戶機(jī)通過慢速鏈路通信來進(jìn)行DNS 查詢。
3)減輕主服務(wù)器的負(fù)載
輔助服務(wù)器能回答該區(qū)的查詢,從而減少該區(qū)主服務(wù)器必須回答的查詢數(shù)。
1.6 DNS查詢原理及流程
1)DNS 相關(guān)概念
(1)DNS 服務(wù)器
運(yùn)行DNS 服務(wù)器程序的計算機(jī),儲存DNS 數(shù)據(jù)庫信息。DNS 服務(wù)器會嘗試解析客戶機(jī)的查詢請求。在解答查詢時,如果DNS 服務(wù)器能提供所請求 的信息,就直接回應(yīng)解析結(jié)果,如果該DNS 服務(wù)器沒有相應(yīng)的域名信息,則為客戶機(jī)提供另一個能幫助解析查詢的服務(wù)器地址,如果以上兩種方法均失敗,則回應(yīng) 客戶機(jī)沒有所請求的信息或請求的信息不存在。
(2)DNS 緩存
,DNS 服務(wù)器在解析客戶機(jī)請求時,如果本地沒有該DNS 信息,則可以會詢問其他DNS 服務(wù)器,當(dāng)其他域名服務(wù)器返回查詢結(jié)果時,該DNS 服務(wù)器 會將結(jié)果記錄在本地的緩存中,成為DNS 緩存。當(dāng)下一次客戶機(jī)提交相同請求時,DNS 服務(wù)器能夠直接使用緩存中的DNS 信息進(jìn)行解析。
(3)資源記錄
DNS 服務(wù)器的信息數(shù)據(jù),按照分類進(jìn)行存儲,能夠解析客戶端的DNS 請求。
(4)區(qū)文件
包含區(qū)資源記錄的文件,選擇DNS 服務(wù)器為授權(quán)服務(wù)器,管理該區(qū)域。在大部分DNS 實現(xiàn)中,用文本文件實現(xiàn)區(qū)。
2)遞歸查詢和迭代查詢
(1)遞歸查詢
遞歸查詢是一種DNS 服務(wù)器的查詢模式,在該模式下DNS 服務(wù)器接收到客戶機(jī)請求,必須使用一個準(zhǔn)確的查詢結(jié)果回復(fù)客戶機(jī)。如果DNS 服務(wù)器本地沒有存儲查詢DNS 信息,那么該服務(wù)器會詢問其他服務(wù)器,并將返回的查詢結(jié)果提交給客戶機(jī)。
(2)迭代查詢
DNS 服務(wù)器另外一種查詢方式為迭代查詢,DNS 服務(wù)器會向客戶機(jī)提供其他能夠解析查詢請求的DNS 服務(wù)器地址,當(dāng)客戶機(jī)發(fā)送查詢請求 時,DNS 服務(wù)器并不直接回復(fù)查詢結(jié)果,而是告訴客戶機(jī)另一臺DNS 服務(wù)器地址,客戶機(jī)再向這臺DNS 服務(wù)器提交請求,依次循環(huán)直到返回查詢的結(jié)果為止。
3)DNS 查詢流程
(1)DNS 域名解析工作原理
<1> 客戶機(jī)提交域名解析請求,并將該請求發(fā)送給本地的域名服務(wù)器。
<2> 當(dāng)本地的域名服務(wù)器收到請求后,就先查詢本地的緩存。如果有查詢的DNS 信息記錄,則直接返回查詢的結(jié)果。如果沒有該記錄,本地域名服務(wù)器就把請求發(fā)給根域名服務(wù)器。
<3> 根域名服務(wù)器再返回給本地域名服務(wù)器一個所查詢域的頂級域名服務(wù)器的地址。
,<4> 本地服務(wù)器再向返回的域名服務(wù)器發(fā)送請求。
<5> 接收到該查詢請求的域名服務(wù)器查詢其緩存和記錄,如果有相關(guān)信息則返回客戶機(jī)查詢結(jié)果,否則通知客戶機(jī)下級的域名服務(wù)器的地址。
<6> 本地域名服務(wù)器將查詢請求發(fā)送給返回的DNS 服務(wù)器。
<7> 域名服務(wù)器返回本地服務(wù)器查詢結(jié)果(如果該域名服務(wù)器不包含查詢的DNS 信息,查詢過程將重復(fù)<6>、<7>步驟,直到返回解析信息或解析失敗的回應(yīng))。
<8> 本地域名服務(wù)器將返回的結(jié)果保存到緩存,并且將結(jié)果返回給客戶機(jī)。
(2)域名解析實例
假設(shè)客戶機(jī)使用電信ADSL 接入Internet ,電信為其分配的DNS 服務(wù)器地址為219.141.140.10,域名解析過程如下哈
~
<1> 客戶機(jī)向本地的域名服務(wù)器219.141.140.10發(fā)送解析www.google.com 請求。
<2> 當(dāng)本地的域名服務(wù)器收到請求后,就先查詢本地的緩存。如果有查詢的DNS 信息記錄,則直接返回查詢的結(jié)果。如果沒有該記錄,本地域名服務(wù)器就把解析www.google.com 請求發(fā)給根域名服務(wù)器。
<3> 根域名服務(wù)器收到請求后,根據(jù)完全正式域名FQDN ,判斷該域名屬于com 域,查詢所有的com 域DNS 服務(wù)器的信息,并返回給本地域名服務(wù)器。
<4> 本地域名服務(wù)器219.141.140.10收到回應(yīng)后,先保存返回的結(jié)果,再選擇一臺com 域的域名服務(wù)器,向其提交解析域名www.google.com 的請求。
<5> com域名服務(wù)器接收到該查詢請求后,判斷該域名屬于google.com 域,通過查詢本地的記錄,列出管理google 域的域名服務(wù)器信息,然后將查詢結(jié)果返回給本地的域名服務(wù)器219.141.140.10。
<6> 本地域名服務(wù)器219.141.140.10收到回應(yīng)后,先緩存返回的結(jié)果,再向google.com 域的服務(wù)器發(fā)出請求解析域名www.google.com 的數(shù)據(jù)包。
<7> 域名服務(wù)器google.com 收到請求后,查詢DNS 記錄中的www 主機(jī)的信息,并將結(jié)果返回給本地服務(wù)器219.141.140.10。
<8> 本地域名服務(wù)器將返回的查詢結(jié)果保存到緩存,并且將結(jié)果返回給客戶機(jī)。
1.7 正向解析與反向解析
,1)正向解析
正向解析是指域名到IP 地址的解析過程。
2)反向解析
反向解析是從IP 地址到域名的解析過程。反向解析的作用為服務(wù)器的身份驗證。
1.8 資源記錄
為了將名字解析為IP 地址,服務(wù)器查詢它們的區(qū)(又叫DNS 數(shù)據(jù)庫文件或簡單數(shù)據(jù)庫文件)。區(qū)中包含組成相關(guān)DNS 域資源信息的資源記錄(RR )。例如,某些資源記錄把友好名字映射成IP 地址,另一些則把IP 地址映射到友好名字。 某些資源記錄不僅包括DNS 域中服務(wù)器的信息,還可以用于定義域,即指定每臺服務(wù)器授權(quán)了哪些域,這些資源記錄就是SOA 和NS 資源記錄。
1)SOA 資源記錄
每個區(qū)在區(qū)的開始處都包含了一個起始授權(quán)記錄(Start of Authority Record ), 簡稱SOA 記錄。SOA 定義了域的全局參數(shù),進(jìn)行整個域的管理設(shè)置。一個區(qū)域文件只允許存在唯一的SOA 記錄。
2)NS 資源記錄
名稱服務(wù)器(NS )資源記錄表示該區(qū)的授權(quán)服務(wù)器,它們表示SOA 資源記錄中指定的該區(qū)的主和輔助服務(wù)器,也表示了任何授權(quán)區(qū)的服務(wù)器。每個區(qū)在區(qū)根處至少包含一個NS 記錄。
3)A 資源記錄
地址(A )資源記錄把FQDN 映射到IP 地址,因而解析器能查詢FQDN 對應(yīng)的IP 地址。
4)PTR 資源記錄
相對于A 資源記錄,指針(PTR )記錄把IP 地址映射到FQDN 。
5)CNAME 資源記錄
規(guī)范名字(CNAME )資源記錄創(chuàng)建特定FQDN 的別名。用戶可以使用CNAME 記錄來隱藏用戶網(wǎng)絡(luò)的實現(xiàn)細(xì)節(jié),使連接的客戶機(jī)無法知道。
6)MX 資源記錄
郵件交換(MX )資源記錄為DNS 域名指定郵件交換服務(wù)器。郵件交換服務(wù)器是為DNS 域名處理或轉(zhuǎn)發(fā)郵件的主機(jī)。處理郵件指把郵件投遞到目的地 或轉(zhuǎn)交另一不同類型的郵件傳送者。轉(zhuǎn)發(fā)郵件指把郵件發(fā)送到最終目的服務(wù)器,用簡單郵件傳輸協(xié)議SMTP 把郵件發(fā)送給離最終目的地最近的郵件交換服務(wù)器,或 使郵件經(jīng)過一定時間的排隊。
DNS 理論和概念了解得差不多了,下面我們開始DNS 安裝和配置哈~~~ 2 安裝DNS 服務(wù)
2.1 BIND簡介
BIND 全稱為Berkeley Internet Name Domain(伯克利因特網(wǎng)名稱域系統(tǒng)) 。BIND 主要有三個版本:BIND4、BIND8、BIND9。
BIND8融合了許多提高效率、穩(wěn)定性和安全性的技術(shù),而BIND9增加了一些超前的理念:IPv6支持、公開密鑰加密、多處理器支持、線程安全操作、增量區(qū)傳送等等。
2.2 DNS所需軟件
bind-9.3.3-10.el5.i386.rpm :該包為DNS 服務(wù)的主程序包。服務(wù)器端必須安裝該軟件包,后面的數(shù)字為版本號。
,bind-utils-9.3.3-10.el5.i386.rpm :該包為客戶端工具,默認(rèn)安裝,用于搜索域名指令。
2.3 DNS的安裝
首先我們來看下RHEL5預(yù)裝了哪些包哈,rpm -qa | grep bind
下面我們使用rpm 命令安裝bind 主程序包
查看下效果
3 DNS常規(guī)服務(wù)器配置
一個比較簡單的DNS 服務(wù)器設(shè)置流程主要分為以下三步哈:
1)建立主配置文件named.conf ,該文件的最主要目的是設(shè)置DNS 服務(wù)器能夠管理哪些區(qū)域(Zone )以及這些區(qū)域所對應(yīng)的區(qū)域文件名和存放路徑。
2)建立區(qū)域文件,按照named.conf 文件中指定的路徑建立區(qū)域文件,該文件主要記錄該區(qū)域內(nèi)的資源記錄。例如:www.51cto.com 對應(yīng)的IP 地址為211.103.156.229。
3)重新加載配置文件或重新啟動named 服務(wù)使用配置生效。
下面我們來看一個具體實例哈~~~
,1)客戶端需要獲得www.michael.com 這臺主機(jī)所對應(yīng)的IP 地址,將查詢請求發(fā)送給DNS 服務(wù)器。
2)服務(wù)器接收到請求后,查詢主配置文件named.conf ,檢查是否能夠管理michael.com 區(qū)域。而named.conf 中記錄著能夠解析michael.com 區(qū)域,并提供michael.com 區(qū)域文件所在路徑及文件名。
3)服務(wù)器則根據(jù)named.conf 文件中提供的路徑和文件名找到michael.com 區(qū)域所對應(yīng)的配置文件,并從中找到www.michael.com 主機(jī)所對應(yīng)的IP 地址。
4)將查詢結(jié)果反饋給客戶端,完成整個查詢過程。
3.1 主配置文件named.conf
named.conf 是BIND 的核心配置文件,它包含了BIND 的基本配置,但其并不包括區(qū)域數(shù)據(jù)。named.conf 文件定義了DNS 服 務(wù)器的工作目錄所在位置,所有的區(qū)域數(shù)據(jù)文件都存放在該目錄中,該文件還定義了DNS 服務(wù)器能夠管理哪些區(qū)域,如果DNS 服務(wù)器可以管理某個區(qū)域,它將完 成該區(qū)域內(nèi)的域名解析工作。 如果沒有安裝caching-nameserver-9.3.3-10.el5.i386.rpm 包,則我們需要手動建立named.conf 文件,為了便于管理,通常把該文件建立在/etc目錄下哈
~
當(dāng)手動建立好named.conf 文件后,此文件是空白滴,和其他配置文件差不多,named.conf 配置文件分為整體和局部兩個部分。
,區(qū)域名為服務(wù)器要管理區(qū)域的名稱,如果添加了一個區(qū)域,并且該區(qū)域存在相應(yīng)資源記錄,那么DNS 服務(wù)器就可以解析該區(qū)域的DNS 信息。
type 字段指定區(qū)域的類型,對于區(qū)域的管理至關(guān)重要,一共分為六種: Master :主DNS 服務(wù)器:擁有區(qū)域數(shù)據(jù)文件,并對此區(qū)域提供管理數(shù)據(jù)
Slave :輔助DNS 服務(wù)器:擁有主DNS 服務(wù)器的區(qū)域數(shù)據(jù)文件的副本,輔助DNS 服務(wù)器會從主DNS 服務(wù)器同步所有區(qū)域數(shù)據(jù)。
Stub :stub 區(qū)域和slave 類似,但其只復(fù)制主DNS 服務(wù)器上的NS 記錄而不像輔助DNS 服務(wù)器會復(fù)制所有區(qū)域數(shù)據(jù)。
Forward :一個forward zone是每個域的配置轉(zhuǎn)發(fā)的主要部分。一個zone 語句中的type forward可以包括一個forward 和/或forwarders 子句,它會在區(qū)域名稱給定的域中查詢。如果沒有forwarders 語句或者 forwarders是空表,那么這個域就不會有轉(zhuǎn)發(fā),消除了options 語句中有關(guān)轉(zhuǎn)發(fā)的配置。
Hint :根域名服務(wù)器的初始化組指定使用線索區(qū)域hint zone ,當(dāng)服務(wù)器啟動時,它使用根線索來查找根域名服務(wù)器,并找到最近的根域名服務(wù)器列表。如果沒有指定class IN的線索區(qū)域,服務(wù)器使用編譯時默認(rèn)的根服務(wù)器線索。不是IN 的類別沒有內(nèi)置的默認(rèn)線索服務(wù)器。
Delegation-only :用于強(qiáng)制區(qū)域的delegation .ly狀態(tài)。
3.2 配置正向解析區(qū)域
授權(quán)DNS 服務(wù)器管理michael.com 區(qū)域,并把該區(qū)域的區(qū)域文件命名為michael.com
1)建立主配置文件named.conf
vim /etc/named.conf
directory 路徑名:用于定義服務(wù)器的工作目錄,該目錄存放區(qū)域數(shù)據(jù)文件。配置文件中所有相對路徑的路徑名都基于此目錄。如果沒有指定,默認(rèn)的是BIND 啟動的目錄。
2)建立michael.com 區(qū)域文件
vim /var/named/michael.com
3.3 配置反向解析區(qū)域
1) 添加反向解析區(qū)域
vim /etc/named.conf
2)建立反向區(qū)域文件
vim /var/named/named.0.168.192