本文主要和大家討論在UNIX環境下,使用BIND服務器軟件創建一個DNS主域服務器。我們知道在安裝好一個UNIX系統後,BIND軟件也隨系統基本上安裝好的,要做的工作是對有關的文件參數進行相關的修改與配置。
通常我們可以通過檢查/var/log目錄或系統上它的等價目錄下的日志文件來確定目前擁有的BIND的版本。BIND服務器守護進程named在啟動時將版本號記錄到系統日志中(設施“守護進程”)。用grep查找類似下面這樣的行:
第一行取自HP-UX 11.00發布附帶的情況,第二行來自我們本地維護的一台SunOS機器。後一行撒了一個小謊,因為BIND 8.2.2的補丁4沒有增加補丁級別。實際上是8.2.2-P4。
如果你需要升級BIND軟件的版本的話,可以到www. isc.com網站上下載BIND新版本,如bind-9.0.0.tar打包源文件,解壓並使用tar得到文件的內容,接下來要編譯BIND,需要運行configure命令,從而產生如下的輸出:
下一步,利用make命令構造二進制碼:
最後,通過構造測試程序來測試二進制代碼:
如果所有測試都通過了,就可以執行“make install”安裝新代碼。
UNIX系統的域名解析
Internet上常見的域名解析的有下面兩種方式:
名字到地址的解析(正向解析)
如:www.study.js.cn è 61.155.107.131
地址到名字的解析(反/逆向解析)
如:61.155.107.131è www.study.js.cn
因此我們在配置UNIX域名服務器時,在互聯網上要實現正向/反向解析,只有完成這兩種解析方式,才可以說真正意思上的域名服務器。現在許多Internet上域名服務器特別是Windows系統的域名解析只實現正向解析。
UNIX 的DNS服務器創建
下面以Solaris為例來說明UNIX主域服務器創建過程,對於隨Solaris7、8提供的BIND 8,主要配置文件是/etc/named.conf,BIND4 以及更早的版本使用名為/etc/named.boot的配置文件。/etc/named.conf 文件負責控制DNS服務器的行為,它提供了以下關鍵詞,用來定義操作聲明:
acl----定義一個訪問控制列表,哪些客戶可以使用該服務器。
include ----讀入一個包含聲明的外部文件,該文件使用與/etc/named.conf相同的格式。這在配置文件非常大時是很有用的,可以將不同的部分分成在邏輯上相關的幾個文件。
logging----確定在聲明指定的日志文件中記錄哪些服務器活動。
options----定義本地服務器的操作特征。
server----定義其他服務器的操作特征。
zone----創建本地DNS區域。
在Solaris 中,in.named為進程域名服務器。通過網絡初始化腳本S72inetsvc在level 2級上啟動的,啟動後,它讀取/etc/named.conf以獲取它所管理的區域和區域數據庫文件。區域文件除了包含主機名到IP地址的映射外,還包含其他內容。域名服務器的配置過程包括下列步驟:
1)注冊一個域名
2)創建一個主機名和ip地址的列表
3)創建/etc/named.conf文件
4)創建區域數據文件
在區域數據文件中,信息是以特定的格式存儲的。這些信息被定義為資源記錄類型(RR)。常用的標准的資源記錄說明如下:
SOA(管理開始)資源記錄----在master file(就是bind4裡的zone file)中用到。
NS(名字服務器)資源記錄----列出了域或區域中的名字服務器
A (地址)資源記錄----地址資源記錄用於說明DNS 數據庫中主機的IP地址。它可能即使用到絕對主機名(FQHN),也可能使用相對的主機名(短主機名)。
MX(郵件交換服務器)資源記錄----MX資源記錄負責域內的主機之間的郵件交換服務。
PTR(指示器)資源記錄----通常用於逆向主機名的解析。
CNAME ---- 用於定義主機的別名。
幾個必須的配置文件
named.conf
named.ca
named.local
master file(就是bind4裡的zone file) ----在本文中用study.js.cn和study.js.cn.rev 兩個文件。
在這幾個配置文件中,最主要的是named.conf,在/etc下, 它是named啟動時缺省的啟動文件。一個典型的named.conf文件至少包括options和zone,如:
① named.conf 文件
options {
directory "/var/named"; //數據庫文件的位置,要創建named這個目錄,
multiple-cnames yes;
pid-file "/etc/named.pid";
};
//type domin source host/file backup file
zone "." in {
type hint; //這裡hint表示為緩存服務器
file "named.ca";
};
zone "0.0.127.in-addr.arpa" in {
type master; //這裡master表示為主dns server,
file "named.local";
};
zone "study.js.cn" in {
type master;
file "study.js.cn "; //這裡的study.js.cn就是你要創建的域,正向解析 ,
};
zone "107.155.61.in-addr.arpa" in {
type master;
file "study.js.cn.rev "; // 反向解析,域為107.155.61,
};
在這裡面,options定義master file存放的路徑,對應於某一個域, named就會到這裡找數據文件,如有一個www.study.js.cn的require請求,named就會到/var/named下找study.js.cn這個文件,查出www.study.js.cn的ip。Zone定義一個域,如study.js.cn這個域,type定義域名服務器的類型,master 說明這是一個主域名服務器,第一個zone定義本地服務器為它自己的回送域的主服務器,將地址127.0.0.1映射為localhost,幾乎在所有類型的域名服務器裡都可以看見這個域。
第二個zone用來定義一個高速緩存初始化文件,在named.ca 裡至少包含著根服務器的名字和地址(這些根服務器也會變化). 一般named.ca不需要修改,named.local裡只需要修改SOA紀錄裡域和聯系人。file定義study.js.cn這個域的master file。
在/var/named目錄下創建如下幾個數據庫與/etc/named.conf文件中相對應文件named.ca,named.local,study.js.cn 和 study.js.cn.rev。
② study.js.cn 文件
@ IN SOA dns.study.js.cn.
root.dns.study.js.cn. (2000120101 ; Serial Number10800; Refresh after 3 hours3600 ; Retry after 1 hour 3600000 ; Expire after 6 weeks86400 ) ; Minimum TTL of 1 day
IN NS dns
@ IN MX 10 mail
Localhost IN A 127.0.0.1
www IN A 61.155.107.131
dns IN A 61.155.107.131
mail IN A 61.155.107.132
ftp IN CNAME dns
這裡面的@定義當前域,也就是study.js.cn., IN定義這是一個inter-net類型的紀錄,SOA(管理開始)標志一個授權域的開始,dns.study.js.cn.為開創該域的服務器,可以用主域名服務器,root.dns.study.js.cn.定義聯系人,root後的.就是email裡的@,括號裡的幾個數字定義和本域有關的幾個參數,單位是秒。
前四個參數用於輔域名服務器更新master file,其中;後面的是說明,serial number用於輔域名服務器判斷主域名服務器的 master file是否更新,第五個參數定義這個域在其他域名服務器的cache 裡的有效期,過了這個時間其他的域名服務器就會到這裡來重新查詢相關的信息。
DNS表明這個域的域名服務器是dns.study.js.cn。NS紀錄可以有多個; @ IN MX 10 mail表示:所有發給當前域的郵件全部轉發到服務器mail上。Localhost、www、dns和mail這四條A紀錄的含義是將localhost解析到127.0.0.1 ;www.study.js.cn和dns.study.js.cn解析到61.155.107.131;將mail.study.js.cn解析到61.155.107.132,定義ftp的別名為dns。
③ study.js.cn.rev 文件
該文件存放從IP地址到域名的映射信息,文件內容:
@ IN SOA dns.study.js.cn.
root.dns.study.js.cn. (
2000120101 ; Serial
10800 ; Refresh
1800 ; Retry
3600000 ; Expire
86400 ) ; Minimum
IN NS dns.study.js.cn.
131 IN PTR dns.study.js.cn.
132 IN PTR mail.study.js.cn.
語法說明:
131 IN PTR dns.study.js.cn.
表示:當前域(即61.155.107)中地址為 131的服務器的域名為dns.study.js.cn.
132意義同上,表示的服務器的域名為mail.study.js.cn.
注意,此處服務器的域名要用絕對域名。
④ named.ca 文件
; This file holds the information on root name servers needed to
; initialize cache of Internet domain name servers
; (e.g. reference this file in the "cache . "
; configuration file of BIND domain name servers).
;
; This file is made available by InterNIC registration services
; under anonymous FTP as
; file /domain/named.root
; on server FTP.RS.INTERNIC.NET
; -OR- under Gopher at RS.INTERNIC.NET
; under menu InterNIC Registration Serv