我們知道,UNIX DNS服務器的最常用軟件是BIND,它源自U.C. Berkeley但現在則由Internet Software Consortium.負責。BIND提供了解析器和名字服務器軟件,解析器做實際的查詢工作而名字服務器則提供響應。BIND將名字服務器分成三個部分:主域名服務器包含了有關一個域的全部數據;輔助域名服務器則有效地從主域名服務器拷貝DNS數據庫;(唯)高速緩沖服務器通過緩沖查詢來建立例外的DNS數據庫。只有主域名服務器和輔助域名服務器才被當作涉及特定域的授權服務器。
下面以AIX 的UNIX系統為例來說明主域名服務器、輔助域名服務器和UNIX DNS客戶機的創建,來實現“規劃與設計篇”的域名結構的例子。
一、 主域名服務器的創建 創建主域名服務器的步驟:
創建named的控制文件;
創建域名區域文件;
創建IP區域文件和本地IP區域文件;
創建緩沖區文件;
1、named控制文件
named的控制文件是/etc/named.boot(BIND4版本),在named啟動時讀入。它說明named使用的所有數據的存放位置,named用這些數據創建一個初始域名服務器數據庫。
named.boot文件內容如下圖所示:
directory項告訴named在/etc/named.boot文件中所列文件存放的目錄。
Domain項說明本地主機所在的域,域名服務器用它作為缺省域。
Primay項表明本地主機named作為哪個域的主域名服務器,以及從哪個文件獲得描述本域的數據。
反向映射的域名永遠以“in-addr.arpa”結尾,形成一個域名的IP地址必須反寫,這是因為IP地址的最重要的8位位組應排在第一位,而域名表達方式與IP的表達方式恰好相反,即最低有效的8位位組排在最前面,每個物理網絡應用一個資源文件與之對應。
在cache記錄項的domain域中的圓點“.”表示末列在其他地方的任何領域,緩存文件(cache file)允許缺省域中的一個主機與該域之外的其他主機通信。
/etc/named.conf(BIND8版本)文件內容如下:
options {
directory "/etc";
};
zone "." IN {
type hint;
file "named.ca";
};
zone "localhost" IN {
type master;
file "localhost.zone";
allow-update { none; };
};
zone "0.0.127.in-addr.arpa" IN {
type master;
file "named.local";
allow-update { none; };
};
zone "ghq.js.com" IN {
type master;
file "resolv.conf";
allow-update { none; };
};
zone "1.32.10.in-addr.arpa" IN {
type master;
file "named.revip1";
allow-update { none; };
};
zone "2.32.10.in-addr.arpa" IN {
type master;
file "named.revip2";
allow-update { none; };
};
筆者認為在這裡不用解釋,大家也會知道上面配置的具體含義。
2、域名區域文件
AIX系統提供了創建區域文件的awk文件。awk文件將讀取系統的/etc/hosts文件,然後創建相應的區域文件。但是awk文件並不意味著能為每個環境建立一個完美的區域文件,它僅提供一個創建區域文件的入門手段。文件建立以後,就可用文件編輯器根據需要修改或添加記錄。作為一個例子,用awk文件生成區域文件的方法如下:
# cd /usr/samples/tcpip
# ./hosts.awk /etc/hosts >/etc/named.dc
# ./addrs.awk /etc/hosts >/etc/named.revip1
# ./addrs.awk /etc/hosts >/etc/named.revip2
下面給出了一個域名區域文件/etc/named.dc的內容。
/etc/named.dc文件內容如下圖所示:
資源記錄格式為:
NAME TTL CLASS TYPE RDATA
其中:
NAME:說明一個域、區域、一個主機名字或者主機別名等。它必須在文件的第一列。若該域為空,則其值為前一個資源記錄的NAME域值;
TTL:信息存活時間,以秒為單位。99999999表示信息永遠不會超時。如果沒有TTL值,則把TTL缺省值設置為SOA記錄的Minimum項之值;
CLASS:記錄的地址類型,有IN和ANY兩個值。其中IN代表Intemet地址,而ANY代表任何其他的地址類;
TYPE:資源記錄類型。合法的類型有:
SOA----Start of Authority (中央權威機構);
NS----NameServer(域名服務器);
A----Address(地址);
HINFO----標准各字;
MX----郵件交換。
RDATA:說明特殊資源記錄類型的細節,它有幾個特殊字符:
:----表示注釋;
.----用在名字域時,若圓點後無具體內容則該圓點表示當前域;
@ ----用在名字域時,單個的“@”表示當前域;
()----圓括號用來接續不止一行的數據項。
SOA表示管理機構所在地。SOA記錄表明:
數據文件所在的主機名字,以及負責維護數據文件的用戶的E-mini地址;
serial --表示數據文件版本號。當數據文件裡的數據修改時,這個版本號應隨之增加;
refresh --檢查數據是否需要刷新的時間間隔,以秒為單位。為輔助域名服務器用;
retry --輔助域名服務器在做刷新時無法連接到主域名服務器的情況下,輔助域名服務器等待的時間間隔,以秒為單位;
expire --上限時間;用於輔助域名服務器。當輔助域名服務器一直不能與主域名服務器通信時,輔助域名服務器刷新數據的時間上限;
minimum --缺省的最小存活時間。當其他項的TTL值比此值小時,用此值替代。
3、IP區域文件和本地IP區域文件
IP Zone文件如下所示。
/etc/named .revip1文件內容下圖3所示:
本地IP Zone文件如下所示。
/etc/named.local文件內容如下:
@ IN NS sys1.ghq.js.com
1 IN PTR localhost.ghq.js.com
在DNS裡,域名形成一種層次結構。為了解析一個地址,系統從根向下針對名字中的每個域查詢域名服務器,把主機名字翻譯成主機IP地址。
IP區域文件的合法資源記錄類型是SOA、NS和PTR----域名指針(Domain Name Pointer)。由於另一些系統位於10.32.2網絡,因此IP區域文件必須有兩個,每個網絡一個。這兩個文件都由/etc/hosts生成,而/etc/hosts文件中包含了兩個網絡的登記項。因此必須用文本編輯將另一網絡的登記項刪掉,只保留本地網絡上的主機地址八位位組(把本地網絡主機的網絡地址部分的八位位組也刪掉)。
除了這個IP區域文件外,還必須有一個本地IP區域文件,它包含網絡127.0.0.1的回送地址。其合法的資源記錄類型為SOA、NS和PTR。對於本地IP區域文件,SOA記錄不是必要的,但在域名區域文件和IP區域文件中是必要的。
4、緩存文件
當一個名字不能在本區域解析時,named進程會和緩存文件中所列的其他域名服務器進行交互,直到它解析出這個名字為止,或者直至它查詢了所有列出的域名服務器為止。
/etc/named.ca 文件內容如下:
. 999999 IN NS sys99.js.com
sys99.js.com 999999 IN A 10.32.7.99
緩存文件包含域名服務器的地址,這些域名服務器是更高一級域的權威域名服務器。
二、輔助域名服務器的創建 創建輔助域名服務器的步驟如下:
創建named的控制文件;
創建本地IP區域文件和緩存文件。
1、named控制文件
輔助域名服務器的named控制文件與主域名服務器略有不同,它比主域名服務器的Named控制文件至少多一個secondary項。Secondary項表示本地named進程是本域的輔助域名服務器,它接收來自指定IP地址的域信息,並把它存放在指定的文件中,這個文件是主域名服務器的備份文件。
/etc/named.boot(BIND4版本)文件內容如下圖所示:
若從其中一個主域名服務器收到域信息的新拷貝,則named進程將更新那個域名服務器的備份文件。named進程第一次啟動時,輔助域名服務器就下載主域名服務器的信息;輔助域名服務器根據SOA記錄規定的刷新時間間隔,去主域名服務器查詢相關信息。
/etc/named.conf(BIND8版本)文件內容如下:
options {
directory "/etc";
};
zone "." IN {
type hint;
file "named.ca";
};
zone "localhost" IN {
type master;
file "localhost.zone";
allow-update { none; };
};
zone "0.0.127.in-addr.arpa" IN {
type master;
file "named.local";
allow-update { none; };
};
zone " ghq.js.com " IN {
// type master;
type slave;
// type後面的值已經成為slave;
file " named.dc.bak ";
//file 後面也可以是別的文件名不必與主域DNS服務器的設置一樣
masters { 10.32.1.1; };
//10.32.1.1 為主域DNS服務器的IP地址,
};
zone "1.10.32.in-addr.arpa" IN {
// type master;
type slave;
// typ