DNS解析詳解

1. 配置文件說明:
named.conf :設置一般的named參數,指向該服務器使用的域數據庫的信息。
named.conf.options :全局選項。
db.root:根服務器指向文件, 由Internet NIC創建和維護, 無需修改, 但是需要定期更新。
db.local :localhost正向區文件,用於將名字localhost轉換爲本地回送IP地址 (127.0.0.1)
db.127 :localhost反向區文件,用於將本地回送IP地址(127.0.0.1)轉換爲名字localhost

2.主配置文件/etc/named.conf的配置語句
命令 用法
acl 定義IP地址的訪問控制清單
control 定義ndc使用的控制通道
include 把其他文件包含到配置文件中
key 定義授權的安全密鑰
logging 定義日誌寫什麼,寫到哪
opitons 定義全局配置選項和缺省值 
server 定義遠程服務器的特徵
trunsted-keys 爲服務器定義DNSSEC加密密鑰
zone 定義一個區

3. 默認情況下, 內容如下:

include "/etc/bind/named.conf.options";

zone "." {
type hint;
file "/etc/bind/db.root";
};

zone "localhost" {
type master;
file "/etc/bind/db.local";
};

zone "127.in-addr.arpa" {
type master;
file "/etc/bind/db.127";
};

zone "0.in-addr.arpa" {
type master;
file "/etc/bind/db.0";
};

zone "255.in-addr.arpa" {
type master;
file "/etc/bind/db.255";
};

include "/etc/bind/named.conf.local";

其中type項的值:
master:表示定義的是主域名服務器
slave :表示定義的是輔助域名服務器
hint:表示是互聯網中根域名服務器

A 創建主域名服務器

加入如下內容:

zone "mydebian.org" {
type master; //定義此區爲主服務器
file "/etc/bind/db.mydebian"; 指定區資源文件的位置
};

zone "102.168.192.in-addr.arpa" {
type master; //定義此區爲主服務器
file "/etc/bind/db.192"; //指定區資源文件的位置
};


創建區資源文件/etc/bind/db.mydebian內容如下:
;
; BIND data file for local loopback interface
;
$TTL 604800
$ORIGIN mydebian.org.
@ IN SOA mydebian.org. root.mydebian.org. (
2006080401 ; Serial
604800 ; Refresh
86400 ; Retry
2419200 ; Expire
604800 ) ; Negative Cache TTL
;

IN NS ns
IN MX 0 mail.mydebian.org.
@ IN A 192.168.102.47
ns IN A 192.168.102.47
www IN A 192.168.102.47
webserver IN CNAME www
mail IN A 192.168.102.47
ftp IN A 192.168.102.48
ns2 IN A 192.168.102.48
ns3 IN A 192.168.102.49

第一行是TTL設定,生存時間記錄字段。它以秒爲單位定義該資源記錄中的信息存放在高速緩存中的時間長度。這裏定義爲604800秒,也就是1周.
第二行是$ORIGIN設定,說明下面的記錄出自何處.請您加倍留意最後的一個小小數點"."
第三行,是一個 SOA 記錄的設定,在這裏我們看到一個特殊字符 @ ,它就是 ORIGIN 的意思,也就是剛剛所定義的$ ORIGIN mydebian.org. 的內容,您可以寫成 mydebian.org. 也可以用 @ 來代替。
假如這個文件前面沒有定義 $ ORIGIN 的話, 那這個 @ 的值就以 named.conf 裏的 zone .
接着 SOA 後面,指定了這個區域的授權主機和管理者的信箱,這裏分別是"mydebian.org." 和"root.mydebian.org."。我們平時使用的信箱通常是“user@host”這樣的格式,但因爲@在 DNS 記錄中是個保留字符,所以在 SOA 中就用“.”來代替了@。目前這個信箱是 "[email protected]."。
接下來的 SOA 設置,是被括在“( )”之間的 5 組數字,主要作爲和 slave 服務器同步 DNS 資料所使用的資料:
Serial:其格式通常會是“年月日+修改次序”(但也不一定如此,您自己能夠記得就行)。當 slave 要進行資料同步的時候,會比較這個號碼。如果發現在這裏的號碼比它那邊的數值“大”,就進行更新,否則忽略。不過設 serial 有一個地方您要留意:不能超過 10 位數字!

Refresh:這裏是是告訴 slave 要隔多久要進行資料同步(是否同步要看 Serial 的比較結果)。

Retry:如果 slave 在進行更新失敗後,要隔多久再進行重試。

Expire:這是記錄逾期時間:當 slave 一直未能成功與 master 取得聯繫,那到這裏就放棄 retry,同時這裏的資料也將標識爲過期(

expired )。

Minimum:這是最小默認 TTL 值,如果您在前面沒有用“$TTL”來定義,就會以此值爲準。

請注意:SOA 記錄中這對 “ ( ) ”符號之第一個 “ (”括號一定要和 SOA 寫在同一行,而不能用 Enter 斷行到下一行去,而且其左邊最好有一個空格鍵或 tab 建。而最後一個 “ )”括號也不能寫在註解符號 “ ;”的右邊。 置 DNS 的 RR 記錄檔,其格式要求非常嚴格,我們絲毫不能掉以輕心。比方說:如果句子不是以空格鍵、Tab 鍵、 或註解符號 ( ; )開頭,也不在 SOA 的 “ ( ) ”之內, 則表示要定義一個“新記錄項 (Entry) ”;如果句子是以空格鍵或 tab 鍵開始的話,其設置被視爲上一個“記錄項”的內容。所以,如果您要爲“同一個記錄項”定義多個記錄設置,而不想重複打字,您倒可以偷懶:在接着它的後面幾行用空白或 Tab 來縮排就可以了。

NS表明負責mydebian.org.這個域的Name Server是mydebian.org這臺主機

MX記錄標明發往mydebian.org域的郵件由mail.mydebian.org這臺服務器接收

A記錄標明瞭IP地址和域名之間的對應關係

接下來創建該區的反向映射資源文件

/etc/bind/db.192內容如下:

;
; BIND reverse data file for local loopback interface
;
$TTL 604800
@ IN SOA mydebian.org. root.mydebian.org. (
2006080401 ; Serial
604800 ; Refresh
86400 ; Retry
2419200 ; Expire
604800 ) ; Negative Cache TTL
;
@ IN NS mydebian.org.
47 IN PTR mail.mydebian.org.
47 IN PTR www.mydebian.org.
47 IN PTR ns.mydebian.org.
48 IN PTR ftp.mydebian.org.
48 IN PTR ns2.mydebian.org.
49 IN PTR ns3.mydebian.org.

其中PTR記錄用來解析IP地址對應的域名

 

所謂的 forwarder,就是當某一臺 NS 主機遇到非本機負責的 zone ( slave zone 也屬於本機負責的範圍) 查詢請求的時候,將不直接向 "." zone 查詢而把請求轉交給指定的 forwarder (一臺或多臺) 主機代爲查詢。

我們知道,當DNS服務器接到客戶端主機的查詢請求時,首先會檢查這個查詢是否屬於本機管轄,否則將轉向 "." zone 再逐級的查詢下去,最後再把查詢結果告訴客戶端。

在這個過程之中,DNS服務器還會將查詢到的結果存放到緩存中。只要緩存中的 TTL 沒過期,在下次遇到同樣查詢的時候,就可以直接將結果響應給客戶端,而無需再重複上次的查詢流程。

如果DNS服務器上指定了forwarder,那這個DNS發現緩存中沒有記錄時,將不向 "." 查詢,而是向 forwarder 送出同樣的請求(轉發),然後等待查詢結果,即把逐級往下查詢這個耗費精力的動作,交給 forwarder 負責。但無論這個結果是自己直接查詢得來的,還是 forwarder 送回來的,DNS服務器都會保存一份數據在緩存中。

這樣,以後的相同查詢就快多了,這對於DNS所服務的 客戶端而言查詢效率會提高很多。

/var/named/named.ca
dig @a.root-servers.net . ns > /var/named/named.ca

3.7 輔助域名服務器

a. 192.168.102.49 爲我們的dns 緩存服務器,首先, 在在192.168.102.49 機器上安全bind9,

b. 在主配置文件/etc/named.conf中加入如下內容:

zone "mydebian.org" {
type slave;
file "/etc/bind/slaves/db.mydebian";
masters {192.168.102.47;};
};

zone "102.168.192.in-addr.arpa" {
type slave;
file "/etc/bind/slaves/db.192";
masters {192.168.102.47;};
};

type後面的值已經成爲slave; 表示定義的是輔助域名服務器

file 後面也可以是別的文件名不必與主域DNS服務器的設置一樣

masters 後爲主域DNS服務器的IP地址, 可以是多個IP,型如

masters {ip1;ip2;ip3;};

c. 創建/etc/bind/slaves/目錄

tonybox2:/etc/bind# mkdir slaves

tonybox2:/etc/bind# chown bind.bind slaves

d. 重啓dns服務

tonybox2:/etc/bind/slaves# /etc/init.d/bind9 restart

named進程第一次啓動時,輔助域名服務器就下載主域名服務器的信息;輔助域名服務器根據主域名服務器的對應SOA記錄規定的刷新時間間隔,去主域名服務器查詢相關信息。

tonybox2:/etc/bind/slaves# ls -l
total 8
-rw-r--r-- 1 bind bind 410 2006-08-08 12:23 db.192
-rw-r--r-- 1 bind bind 430 2006-08-08 12:23 db.mydebian

查看 /etc/bind/slaves 目錄,我門會發現已經從主域名服務器獲取了相應的資源文件

如果用戶bind對於/etc/bind/slaves目錄沒有寫權限, 則查看 /var/log/syslog 會出現如下類似錯誤:

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章