第六招,Linux域名服務
linux 域名服務作者:田逸(sery@163.com) 2006年第3期域名服務是互連網(wǎng)上一個十分重要的服務,也是internet 能夠迅速普及的一個重要原因。域名解析服務解決了用戶記憶ip 地
linux 域名服務
作者:田逸(sery@163.com) <網(wǎng)管員世界> 2006年第3期
域名服務是互連網(wǎng)上一個十分重要的服務,也是internet 能夠迅速普及的一個重要原因。域名解析服務解決了用戶記憶ip 地址的麻煩,因為記住有意義的主機名比記住ip 地址要容易得多,例如主機名www.ibm.com 與ip 地址 129.42.17.99,我相信www.ibm.com 更加容易被記住。
域名服務的功能是一種將主機名轉(zhuǎn)換成ip 地址的一種機制,因為計算機之間的通訊是不能直接識別主機名,只能識別ip 地址。有多種把主機名轉(zhuǎn)換成ip 地址的方法,但是在internet 上,是用域名服務器(domain name server)來處理成千上萬個主機和ip 地址的轉(zhuǎn)換。
申請域名空間
中國的域名管理機構(gòu)是中國國家互連網(wǎng)中心(www.cnnic.net.cn ), 從2002年12月16日起,國家互連網(wǎng)中心不再直接面對最終用戶提供cn 域名注冊相關(guān)服務,域名注冊服務將轉(zhuǎn)由cnnic 認證的域名注冊服務機構(gòu)提供。在注冊域名時,最好選擇本地的域名注冊服務機構(gòu)。 注冊域名成功后,需要注冊商為自己的域名空間解析一個或多個主機,大部分的域名注冊服務商會分配給用戶帳號,允許用戶在自己的域名空間做解析操作。為了自己建立域名服務器,最好申請一段全球唯一單播ip 地址。
安裝域名服務器bind
,大部分linux 發(fā)行版都附帶bind 安裝包,先運行命令 # rpm ╟qa | grep bind ,看是否安裝域名服務軟件bind. 如果沒有安裝的話,可以用linux 的安裝光盤,找到rpm 安裝包后手動安裝。正確安裝成功后,會生成一些相應的配置文件、守護進程及啟動腳本;如:在目錄/etc下有named.c rndc.key, rndc.c /etc/rc.d目錄下的啟動腳本named, 以及 /var 下的區(qū)域文件named.ca 、named.local 文件。也可以下載bind 的源碼包來安裝。
配置域名服務器
配置域名服務器似乎比配置其他的服務要麻煩一些,因為除了修改配置文件外,還需要自己動手編寫在配置文件里定義的區(qū)域文件,而其他一些服務程序僅僅是更改一下配置文件。在配置文件中定義的區(qū)域越多,需要手動創(chuàng)建的區(qū)域文件也越多。
在未做配置之前,讓我們先熟悉一下配置文件named.c
opti {
directory “/var/named”; //定義區(qū)域文件所在的目錄
};
z “. ” in { //頂級域名服務器區(qū)域文件名稱
type hint;
file “named.ca ”;
};
z “l(fā)ocalhost ” in { //本機地址正向解析
type master; //dns服務器的類型分主與輔助兩種
,file “l(fā)ocalhost.z
allow-update {n
};
z “0.0.127.in-addr.arpa in { //本機地址反向解析
type master;
allow-update{n
file “named.local ”;
};
在實際的配置過程中,只需在named.conf 文件里,照“zone{};”代碼塊的格式添加相關(guān)的行,是不是很容易呢?當然,根據(jù)具體的需要,還可以在named.c “forwarder {};”. 現(xiàn)在,假設(shè)申請了一個域名空間sery.com, 一段可用的全球唯一單播ip 地址,并且在域名注冊服務商的服務器上解析出一臺主機ns.sery.com, 其ip 地址為202.108.99.222(假設(shè)的,勿對號入座) ,接下來就可以著手來配置了。
先把安裝了域名解析服務的機器ip 設(shè)置成202.108.99.222, 然后修改配置文件
/etc/named.c
//默認的代碼塊如上,此處省略以減少篇幅
z “sery.com ” in { //正向解析
type master;
file “named.sery.com ”;
};
,z “99.108.202-addr.arpa ” in { //反向解析
type master;
file “ip.sery.com ”;
};
include “/etc/rndc.key”;
保存文件然后退出。然后參照默認的區(qū)域文件/var/named/localhost.zone的樣式手動創(chuàng)建在/etc/named.conf中定義的區(qū)域文件named.sery.com 及ip.sery.com 文件。localhost.z $ttl 86400 //解析的地址在數(shù)據(jù)庫中緩存時間
$origin localhost
@ ld in soa @ root (
20060101 //序列號
28800 //刷新時間
7200 //重試時間
3600000 //過期時間
3h //保存時間
)
ld in ns @
ld in a 127.0.0.1
用vi 編輯器把文件/var/named/named.sery.com改成下列式樣:
,$ttl 86400
@ in soa sery.com. root.sery.com. (
20060101
28800
144000
3600000
86400
)
;name servers
in ns ns.sery.com. //主dns
in ns ns1.sery.com. //輔dns
;mail server
in mx mail.sery.com.
ns in a 202.108.99.222
ns1 in a 202.108.99.200
www in a 202.108.99.201
mail in a 202.108.99.202
ftp in a 202.108.99.203
再創(chuàng)建反向解析文件 # vi /var/named/ip.sery.com: $ttl 86400
,@ in soa 99.108.22-addr.arpa. root.sery.com. (
20060101
28800
144000
3600000
86400
)
in ns ns.sery.com.
in ns ns1.sery.com.
in mx mail.sery.com.
200 in ptr ns1.sery.com.
201 in ptr www.sery.com.
202 in ptr mail.sery.com.
203 in ptr ftp.sery.com.
222 in ptr ns.sery.com
到這個步驟,一個具備基本功能的域名解析服務器就創(chuàng)建成功了。一個不可忽視的問題是在域名空間和主機名的后面都有一個代表頂級域的點“. ”,很多配置任務不能成功的原因就是把這個“. ”給丟掉了。出于安全考慮,最好給配置文件和區(qū)域文件加□□□□問權(quán)限,只允許超級用戶有訪問權(quán)限。即 # chmod 700 /etc/named.c , # chmod ╟r 777 /var/named/.也可以把區(qū)域文件用 # tar cvf named.tar /etc/named 打包后把它備份到安全的地方,這個方案對于充當多域解析或要解析大量主機的服務器很有好處,因為在發(fā)生故障或遷移服務器時恢復dns 服務將大大節(jié)省時間。
,在比較重要的網(wǎng)絡環(huán)境中, 可能需要服務不間斷的運行, 一個單獨的dns 無法保障網(wǎng)絡服務不間斷的提供, 這需要配備一個或多個輔助域名服務器. 輔助域名服務器需要單獨的服務器來擔當. 與主域名服務器的配置文件相比, 只需少許的變化. 接前面的例子, 我們把另外一臺linux 服務器的ip 地址設(shè)置成202.108.99.200, 修改配置文件/etc/named.c opti {
directory “/var/named”;
};
z “. ” in {
type hint;
file “named.ca ”;
};
z “l(fā)ocalhost ” in {
type master;
file “l(fā)ocalhost.z
allow-update {n
};
z “0.0.127.in-addr.arpa in {
type master;
allow-update{n
,file “named.local ”;
};
z “sery.com ” in {
type slave;
file “named.sery.com ”;
master { 202.108.99.222;};
};
z “99.108.202-addr.arpa ” in {
type slave;
file “ip.sery.com ”;
master {202.108.99.222;};
};
include “/etc/rndc.key”;
修改完配置文件后, 把主服務器上創(chuàng)建的區(qū)域文件拷貝到輔助服務器的/var/name目錄下.
dns 服務的啟動和關(guān)閉
由于dns 服務需要持續(xù)運行, 在大部分情況下, 都是把它作為系統(tǒng)服務自動運行的. 要確保相應的運行級別目錄有啟動運行腳本. 運行命令 # service named start 啟動dns 服務, 命令 #
,service named stop 停止dns 服務.
dns 服務的驗證
有很多種方法檢驗dns 服務器配置的正確性, 最簡單的方法是nslookup, 我通常使用從外地的機器訪問用dns 服務解析的主機. 比如我讓上海的兄弟ping 我解析的主機.
額外的話題
1、 關(guān)于多域的dns 解析配置. 一個域名服務器可以提供多域解析服務,需要的操作是在配置文件定義區(qū)域,然后單獨創(chuàng)建定義的每個區(qū)域文件。
2、 主機域名與ip 地址并非一一對應的關(guān)系
3、 dns對于負載均衡的作用。通過別名的定義可以實現(xiàn)簡單的網(wǎng)絡訪問的負載均衡。