目錄
什麼是DNS
DNS的解析方式
DNS的完全轉發和部分轉發
DNS(Domain Name System,域名系統),網際網路上作為域名和IP位址互相映射的一個分布式資料庫,能夠使使用者更友善的通路網際網路,而不用去記住能夠被機器直接讀取的IP數串。通過域名,最終得到該域名對應的IP位址的過程叫做域名解析(或主機名解析)。DNS協定運作在UDP協定之上,使用端口号53。大白話翻譯過來就是用來解析域名,擷取域名對應的ip位址,或者知道了ip位址,來擷取所對應的域名的服務。
DNS查詢分類
1)按查詢方式:
遞歸查詢。 當DNS伺服器接收到查詢請求時,不論成功或失敗,都會做出對應的響應。(發生在DNS用戶端與DNS伺服器之間)。并且會再進行疊代查詢,這是有/etc/named.conf中的遞歸功能開啟了,如下圖所示。

疊代查詢。 DNS伺服器根據自己的高速緩存或區域的資料,以最佳結果響應。如果DNS伺服器無法解析,它可能傳回一個指針。指針指向下級域名的DNS伺服器,繼續該過程,直到找到擁有所查詢名字的DNS伺服器,或知道出錯、逾時為止。(發生在DNS伺服器之間)
以上圖為例,我們要解析“www.lishuyang.com”這個域名,那麼疊代查詢便開始從根伺服器開始查詢,但是根伺服器隻能解析到com,然後根伺服器回報給用戶端com的IP位址,用戶端再去請求com伺服器,同樣的,com伺服器解析到了lishuyang.com,并将該伺服器的ip傳回到用戶端,照此一直往下查詢,最終得到我們的目的域名的ip。
2)按内容分類
正向查詢: 由域名查找IP位址。
反向查詢: 有IP位址查找域名。
1、完全轉發:當DNS伺服器收到查詢請求的時候會先看看是不是查詢本域的資訊,本地緩存是否有資料,如果不能使用本地資料解析DNS會将查詢請求發送給轉發器,此時是以遞歸查詢的方式發送給轉發器的,而在标準的DNS解析中,DNS伺服器将以疊代查詢的形式發送給另一個DNS伺服器。
所謂的 forwarder,就是當某一台 NS 主機遇到非本機負責的 zone ( slave zone 也屬于本機負責的範圍) 查詢請求的時候,将不直接向 "." zone 查詢,而把請求轉交給指定的 forwarder (一台或多台) 主機代為查詢。我們知道,當DNS伺服器接到用戶端主機的查詢請求時,首先會檢查這個查詢是否屬于本機管轄,否則将轉向 "." zone 再逐級的查詢下去,最後再把查詢結果告訴用戶端。在這個過程之中,DNS伺服器還會将查詢到的結果存放到緩存中。隻要緩存中的 TTL 沒過期,在下次遇到同樣查詢的時候,就可以直接将結果響應給用戶端,而無需再重複上次的查詢流程。如果DNS伺服器上指定了forwarder,那這個DNS發現緩存中沒有記錄時,将不向 "." 查詢,而是向 forwarder 送出同樣的請求(轉發),然後等待查詢結果,即把逐級往下查詢這個耗費精力的動作,交給 forwarder 負責。但無論這個結果是自己直接查詢得來的,還是 forwarder 送回來的,DNS伺服器都會儲存一份資料在緩存中。這樣,以後的相同查詢就快多了,這對于DNS所服務的用戶端而言查詢效率會提高很多。
當forwarder沒有傳回答案時,奔DNS會自己去遠端請求。但是如果配置了forward only; 則他僅僅處理轉發,而不自己查詢。
2、部分轉發(隻轉發解析某個域的DNS):假設有兩個域,a.com和b.com,a.com這個域是經過授權(向上級注冊,也就是.com知道他的存在)的,而b.com這個域沒有經過授權,此時如果a.com中的一台主機要通路www.b.com就會出現通路不了,但是如果a.com知道b.com這個域的DNS主機是誰,即便b.com沒有經過授權,這時a.com的DNS可以設一個部分轉發,将本域所有要求解析b.com域的請求全部都發給b.com這個域的DNS主機就可以了。
部分轉發一般用于通路未經授權的DNS域。配置格式
ACL定義:把一個或多個主機歸并為一個集合,并通過一個統一的名稱調用
執行個體:
通路控制的指令:
(二)視圖( view)
一旦啟用view,所有zone都隻能定義在view中
僅有必要在比對到允許遞歸請求(本地dns)的用戶端所在view中定義根區域
用戶端請求到達時,是自上而下比對每個view所服務的用戶端清單
一個bind伺服器可以定義多個view,每個view中可定義一個或多個zone
每個view用來比對一組用戶端請求
多個view可能對同一個區域進行解析,但使用不同的區域解析檔案
執行個體