RHEL5 DNS 配置 - linux - boypicc

来源:百度文库 编辑:神马文学网 时间:2024/04/29 12:54:00
RHEL5 DNS 配置
经过几天的测试设置,终于将DNS上线啦。通过在网上找资料,发现N多的资料都是相互抄呀,自己也不做测试。RHEL5 DNS 测试的几点心得:
1、RHEL5中 /etc/named.conf这个文件不存在。 不过,你可以将/usr/share/doc/bind-xx/sample/var/etc中的文拷内到/etc/下。将..../var/named下的文件拷到/var/named下
这种方式有点麻烦。
2 在RHEL5中,默认不安装named.caching-xxx ,在RHEL5的光盘中有named.caching--xxx,可以通过
rpm -ivh named.caching--xxx来安装,安装完毕之后,你会发现在/etc下多了named.caching-nameserver.conf 和named.rfc1912.zones (将以前版本的named.conf分成了两个文件)
不需要将named.caching-nameserver.conf文件改名为named.conf文件.
3 如果你使用VIEW功能,需要注意的是:zone文件必须全都在named.caching-nameserver.conf中,这一点
一定要注意,否则会走很多弯路和犯一些不必要的错误.
以下是常识及一些例子:
1、cache-dns only
編輯主要設定檔 /etc/named.conf
註解資料是以兩條斜線『 // 』來作設定的!
每個段落之後都需要以『 ; 』來做為結尾!
root@linux ~]# vi /etc/named.conf
// 雖然 CentOS 將這個檔案放置到 /var/named/chroot/etc 當中,
// 不過他很好心的幫我們作了個連結,所以你還是可以直接編輯這個檔案啦!
options {
directory "/var/named";
dump-file "/var/named/data/cache_dump.db";
statistics-file "/var/named/data/named_stats.txt";
pid-file "/var/run/named/named.pid";
forward only;            //只允許 forward!
forwarders {
168.95.1.1;      //我這裡使用 hinet 的 DNS !
139.175.10.20;   //這個是 seednet 的 DNS !
};
};
include "/etc/rndc.key";
forwarders
(不要忘記那個 s 喔!)就是要設定往前尋找的那個『合法』的 DNS 囉!每一個 forward 的主機之 IP 都需要有『 ; 』來做為結尾!
forward only
這個設定可以讓您的 DNS 主機僅進行 forward 而已!是 Cache-Only 主機最常見的設定了!
特別說明:Forwarders 的好處與問題分析  (不過可以知道的是,如果上層的 DNS 速度很快的話,那麼他被設定為 forwarder 時,或許真的可以增加不少效能哩)
DNS 主機的詳細設定:
好了,經過上面的說明後,我們大概知道 DNS 的幾個小細節是這樣的:
主要設定檔是 /etc/named.conf;
每個正解、反解都需要一個檔案,而檔案的檔名是由 /etc/named.conf 所設定;
目前的 bind 程式已經進行 chroot 了,可以參考 /etc/sysconfig/named ;
當 DNS 查詢時,若本身沒有資料庫,則前往 root (.) 或 forwarders 主機查詢;
DNS 伺服器的架設需要上層 DNS 的授權才可以成為合法的 DNS 伺服器。
named 是否啟動成功務必要查閱 /var/log/messages 內的資訊!
一個簡單的案例說明:
named.conf       :設定檔
named.vbird.tsai :vbird.tsai 的正解
named.192.168.1  :192.168.1.0/24 的反解
named.root       :root (.) 的資料庫
named.localhost  :localhost 的正解
named.127.0.0    :127.0.0.1/24 的反解
如果我還想要加入其他的領域,例如 niki.tsai 可不可以啊?當然可以啊!就再多一個資料庫正解檔案即可! 還有,鳥哥上頭這個設定資料為內部私有的,所以你可以完全照著玩!並不會影響到外部的網際網路啦!
作業系統與 IP對應之主機名稱說明
OS: Linux
IP: 192.168.1.254linux.vbird.tsai
www.vbird.tsai
ftp.vbird.tsai
forum.vbird.tsai這部是主要的 DNS 伺服器,主要主機名稱為 linux.vbird.tsai ,其他的三部主機名稱為主機別名。
OS: Linux
IP: 192.168.1.150slave.vbird.tsai
主要作為 slave DNS 主機, 相關的 slave 設定將在下個小節才會介紹的啦!
OS: Windows XP
IP: 192.168.1.100winxp.vbird.tsai某一部主機的 IP 與主機名稱對應
OS: Sun
IP: 192.168.1.200sun.vbird.tsai某一部主機,用來玩的而已!
etc/named.conf 設定檔
這個設定檔是整個 Linux 上 DNS 的核心啦!他最主要就是在:
規範 DNS 伺服器的使用權限 (可否查詢、forward 與否、master/slave 架構等);
設定出 zone (domain name) 以及 zone file 的所在;
設定 DNS 本機管理介面以及其相關的金鑰檔案 (key file)。
基本上,這個檔案的內容主要就是分為上頭的三大部分啦!至於設定方面你要注意的有:
在整體伺服器的環境與使用權限方面,主要是透過 options {....} 這個設定來處理的;
還是要注意,在 named.conf 當中註解使用 // ,而每一個設定項目最後需要分號 (;)
allow-query是否允許用戶端的查詢。查詢的重點就是讀取資料庫的內容, 既然要架設 DNS ,當然要允許用戶端的查詢啦。內容可以填寫任何來源 (any) 或 IP 或網域 (IP/netmask) 的格式。
allow-transfer是否允許 slave DNS 的整個領域資料的傳送?這個設定值與 master/slave DNS 伺服器之間的資料庫傳送有關。除非你有 slave DNS 伺服器,否則這裡不要開放喔!
type該 zone 的類型,主要的類型有: master, slave 及 hint。 其中需要注意最上層的 DNS (.) 使用的是 hint 的類型,然後 master 主機用 master 啊! slave 主機就用 slave ㄇㄟ!
file就是 zone file 啦!那麼完整的 zone file 在哪裡啊?在這裡:
[chroot_dir]/[options 內的 directory]/[file 設定值]所以說,root (.) 設定檔就在:
/var/named/chroot/var/named/named.root
反解 zone正解的 zone 很好理解,反解的 zone 怎麼那麼奇怪啊?就如同 linux.vbird.org 要追蹤時是由 org -> vbird -> linux 一樣,至於反解則例如 192.168.1.1: 192 -> 168 -> 1 -> 1。 由於 DNS 的領域名稱都是由後往前找,且反解是個特殊的領域,所以必需要 將 IP 反過來寫,同時在最後面加上『 .in-addr.arpa 』來表示反解宣告!所以 192.168.1 這個 zone 就得要寫成 1.168.192.in-addr.arpa
正解資料庫檔案的設定
就如同案例設定當中提到的,我們共有兩個正解檔,分別是針對 localhost 以及 vbird.tsai 這兩個領域名稱。 在正反解的設定檔當中可以簡單的分成幾部分來觀察:
關於本領域的基礎設定方面:例如快取記憶時間 (TTL) 、領域名稱 (ORIGIN) 等等;
關於 master/slave 的認證方面 (SOA);
關於本領域的領域名稱伺服器所在主機名稱與 IP 對應 (NS, A, PTR);
[root@linux ~]# vi /var/named/chroot/var/named/named.localhost; 1. 首先是主機相關的設定$TTL 600; 2. 關於 master/slave 的授權內容,如果沒有 slave 主機,依舊要設定喔!@ IN SOA localhost. root.localhost. ( 2006102001 ; Serial 僅作為序號而已 28800 ; Refresh slave 伺服器的更新時間 1-6个小时 14400 ; Retry 當 slave 主機更新失敗,多久再重新更新一次 20-60分钟 720000 ; Expire 重複 retry 多久後就宣告不治....不再更新 1周到1个月 86400 ) ; Minimum 可視為 TTL ,尤其是你沒有設定 $TTL 時 1-6个小时; 3. 本領域的 DNS 伺服器的主機名稱與 IP 的對應@ IN NS localhost. ; 特別留意最後面的那個小數點!localhost. IN A 127.0.0.1; 4. 其他 RR 可以加入的地方。 其他正反解相關的資源記錄 (RR)。
$TTL還記得圖三的流程吧?當有外部 DNS 伺服器對你的 DNS 的這個領域進行查詢時,這一筆記錄會放置在對方 DNS 伺服器內幾秒鐘的意思。
$ORIGIN這個設定值可以重新指定 zone 的定義。在預設的情況下, 這個正反解資料庫檔案中的 zone 是由 /etc/named.conf 所指定的,就是 zone 那個參數的功能。 不過,這個 zone 是可以改的,就是用 $ORIGIN 來修訂就是了。通常這個設定值不會用到的。
當你的某個領域名稱內的主機對應常常變動時,則這個 $TTL 應該要設定小一點, 免得你的變動總是無法被查詢到 (因為對方可能會快取住你之前舊的資料!)。而如果你的 DNS 內容已經很穩定了, 那麼這個數值可以設定大一點 (例如 86400 或三天),如此一來外部的 DNS 才不會常常對你的 DNS 要求, 而造成你的 DNS 忙碌的問題
注意的是,底下開始每一行的設定都會是這樣的:
[主機或領域名稱] [TTL] IN [RR] [RR 內容] @這個符號代表 zone 的意思! 以上面的 named.local 來說, 這個檔案由 /etc/named.conf 定義出 zone 為 localhost. ,因此在本檔案的 @ 就代表 localhost. 囉!
.這個點 (.) 很重要!因為他代表一個完整主機名稱 (FQDN) 而不是僅有 hostname 而已。舉例來說,如果你在本設定檔上面規範一個主機名稱為 www 時,那部主機的 FQDN 為 www.localhost. 如果你寫出 www.localhost 時,由於末了沒有那個小數點,則 zone 會主動加入該主機名稱, 所以最終的 FQDN 會變成 www.localhost.localhost. 喔!
SOAStart of Authority 的意思。 這個標誌代表著 master/slave 相關的認證、授權資料。 不論你的 DNS 系統有沒有設定 master/slave 的架構,都需要含有這個設定才好。 SOA 後面共帶有三個參數,所以該行為: [zone] IN SOA [主機名] [管理員 email] ([五組更新時間參數])每個設定項目你可以這樣看: 主機名:就是 master DNS 的主機名稱,通常填寫本身主機名即可。還是要注意那個小數點的存在與否喔!非常重要!
管理員 email:本來應該是 "root@localhost." 的,不過因為 @ 已經被作為特殊代號 (zone), 所以就用小數點來取代,因此 email 就成為 "root.localhost." 囉!
(五組數字):這五個數字分別代表 serial, refresh, retry, expire, ttl。
至於那五個數字的意義是這樣的:
Serial :只是一個序號,但這個序號可被用來作為 slave 與 master 更新的依據。 舉例來說, master 序號為 100 但 slave 序號為 90 時,那麼這個 zone file 的資料就會被傳送到 slave 來更新了。 由於這個序號代表新舊資料,通常我們建議你可以利用日期來設定!舉例來說,上面的資料是鳥哥在 2006/10/20 所寫的第一次,所以鳥哥用 2006102001 作為序號代表!
Refresh :除了根據 Serial 來判斷新舊之外,我們可以利用這個 refresh(更新) 命令 slave 多久進行一次主動更新;
Retry :如果到了 Refresh 的時間,但是 slave 卻無法連接到 master 時, 那麼在多久之後,slave 會再次的主動嘗試與主機連線;
Expire :如果 slave 一直無法與 master 連接上,那麼經過多久的時間之後, 則命令 slave 不要再連接 master 了! 也就是說,此時我們假設 master DNS 可能遇到重大問題而無法上線,則等待系統管理員處理完畢後, 再重新來到 slave DNS 重新啟動 bind 吧!
Minimun :這個就有點像是 TTL 啦!
另外,這幾個數字的大小是有限制的!你必需要瞭解喔:
Serial <= 2^32 = 4294967296
Refresh >= Retry * 2
Refresh + Retry < Expire
Expire >= Retry * 10
Expire >= 7Days
DNS 自己的領域之名稱解析器
符號與 RR說明
NS就是 name server 的縮寫,這個標誌的參數是:
[zone] IN NS [主機名稱]注意喔, NS 後面接的一定是主機名稱喔!代表的意思是說:『這個 zone 的查詢請向後面這部主機要求』的意思。 所以,如果你這個 zone 有兩部以上的 DNS 伺服器負責時,那就必需要寫兩個 NS 了!而 NS 後面接的主機名稱必需要有 IP 的對應啊!因此就需要 A 這個標誌了!
A是正解的符號,參數是:
[hostname] IN A [IP]意思是說該部主機的 IP 對應之意!也是最常用的一個標誌了!
root@linux ~]# vi /var/named/chroot/var/named/named.vbird.tsai
$TTL    600
@ IN SOA linux.vbird.tsai. root.linux ( 2006102001 28800 14400 720000 86400 )
; 本領域的 DNS 伺服器的主機名稱與 IP 的對應
@          IN   NS     linux.vbird.tsai.
@          IN   NS     slave.vbird.tsai.
linux      IN   A      192.168.1.254
slave      IN   A      192.168.1.150
@          IN   MX 10  linux
; 其他 RR 可以加入的地方
www        IN   CNAME  linux
ftp        IN   CNAME  linux
forum      IN   CNAME  linux
winxp      IN   A      192.168.1.100
sun        IN   A      192.168.1.200
sun        IN   TXT    "The sun solaris OS"
sun        IN   HINFO  "Celeron 1G""Solaris 10"
符號與 RR說明
MX就是 Mail eXchanger(MX) 的簡寫,他的參數是這樣寫的:
[hostname] IN MX [順序] [主機名稱]注意囉,這個 MX 與 mail server 有關,沒有 mail server 的朋友可以省略這個標誌,但是如果你的領域內有 mail server 時,就必需要設定這個 MX 才好。MX 的用途是在於『郵件轉遞』或者是經由上層郵件主機備份的一個機制, 後面設定的那個主機名稱通常是你的上游郵件主機,相關的意義我們會在 mail server 章節再跟大家詳談。 另外, MX 後面接的數值是越小越優先,而接的主機名稱必需要具有 A 的標誌才可以!
如果你不知道如何設定,通常建議你直接設定成你的 mail server 主機名稱即可
CNAME顧名思義,這個標誌在建立『主機別名』的啦!參數為:
[hostname] IN CNAME [主機名稱]注意一下, CNAME 後面接的是主機名稱喔。因為有好幾部主機名稱都對應到同一個 IP 上頭, 你當然可以針對每個主機名稱給予一個 A ,不過如果未來要改 IP 時,你就得改好幾個啦! 此時改為 CNAME 來處理就很簡單。如上表所示,如果我想要知道 ftp.vbird.tsai 的 IP 時, DNS 會先告知 ftp.vbird.tsai 屬於 linux.vbird.tsai 的 CNAME ,然後再透過 linux.vbird.tsai 來得到正確的 IP。
Master/Slave 架構的詳細設定
談完了 Master DNS 伺服器之後,接下來讓我們來瞭解一下 slave DNS 伺服器的架設方式吧! 在架設之前,你應該要曉得為何需要 slave DNS 呢?
為了不間斷的提供 DNS 服務,你的領域至少需要有兩部 DNS 伺服器來提供查詢的功能;
承上,這幾部 DNS 伺服器應該要分散在兩個以上的不同 IP 網域才好;
為方便管理,通常除了一部主要 Master DNS 之外,其他的 DNS 會使用 slave 的模式;
slave DNS 伺服器本身並沒有資料庫,他的資料庫是由 master DNS 所提供的;
master/slave DNS 必需要可以相互傳輸 zone file 的相關資訊才行,這部份需要 /etc/named.conf 之設定輔助。
好了,那麼讓我們繼續上一個案例的延續吧!前一小節是在 192.168.1.254 那部 master DNS 上面設定的, 底下的設定大部分都是在 192.168.1.150 那部 slave DNS 主機上設定的喔!假設我這部 slave.vbird.tsai 僅需要取得 vbird.tsai 以及 192.168.1 這兩個領域,其他的例如 named.root, named.localhost 及 named.127.0.0 都需要自理喔!
master DNS 權限的開放
我們在/etc/named.conf 設定檔當中的參數項目曾經設定過 allow-transfer ,並且設定所有人均不得使用 zone 的傳送 (transfer)。但是我們的 master DNS 必須要讓 slave DNS 可以進行 zone 的傳送啊,因此你必須要針對 vbird.tsai 及 192.168.1 這兩個 zone 來啟用 allow-transfer 的設定項目才行。整個過程很簡單:
[root@linux ~]# vi /etc/named.conf....前面省略....zone "vbird.tsai" { type master; file "named.vbird.tsai"; allow-transfer { 192.168.1.150; };};zone "1.168.192.in-addr.arpa" { type master; file "named.192.168.1"; allow-transfer { 192.168.1.150; };};....後面省略....
除此之外,在上頭所列示的那兩個資料庫檔案當中,你必須要填入所需要的 NS 標誌才行! 這部份我們已經在前一小節提過了,請你自行參考喔! 設定完畢後請重新啟動 named 啦!
slave DNS 的設定
基本上, slave DNS 的 /etc/named.conf 與 master DNS 幾乎一模一樣啊! 唯一的差異在於兩個 zone 的類型 (type) 而已。設定方式唯一的差異在這裡:
[root@slave ~]# vi /etc/named.conf....前面省略....zone "vbird.tsai" { type slave; file "named.vbird.tsai"; masters { 192.168.1.254; };};zone "1.168.192.in-addr.arpa" { type slave; file "named.192.168.1"; masters { 192.168.1.254; };};....後面省略....
你得要特別留意類型是 slave 之外,那個主機來源 (masters) 是有加 "s" 喔! 這點很容易忘記啊!至於資料庫檔案裡面,必須要存在的有:
named.root
named.localhost
named.127.0.0
在 slave DNS 當中,這三個 zone 的類型分別是 hint 與 master ,所以當然要預設存在, 至於那個 named.vbird.tsai 及 named.192.168.1 就不要存在啦! 因為這兩個 zone file 是由 master DNS 主機傳送過來的!只是你要注意 /var/named/chroot/var/named 這個目錄的權限必須要是 named 這個使用者可以寫入的狀態!這很重要喔!
/etc/hosts :剛剛上面就提過了,這個是最早的 hostname 對應 IP 的檔案;
/etc/resolv.conf :這個重要!就是 DNS 主機的 IP;
/etc/nsswitch.conf:這個檔案則是在『決定』先要使用 /etc/hosts 還是 /etc/resolv.conf 的設定!
DNS 的查詢指令: host, nslookup, dig
測試 DNS 的程式有很多,我們先來使用最簡單的 host 吧!然後還有 nslookup 及 dig 哩!
host 語法:[root@linux ~]# host [-a] [FQDN] [server][root@linux ~]# host -l [domain] [server]參數說明:-a :代表列出該主機所有的相關資訊,包括 IP、TTL 等等-l :若後面接的那個 domain 設定允許 allow-transfer 時,則列出該 domain 所管理的所有主機名稱對應資料!server:這個參數可有可無,當想要利用非 /etc/resolv.conf 內的 DNS 主機 來查詢主機名稱與 IP 的對應時,就可以利用這個參數了!範例一:強制以 192.168.1.254 這部 DNS 主機來查詢[root@linux ~]# host www.vbird.tsai 192.168.1.254Using domain server:Name: 192.168.1.254Address: 192.168.1.254#53 <==這裡重要!告知這筆記錄是哪部 DNS 伺服器去找的!Aliases:www.vbird.tsai is an alias for linux.vbird.tsai.linux.vbird.tsai has address 192.168.1.254
有注意到上面輸出的特殊字體部分嗎?很多朋友在測試自己的 DNS 時,常常會『指定到錯誤的 DNS 查詢主機』了~ 因為他們的 /etc/reslov.conf 忘記改,所以老是找不到自己設定的資料庫 IP 資料。所以你要仔細看啊! 範例二:找出我們自己這個 vbird.tsai 領域的所有主機對應[root@linux ~]# host -l vbird.tsai 192.168.1.254Using domain server:Name: 192.168.1.254Address: 192.168.1.254#53Aliases:vbird.tsai name server linux.vbird.tsai.vbird.tsai name server slave.vbird.tsai.linux.vbird.tsai has address 192.168.1.254slave.vbird.tsai has address 192.168.1.150....後面省略....
上面的資訊可就熟悉多了吧?!沒錯!那就是我們在 named.vbird.tsai 裡面的設定值啊! 不過,並不是所有的 domain 都可以作這樣的事情~舉例來說,如果我們下達:
[root@linux ~]# host -l yahoo.comHost yahoo.com not found: 5(REFUSED); Transfer failed.
這樣的回應是因為在對方的 /etc/named.conf 裡面並沒有設定 allow-transfer 那個設定選項的原因啊! 至於 host -a 的輸出資訊與 dig 是一模一樣的,所以我們先不介紹,在 dig 處再詳細說明。
nslookup 語法: [root@linux ~]# nslookup [FQDN] [server][root@linux ~]# nslookup參數說明:1. 可以直接在 nslookup 加上待查詢的主機名稱或者是 IP ,[server] 可有可無;2. 如果在 nslookup 後面沒有加上任何主機名稱或 IP ,那將進入 nslookup 的查詢功能 在 nslookup 的查詢功能當中,可以輸入其他參數來進行特殊查詢,例如: set type=any :列出所有的資訊『正解方面設定檔』 set type=mx :列出與 mx 相關的資訊!範例一:直接搜尋 winxp.vbird.tsai 的 IP 資訊 [root@linux ~]# nslookup winxp.vbird.tsai 192.168.1.254Server: 192.168.1.254Address: 192.168.1.254#53 <==同樣的,請注意搜尋的 DNS IP 喔!Name: winxp.vbird.tsaiAddress: 192.168.1.100
nslookup 可單純的將 hostname 與 IP 對應列出而已,不過,還是會將查詢的 DNS 主機的 IP 列出來的! 如果想要知道更多詳細的參數,那可以直接進入 nslookup 這個軟體的操作畫面中,如下範例:
[root@linux ~]# nslookup <==進入 nslookup 查詢畫面> 192.168.1.254 <==執行反解的查詢> www.vbird.tsai <==執行正解的查詢# 上面這兩個僅列出正反解的資訊,沒有啥了不起的地方啦!> tw.yahoo.com <==執行非本機上的查詢Server: 192.168.1.254Address: 192.168.1.254#53Non-authoritative answer: # 注意這邊,因為不是自己的資料庫,所以是未認證過的資料(可能是快取)tw.yahoo.com canonical name = tw.yahoo-ap1.akadns.net.tw.yahoo-ap1.akadns.net canonical name = vip1.tw.tpe.yahoo.com.Name: vip1.tw.tpe.yahoo.comAddress: 202.43.195.52> set type=any <==變更查詢,不是僅有 A,全部資訊都列出來> sun.vbird.tsaiServer: 192.168.1.254Address: 192.168.1.254#53Name: sun.vbird.tsaiAddress: 192.168.1.200sun.vbird.tsai text = "The sun solaris OS" <==看吧!更多資訊跑出來!sun.vbird.tsai hinfo = "Celeron 1G" "Solaris 10"> exit <==離開吧!皮卡丘
在上面的案例當中,請注意,如果您在 nslookup 的查詢畫面當中,輸入 set type=any 或其他參數, 那麼就無法再進行反解的查詢了!這是因為 any 或者是 mx 等等的標誌都是記錄在正解 zone 當中的緣故!
dig 語法: [root @test root]# dig [@server] [FQDN] [type]參數說明:@server :如果不想以 /etc/resolv.conf 來作為 DNS 主機,則可在此填入其他的 IPtype :預設是查詢 A 標誌,你可以在這裡入其他的標誌,如 mx, ns 等。 此功能亦可使用 [-t type] 來處理。範例一:查詢 linux.vbird.tsai 吧![root@linux ~]# dig @192.168.1.254 linux.vbird.tsai; <<>> DiG 9.2.4 <<>> @192.168.1.254 linux.vbird.tsai; (1 server found);; global options: printcmd;; Got answer:;; -;>>HEADER<<- opcode: QUERY, status: NOERROR, id: 8977;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 2, ADDITIONAL: 1;; QUESTION SECTION:;linux.vbird.tsai. IN A;; ANSWER SECTION:linux.vbird.tsai. 600 IN A 192.168.1.254;; AUTHORITY SECTION:vbird.tsai. 600 IN NS slave.vbird.tsai.vbird.tsai. 600 IN NS linux.vbird.tsai.;; ADDITIONAL SECTION:slave.vbird.tsai. 600 IN A 192.168.1.150;; Query time: 4 msec;; SERVER: 192.168.1.254#53(192.168.1.254);; WHEN: Thu Oct 19 15:34:23 2006;; MSG SIZE rcvd: 100
在這個範例當中,我們可以看到整個顯示出的訊息包括有幾個部分:
HEADER(標題):顯示查詢的內容有哪些,包括一個 query, 一個 answer 及兩個驗證部分。
QUESTION(問題):顯示所要查詢的內容,因為我們是查詢 linux.vbird.tsai 所以這裡自然就是顯示這個訊息。
ANSWER(回應):依據剛剛的 QUESTION 去查詢所得到的結果,因為在我們的設定當中僅有設定了 A 的標籤,所以這裡自然就....
AUTHORITY(驗證):由這裡我們可以查閱 vbird.tsai 這個領域是由 linux.vbird.tsai 及 slave.vbird.tsai 來設定的~裡面那個 600 是什麼呢?很簡單,他就是我們所設定的 ttl 那個數值啦!
範例二:查詢 vbird.tsai 這個領域的 MX 吧![root@linux ~]# dig @192.168.1.254 vbird.tsai mx; <<>> DiG 9.2.4 <<>> @192.168.1.254 vbird.tsai mx; (1 server found);; global options: printcmd;; Got answer:;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 3390;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 2, ADDITIONAL: 2;; QUESTION SECTION:;vbird.tsai. IN MX <==瞧!要求的資料不一樣了喔!;; ANSWER SECTION:vbird.tsai. 600 IN MX 10 linux.vbird.tsai.;; AUTHORITY SECTION:vbird.tsai. 600 IN NS slave.vbird.tsai.vbird.tsai. 600 IN NS linux.vbird.tsai.;; ADDITIONAL SECTION:linux.vbird.tsai. 600 IN A 192.168.1.254slave.vbird.tsai. 600 IN A 192.168.1.150;; Query time: 4 msec;; SERVER: 192.168.1.254#53(192.168.1.254);; WHEN: Thu Oct 19 15:45:58 2006;; MSG SIZE rcvd: 116
由於 dig 的輸出資訊實在是太豐富了,又分成多個部分去進行回報,因此很適合作為 DNS 追蹤回報的一個指令呢! 你可以透過這個指令來瞭解一下你所設定的 DNS 資料庫是否正確,並進行除錯喔! ^_^
DNS 伺服器的進階設定:
子網域授權問題
好了,那麼萬一我的網路很大,我只想要負責上層的 DNS 而已, 下層希望直接交給各單位的負責人來負責,要怎麼設定呢? 舉個例子來說,以成大為例,成大計中僅管理各個系所的的主機 IP 而已,由於各個系所的主機數量可能很大,如果每個人都要請計中來設定, 那麼管理員可能會瘋掉,而且在實際設計上也不太人性化。
所以囉,計中就將各個 subdomain (子網域) 的管理權交給各個系所的主機管理員去管理,如此一來, 各系所的設定上面會比較靈活,且上層 DNS 主機也不用太麻煩吶!
好了,那麼如何開放子網域授權呢?我們以剛剛在 master 上面建立的 vbird.tsai 這個 zone 為例, 假設今天你是個 ISP ,有個人想要跟妳申請 domain name ,他要的 domain 是『 niki.vbird.tsai 』, 那你該如何處理?其實只要指定 NS 就好了啦!如下所示:
上層主機端 vbird.tsai 的設定: 上層 DNS 主機的設定其實很簡單啦!只要將子網域開放出來給別人使用就對了! 怎麼設定呢?您可以直接修改前面談到的named.vbird.tsai ,使他變成如下所示: [root@linux ~]# vi /var/named/chroot/var/named/named.vbird.tsai# 在這個檔案的最下方增加這兩行:niki IN NS niki.vbird.tsai.niki IN A 192.168.100.100
直接將 niki.vbird.tsai. 這個網域的 NS 權限 (name server) 轉給 niki.vbird.tsai. 這部主機來管理,並同時列出 niki.vbird.tsai 的正解資訊! 那麼未來當有人要查詢類似 www.niki.vbird.tsai 時,我們的 linux.vbird.tsai. 會直接將查詢的權限丟給 niki.vbird.tsai 去處理喔!
下游主機 niki.vbird.tsai 的設定: 這個設定就簡單啦!直接參考一下我們上面寫的資料,跟著設定,但是您的 domain name 變成 niki.vbird.tsai 就是了!簡單的很吶!所以鳥哥就不再多說了~
利用 RNDC 指令管理 DNS 伺服器
不知道您會不會覺得很奇怪,那就是為啥啟動 DNS 後,在 /var/log/messages 老是看到這一句話:
command channel listening on 127.0.0.1#953
而且在本機端的 TCP port 953 還多了個 named 所啟動的服務,那是啥?那就是所謂的 rndc 了。這個 rndc 是 BIND version 9 以後所提供的功能啦,他可以讓你很輕鬆的管理你自己的 DNS 伺服器喔! 包括可以檢查已經存在 DNS 快取當中的資料、重新更新某個 zone 而不需要重新啟動整個 DNS , 以及檢查 DNS 的狀態與統計資料等等的,挺有趣的!
ttl字段以秒为单位指定数据项可被缓存并且仍被认为有效的时间长度。除了在根服务器的线索文件中之外,该字段经常被省略。它默认取该区的数据文件开头的$TTL指令设置的值。
ttl将存活时间参数的值增加到大约一周将明显减少网络流量和DNS负载。不过,一旦记录已经缓存在本地网络之外,您就无法迫使它们被丢谖。如果您准备大规模地得机关报对网络编号,可以降低$TTL的值,以使缓存在INTERNET上别处的老记录讯速过期。
一个区的SOA记录应该在最前面。但是这个要求现在也放宽了,NS记录通常紧跟在SOA后面。
它们取自于cs.colorado.edu的数据文件,默任的域都是"cs.colorado.edu.",所以anchor所指的主机实际上代表"anchor.cs.colorado.eud."
@  当前区名的简写,本例中可以用"cs.colorado.eud."来代替.
@  IN   SOA ns.cs.colorado.edu. hostmaster.cs.colorado.edu.
ns.cs.colorado.edu.是该区的主名字服务器
实例:
@   IN   SOA ns.cs.colorado.edu. hostmaster.cs.colorado.eud.(
2009043000;
7200;      refresh  (2 hours     1-6个小时)
1800;      retry    (30 minutes  20-60分钟)
604800;   expire    (1 week)    1周到1个月)
7200;    Minimum    (1-6个小时)
);
NS记录:
zone [ttl] IN NS hostname
cs.colorado.edu.  IN NS ns.cs.colorado.edu.
cs.colorado.edu.  IN NS anchor.cs.colorado.eud.
cs.colorado.edu.  IN NS ns.cs.utah.edu.
也可以这样:
IN  NS ns.cs.colorado.edu.
IN  NS anchor.cs.colorado.edu.
IN  NS ns.cs.utah.edu.
A记录: A记录是DNS数据库的核心,它们提供了以前在/etc/hosts文件中指定的主机名到IP地址的映射,一个主机必须为它的每个接网络接口得到一条A记录.
anchor    IN A 123.128.81.90
PRT记录:格式:
90  IN PRT  anchor.cs.colorado.edu.   (90相对于81.128.123.in-addr.apra.)
MX记录:
xterm1   IN  MX 10 mailhub
IN  MX 20 anchor
IN  MX 50 boulder.colorado.edu. (注意coulder的域名必须是完整的,因为它不是默任域的成员(这是是cs.colorado.edu.)
user@domail 域本身应该有一条到邮件枢纽机器的MX记录,以便于发送到user@domai的邮件能被收到,如,为了能向evi@cs.colorado.edu发送邮件,我们需要一台名为cs的机器,或在cs.colorado.edu的MX记录,或可能两者都要.
cs    IN  MX 10 mailhub.cs.colorado.edu.
IN  MX 20 anchor.cs.colorado.edu.
IN  MX 50 boulder.colorado.edu.
CNAME记录: ftp IN CNAME anchor   kb IN CNAME kibblesnbits
通常您可以给主机的真实名字及其昵称都用A记录,从而彻底避免用CNAME记录.
RHEL5:
[root@dnsggv ~]# rpm -qa bind*
bind-libs-9.3.3-7.el5
bind-utils-9.3.3-7.el5
bind-9.3.3-7.el5
bind-chroot-9.3.3-7.el5
[root@dnsggv ~]#
在安装
caching-nameserver-9.3.3-7.el5 之前,需要将named.conf copy到/etc下 (在rhel5下,named.conf 在/etc下是不存在的,需要从/usr/share/doc/bind-9.3.3/sample/etc/named.conf 考过来,否则,你在安装caching-nameserver-9.3.3-7.el5 之后,启动DNS的时候,会报错.)
开始安装RHEL5
# rpm -ivh caching-nameserver-9.3.3-7.el5 安装好之后,会在/etc下产生一个文件named.caching-nameserver.conf)
#cp -p named.caching-nameserver.conf named.conf 会提示覆盖,选择Y,覆盖就可以啦.
#ll
[root@dnsggv etc]# ll
total 24
-rw-r--r-- 1 root root   163 Apr 27 13:38 localtime
-rw-r----- 1 root named 1100 Jan 17  2007 named.caching-nameserver.conf
-rw-r--r-- 1 root named 1100 Apr 27 16:57 named.conf
-rw-r----- 1 root named  955 Jan 17  2007 named.rfc1912.zones
-rw-r--r-- 1 root named  113 Apr 27 13:37 rndc.key
[root@dnsggv etc]# vi named.conf
//
// named.caching-nameserver.conf
//
// Provided by Red Hat caching-nameserver package to configure the
// ISC BIND named(8) DNS server as a caching only nameserver
// (as a localhost DNS resolver only).
//
// See /usr/share/doc/bind*/sample/ for example named configuration files.
//
// DO NOT EDIT THIS FILE - use system-config-bind or an editor
// to create named.conf - edits to this file will be lost on
// caching-nameserver package upgrade.
//
options {
listen-on port 53 { 127.0.0.1; }; 改为: listen-on port 53 { any; };
listen-on-v6 port 53 { ::1; };
directory       "/var/named";
dump-file       "/var/named/data/cache_dump.db";
statistics-file "/var/named/data/named_stats.txt";
memstatistics-file "/var/named/data/named_mem_stats.txt";
forwarders     { 168.95.1.1; 139.175.10.20; }; // 如果域名服务器无法解析时,将请求交由168.95.1.1; 139.175.10.20来解析
allow-transfer { none; }; //指定允许接受区域传送请求的主机,说明白一点就是辅DNS定义,比如辅DNS的IP是192.168.139.5,那么可以这样定义{ 192.168.139.5; },要不然主辅DNS不能同步,当然,{}里的也可以用下面提到的ACL。
query-source    port 53;
query-source-v6 port 53;
allow-query     { localhost; };  改为 allow-query     { any; };
};
logging { //指定服务器日志记录的内容和日志信息来源
channel default_debug {
file "data/named.run";
severity dynamic;
};
};
// 这里定义一个acl列表
acl "acl1" {
192.168.139.0/200; 192.168.1.0/200
};
view localhost_resolver {  //定义一个视图
match-clients      { localhost; }; 改为: match-clients      { any; };   //查询者的源地址,any表示localhost_resolver视图对任何主机开放,如果写成{ acl1; },那么就只有acl1表里的IP可以递归查询了
match-destinations { localhost; }; 改为: match-destinations { any; }; //查询者的目标地址,这里也可以写成{ localhost; acl1; }
recursion yes;  //设置进行递归查询
include "/etc/named.rfc1912.zones";  //包含文件,这里也就是载入/etc/named.rfc1912.zones
};
~
~
~