2.37域名服務(wù)(DNS)和BIND試驗(yàn)
估計(jì)時(shí)間: 2個(gè)小時(shí)
目標(biāo): 安裝和配置一個(gè)DNS服務(wù)器
1. 試驗(yàn)的起點(diǎn): 標(biāo)準(zhǔn)的Red Hat Linux安裝
2. 介紹
本次實(shí)驗(yàn)指導(dǎo)您通過使用Berkeley Internet Name守護(hù)進(jìn)程來配置域名服務(wù)。使用模板文件作為指導(dǎo),您將
⑴ 實(shí)現(xiàn)一個(gè)僅有緩存的域名服務(wù)器
⑵ 配置named作為example.com的從域名服務(wù)器
⑶ 配置named作為主域名服務(wù)器用于轉(zhuǎn)發(fā)和IP反查詢
在整個(gè)試驗(yàn)中,您使用的機(jī)器名稱和域名將基于您使用的機(jī)器的IP地址。如果下面的試驗(yàn)出現(xiàn)了X字樣的名稱,您應(yīng)該把X字樣的名稱替換成您的工作站的號(hào)碼(您的IP地址的最后一個(gè)部分)。例如,如果您的工作站的IP的地址是192.168.0.3,您應(yīng)該將stationX.domainX.example.com轉(zhuǎn)換成station3.domain3.example.com。
將數(shù)據(jù)包過濾設(shè)定為無效狀態(tài)。在本次試驗(yàn)開始之前,請(qǐng)確保您的主機(jī)上的所有包過濾已被關(guān)閉(顯然,在實(shí)際使用中您可以利用Linux內(nèi)核的防火墻機(jī)制,然而我們?cè)谶@里關(guān)掉它是為了減少潛在的問題)。
本次試驗(yàn)中以root身份來使用下面命令達(dá)成上面的要求:
service iptables stop
chkconfig iptables off
3. 初始化安裝
⑴ 獲得必要的文件
需要bind,bind-utils和caching-nameserver軟件包。使用 rpm –q 來決定這些軟件包是否被安裝。如果沒有被安裝,通過輸入如下命令來安裝(以root身份):
mkdir /mnt/server1; mount server1:/var/ftp/pub /mnt/server1
rpm –Uvh /mnt/server1/RedHat/RPMS/bind-9*
rpm –Uvh /mnt/server1/RedHat/RPMS/bind-utils*
rpm –Uvh /mnt/server1/RedHat/RPMS/caching-nameserver*
RPM軟件包bind包括DNS守護(hù)進(jìn)程和支持腳本,但是沒有配置和區(qū)域文件。caching-nameserver提供了一個(gè)通用的配置和區(qū)域文件。
⑵ 配置本地的(轉(zhuǎn)換器)解析器
配置您的主機(jī)使得它能夠被用來作為域名服務(wù),而不是192.168.0.254。
注意:直到您的域名服務(wù)器被正確安裝和配置,您的機(jī)器的DNS服務(wù)不會(huì)奏效。您也應(yīng)該注意到當(dāng)您的系統(tǒng)重新啟動(dòng)的時(shí)候或者重新設(shè)定您的網(wǎng)絡(luò)的時(shí)候您的/etc/resolve.conf將會(huì)被改寫(除非您對(duì)您的網(wǎng)絡(luò)界面設(shè)定了在本書中提及的PEERDNS)
按照如下編輯您的(轉(zhuǎn)換器)解析器配置文件
/etc/resolv.conf
search domainX.example.comnameserver 192.168.0.X
(記住將X替換成您的工作站的號(hào)碼)
第一行定義了如果出現(xiàn)簡單的不符合完整域名的主機(jī)名稱時(shí)默認(rèn)添加的缺省域。第二行指定了將主機(jī)192.168.0.X (您的機(jī)器)來作為DNS查詢的解析器。
為了簡化情況,將除了localhost主機(jī)名稱的定義從您的主機(jī)名稱配置文件中刪除。
/etc/hosts
127.0.0.1 localhost localhost.localdomain
該步驟并不是必需的,但是可以簡化DNS的調(diào)式。有時(shí)候安裝程序會(huì)將符合完整域名的主機(jī)名放在localhost的這一行,這樣一來會(huì)使得您無法準(zhǔn)確的確定您的域名服務(wù)器配置是否正確。
4.配置一個(gè)僅有緩存的域名服務(wù)器
第一個(gè)配置您將建立一個(gè)僅有緩存的域名服務(wù)器。這種類型的域名服務(wù)器對(duì)于任何區(qū)域都不授權(quán)。僅有緩存的域名服務(wù)器被設(shè)定為主域名服務(wù)器。當(dāng)主機(jī)名稱或者IP地址需要被解析的時(shí)候,僅有緩存的域名服務(wù)器將查詢請(qǐng)求轉(zhuǎn)發(fā)到另外一臺(tái)域名服務(wù)器或者到根域名服務(wù)器來決定授權(quán)的用來解析的域名服務(wù)器。一旦解析完成,僅有緩存的域名服務(wù)器在緩存中存儲(chǔ)解析的信息,該解析信息有一段的生存周期。以后的查詢將會(huì)變得很快。
您已經(jīng)安裝完對(duì)于此項(xiàng)配置所有必須的文件。按照如下步驟來配置域名服務(wù)器:
⑴ 在由caching-nameserver提供的/etc/named.conf中的“option”區(qū)域添加下面的內(nèi)容:
forwarders {192.168.0.254; };
forward only;
這將導(dǎo)致您工作站上的僅有緩存的域名服務(wù)器轉(zhuǎn)發(fā)其不能解析的DNS查詢到在192.168.0.254的域名服務(wù)器,并且如果超時(shí),不與根域名服務(wù)器直接聯(lián)系。
⑵ 啟動(dòng)named: #service named start
⑶ 測(cè)試您的配置使用host或者dig來查詢一些example.com名稱和一些真實(shí)的Internet域名(如果您有Internet訪問接口的話)
5.配置一個(gè)輔助域名服務(wù)器
一個(gè)從域名服務(wù)器將為一個(gè)區(qū)域提供授權(quán)的回答,但不是區(qū)域的授權(quán)開始。您現(xiàn)在將重新配置您的域名服務(wù)器作為example.com區(qū)域和0.168.192.in-addr.arpa區(qū)域的從域名服務(wù)器。
⑴ 在您的/etc/named.conf文件中添加如下行
zone “example.com” {
type slave;
masters { 192.168.0.254; };
file “slave-example.com.zone”;
};
zone “0.168.192.in-addr.arpa” {
type slave;
masters { 192.168.0.254; };
file “slave-192.168.0.zone”;
};
⑵ 重新啟動(dòng)named: # servcie named restart
⑶ 檢查slave-example.com.zone和slave-192.168.0.zone文件。這些文件應(yīng)該包含了從位于192.168.0.254的主域名服務(wù)器傳過來的區(qū)域數(shù)據(jù)庫的副本。
確保所有的正確工作。在您開始下一個(gè)部分之前,去除您剛才在第一步中在/etc/named.conf中加入的兩個(gè)從區(qū)域。
6.配置一個(gè)主域名服務(wù)器
現(xiàn)在您將配制您的域名服務(wù)器來負(fù)責(zé)對(duì)于區(qū)域“domainX.example.com”的解析工作。您將同樣負(fù)責(zé)向?qū)?yīng)的反查區(qū)域。將采用如下的步驟:
A.編輯配置文件(named.conf)
B. 準(zhǔn)備區(qū)域“domainX.example.com”和區(qū)域“X.0.168.192.in-addr.arpa”的數(shù)據(jù)庫文件。
C. 重新啟動(dòng)域名服務(wù)器
D. 測(cè)試您的配置
為了您能夠準(zhǔn)備您的配置文件和區(qū)域文件,我們提供了模板文件。您可以通過匿名ftp方式從以下地址獲得:
ftp://192.168.0.154/pub/namedfiles/
在如下的步驟中,記得將范例文件中中每一出出現(xiàn)的X替換成您的工作站的號(hào)碼。
⑴ 主配置文件
下面是我們應(yīng)該考慮的三個(gè)區(qū)域
① “.”(根級(jí)別)區(qū)域
“.”區(qū)域是DNS層次中的最高層。根服務(wù)器提供了哪些服務(wù)器對(duì)于給定的域享有授權(quán)。“.”節(jié)應(yīng)該以如下的方式出現(xiàn):
zone “.” {
type hint;
file “named.ca”;
};
② “domainX.example.com”(正向查詢)區(qū)域
添加如下的行,使得您的域名服務(wù)器成為區(qū)域的主服務(wù)器。
zone “domainX.exmaple.com” {
type master;
file “domainX.example.com.zone”;
};
③ “X.0.168.192.-in-addr.arpa”(反向查詢)區(qū)域
現(xiàn)在添加如下的行,使得您的域名服務(wù)器成為反查區(qū)域的主服務(wù)器。
zone “X.0.168.192.in-addr.arpa” {
type master;
file “192.168.0.X.zone”;
};
下面是位于192.168.0.2的station2的樣例配置文件
/etc/named.conf
options {directory “/var/named”;forwarders {192.168.0.254; };forward only;};zone “.” { type hint; file “named.ca”;};zone “localhost” IN { type master; file “localhost.zone”;};zone “0.0.127.in-addr.arpa” IN { type master; file “named.local”;};zone “domain2.exmaple.com” { type master; file “domain2.example.com.zone”;};zone “2.0.168.192.in-addr.arpa” { type master; file “192.168.0.2.zone”;};
⑵. 數(shù)據(jù)庫文件
您的主要配置文件指定了/var/named為數(shù)據(jù)庫所在的目錄。您現(xiàn)在必須在這個(gè)目錄下面為您區(qū)域和反查區(qū)域建立數(shù)據(jù)庫文件。這些數(shù)據(jù)庫文件包括您的SOA,NS,A,CNAME,MX,PTR和其他的可能的記錄。所有的數(shù)據(jù)文件以如下的行開頭:
$TTL 86400
該數(shù)值是缺省的以秒計(jì)的生存期間,該數(shù)值對(duì)所有在該域中的記錄有效
① 區(qū)域“domainX.example.com”
在主配置文件中,區(qū)域“domainX.example.com”數(shù)據(jù)庫文件被存放在/var/named/domainX.example.com。這個(gè)文件含有類似的如下的記錄:
① 起始授權(quán)記錄:
@ IN SOA stationX.domainX.example.com. root.stationX.domainX.example.com. (
2001101100; Serial
28800 ;Refresh
14400 ;Retry
3600000 ;Expire
)
“起始授權(quán)”(SOA)記錄是數(shù)據(jù)庫文件的第一個(gè)資源記錄,但是它可能帶了一個(gè)前導(dǎo)符$TTL(缺省存活時(shí)間)。SOA記錄使得數(shù)據(jù)庫文件稱為該區(qū)域的授權(quán)的信息源。第一個(gè)標(biāo)記是后繼記錄適合的域,通常以“@”簡化形式出現(xiàn),如果擴(kuò)展開來那就是在named.conf文件中“zone”節(jié)中所指明的域名(或者是在文件通過$ORIGIN定義的當(dāng)前區(qū)域,如果該定義存在的話)。
第四個(gè)標(biāo)記使該域的主域名服務(wù)器,第五個(gè)是負(fù)責(zé)維護(hù)這個(gè)數(shù)據(jù)庫的系統(tǒng)管理員的電子郵件的地址,注意第一個(gè)分隔符替換了第一個(gè)標(biāo)記的@符號(hào)(你能解釋為什么嗎?)。接下來在記錄中的條目指定了交互解析域名服務(wù)器的動(dòng)態(tài)特性。
② 域名服務(wù)器記錄:
@ IN NS stationX.domainX.example.com.
域名服務(wù)器(NS)標(biāo)識(shí)了主機(jī)作為特定域的授權(quán)的域名服務(wù)器。他們對(duì)于這個(gè)區(qū)域指定了主和從服務(wù)器和代表授權(quán)的子域的其他的服務(wù)器(例如,server1.example.com對(duì)于所有domainX.example.com的域名服務(wù)器有一個(gè)NS記錄)。正如您對(duì)于“domainX.example.com”只能有一個(gè)單一的域名服務(wù)器,您也只能有一個(gè)單一的NS記錄。
③ 地址記錄:
domainX.example.com IN A 192.168.0.X
stationX.domainX.example.com IN A 192.168.0.X
www IN A 192.168.0.X
ftp IN A 192.168.0.X
pop IN A 192.168.0.X
地址(A)記錄將主機(jī)名稱映射到IP地址(域名服務(wù)器的主要功能)。一個(gè)數(shù)據(jù)庫文件通常包含A記錄對(duì)應(yīng)著許多IP地址。然而在我們的教室的環(huán)境里,在您的區(qū)域里面只有一臺(tái)主機(jī)。注意第一個(gè)A記錄設(shè)定了域的“缺省的IP地址”。接下來的A記錄建立了多個(gè)主機(jī)名稱對(duì)應(yīng)一個(gè)IP地址。
主機(jī)名稱可以是一個(gè)完全符合標(biāo)準(zhǔn)的名稱(FQDN),也可以是一個(gè)縮寫。所有的不以點(diǎn)號(hào)結(jié)尾的主機(jī)名稱都將被視為縮寫,并且區(qū)域名稱被附加到主機(jī)名稱的后面。例如,第三個(gè)A記錄就是主機(jī)名稱http://www.domainx.example.com./
④ 規(guī)范名稱(別名)記錄:
www1 IN CNAME stationX.domainX.example.com.
www2 IN CNAME stationX.domainX.example.com.
www3 IN CNAME stationX.domainX.example.com.
別名(CNAME)記錄建立了主機(jī)名稱的別名。注意到別名映射到主機(jī)名稱而不是IP地址。
CNAME不應(yīng)該出現(xiàn)在右邊的數(shù)據(jù)區(qū)域作為真實(shí)的主機(jī)名稱,對(duì)于多重別名的解析的速度會(huì)很慢。
⑤ 郵件交換記錄
@ IN MX 10 stationX.domainX.example.com.
domainX.example.com IN MX 10 stationX.domainX.example.com.
郵件交換記錄(MX)記錄了一個(gè)主機(jī)它將會(huì)處理給定的域或者主機(jī)郵件的轉(zhuǎn)發(fā)。當(dāng)一個(gè)郵件傳遞代理(MTA)試圖投遞信件的時(shí)候,它將首先試圖在DNS中查找目的主機(jī)的MX記錄。如果該MX記錄存在,那么將直接發(fā)送到MX記錄指定的主機(jī)。反之,如果不存在MX記錄,MTA對(duì)于目的主機(jī)進(jìn)行標(biāo)準(zhǔn)的DNS查詢,并且直接投遞到該主機(jī)上去。MX記錄用來建立郵件的網(wǎng)關(guān),和作為缺省的對(duì)于域的郵件的目的地。
② 區(qū)域“X.0.168.192.in-addr.arpa”
在/etc/named.conf中,我們指定了/var/named/192.168.0.X.zone作為區(qū)域X.0.168.192.in-addr.arpa的反查區(qū)域數(shù)據(jù)庫文件。他應(yīng)該包含SOA記錄,NS記錄,和對(duì)應(yīng)的PTR記錄。
I 起始授權(quán)記錄
@ IN SOA stationX.domainX.example.com. root.stationX.domainX.example.com. (
4;
10800;
3600;
604800;
86400)
IN NS stationX.domainX.example.com.
SOA和NS記錄與前面的區(qū)域文件中的名稱應(yīng)該相同。
注意在NS記錄開頭的空白的地方是非常特別的,并且被解釋為“和上一條記錄相同”的縮寫。在本例中,上一條記錄為符號(hào)“@”,其本身就是在主配置文件中定義的域名的縮寫。
II 指針記錄
X.0.168.192.IN-ADDR.ARPA. IN PTR stationX.domainX.example.com.
指針(PTR)記錄通過間接的機(jī)制將名稱映射到IP地址。作為分離的技術(shù)來進(jìn)行IP地址的反查詢的替代,BIND采用了一種修改的對(duì)于特定主機(jī)名稱的正向查詢的方式。這種“反向域名查詢”以反轉(zhuǎn)的IP地址后面添加“in-addr.arpa”域的形式出現(xiàn)。這將允許域名服務(wù)器使用相同的機(jī)制進(jìn)行正反兩方面的查詢。
③ 把他們放在一起
下面是位于192.168.0.2的station2的樣例配置文件:
/var/named/domain2.example.com.zone
$TTL 86400@ IN SOA station2.domain2.example.com. root.station2.domain2.example.com. ( 2001101100; Serial 28800 ; Refresh 14400 ; Retry 3600000 ; Expire 0) ; Negative @ IN NS station2.domain2.example.com. @ IN A 192.168.0.2station2.domain2.example.com. IN A 192.168.0.2www IN A 192.168.0.2ftp IN A 192.168.0.2pop IN A 192.168.0.2www1 IN CNAME station2.domain2.example.com.www2 IN CNAME station2.domain2.example.com.www3 IN CNAME station2.domain2.example.com.@ IN MX 10 station2.domain2.example.com.station2 IN MX 10 station2.domain2.example.com.
/var/named/192.168.0.2.zone
$TTL 86400@ IN SOA station2.domain2.example.com. root.station2.domain2.example.com. (4 10800 3600 604800 86400) IN NS station2.domain2.example.com.2.0.168.192.IN-ADDR.ARPA. IN PTR station2.domain2.example.com.
⑶. 重新啟動(dòng)域名服務(wù)器
再一次,我們將重新啟動(dòng)域名服務(wù)器。然后通過運(yùn)行pidof命令來確定其被運(yùn)行:
service named restart
pidof named
查看一下服務(wù)器添加到/var/log/messages文件中的條目。確定您的域名在調(diào)入的時(shí)候沒有發(fā)生錯(cuò)誤。
如果您已經(jīng)有一個(gè)域名服務(wù)器在運(yùn)行并且不想重新啟動(dòng)它,您可以使用service named reload 來重新裝入配置文件,這樣子對(duì)于停止和啟動(dòng)服務(wù)器而言都比較快。
⑷. 測(cè)試域名服務(wù)器
進(jìn)行如下DNS查詢,您能夠解釋所有的結(jié)果么?
host stationX
dig stationX.example.com
dig stationX.example.com @192.168.0.254
dig stationX.example.com
host server1.example.com
host 192.168.0.X
dig –x 192.168.0.X
dig –x 192.168.0.254
host www
host www1
記住dig期望給與一個(gè)FQDN作為查詢,然而host則通過查看位于文件/etc/resolv.conf的查詢信息。試著在別的人的域名服務(wù)器和子域上進(jìn)行附加的查詢。如果設(shè)定正確,您將能夠在其他教室系統(tǒng)上進(jìn)行正向和反向查詢。
挑戰(zhàn)性的項(xiàng)目
通過增加多個(gè)“A”記錄使得一個(gè)主機(jī)名稱對(duì)應(yīng)著不同的IP地址來配置一個(gè)“輪轉(zhuǎn)”的主機(jī)名稱。域名服務(wù)器該如何處理這種情況?提示: 試圖嘗試設(shè)定這些的A記錄的TTL為0。
在您的域中增加子域“support.somainX.example.com”。增加合適的資源記錄使得它能夠反向指向您的IP地址。
與另一臺(tái)工作站合作,成為另一臺(tái)工作站的從域名服務(wù)器,在您的區(qū)域中為您的工作站增加一個(gè)新的CNAME,確保這個(gè)改變能夠傳播到從服務(wù)器。
收尾工作
接下來的試驗(yàn)就較為簡單了,一旦您重新啟動(dòng)您的工作站,所有的DNS查詢將會(huì)重新設(shè)定到教室中的服務(wù)器上。為了確保收尾,確保您重新設(shè)定/etc/resolve.conf到其初始的狀態(tài)。
/etc/resolv.conf
search example.comnameserver 192.168.0.254
/etc/hosts
127.0.0.1 localhost localhost.localdomain localhost192.168.0.X stationX.example.com
(如果您關(guān)閉后啟動(dòng)eth0接口,DHCP將會(huì)自動(dòng)為您設(shè)定配置文件)