- 論壇徽章:
- 0
|
DNS(Domain Name Service)服務(wù)器是網(wǎng)絡(luò)中我們隨時都需要的服務(wù)器.在因特網(wǎng)上各個主機是由ip地址來標(biāo)識地,但是這些數(shù)字十分難記,人們往往比較偏愛使用名字來訪問各個網(wǎng)站,所以域名服務(wù)器在因特網(wǎng)中占有十分重要的作用.
一 DNS的原理
DNS提供的服務(wù)就是要將人們所熟悉的名字映射成IP地址.一般有兩種機制來完成,一種是有主機表來完成,另一種是采用域名服務(wù)的守護(hù)進(jìn)程(named , 或 in.namd)來實現(xiàn).
1. 主機表機制
在INTERNET初期,名字服務(wù)是通過NIC(Network Information Center)中的一張大型的Internet主機表來完成的。這張表被稱為NIC注冊主機表。它存儲在NIC的netinfo/hosts.txt文件中,它保存著所有已經(jīng)注冊的網(wǎng)站的主機名和ip地址。Hosts.txt的文件格式是
n NET : 26.0.0.0 : MILNET:
關(guān)鍵字: 網(wǎng)絡(luò)地址 : 網(wǎng)絡(luò)名
n HOST: 16.1.0.9 :WSL.DEC.COM : VAX : ULTRIX : TCP/SMTP:
關(guān)鍵字:主機地址 :主機名 :計算機:操作系統(tǒng):服務(wù)名
n GATEWAY:18.10.0.4,18.26.0.138:GW.LCS.MIT.EDU:VAX:CGW:IP/GW,EGP
關(guān)鍵字 :網(wǎng)關(guān)地址 : 網(wǎng)關(guān)名 :計算機:操作系統(tǒng):服務(wù)名
大家可以看到hosts.txt文件中前兩個關(guān)鍵字(網(wǎng)絡(luò)記錄和主機紀(jì)錄)在linux系統(tǒng)中就分為兩張表/etc/networks和/etc/hosts。
下面就舉一個/etc/hosts的例子:
#********************************************************************
#*/etc/hosts Table of IP addresses and host names *
127.0.0.1 localhost loghost loopback
202.117.1.8 bbs bbs.xjtu.edu.cn
202.117.1.24 ftp ftp.xjtu.edu.cn
202.112.11.130 dns dns.xnaet.edu.cn
202.117.1.13 www www.xjtu.edu.cn
#********************************************************************
現(xiàn)在解釋一下/etc/hosts各個紀(jì)錄的含義。127.0.0.1 是一個ip地址,localhost 是對應(yīng)于127.0.0.1的主機名,loghost和loopback 是它的別名,主機名和別名都會被解析到同一個ip地址,也就是127.0.0.1。
/etc/networks 的范例文件是
#*******************************************************************
# The networks file associates Internet Protocol (IP) network numbers
# with network names. The format of this file is:
#
# network-name network-number nicnames . . .
#
#
# The loopback network is used only for intra-machine communication
loopback 127
#
# Internet networks
#
arpanet 10 arpa # Historical
milnet 26 mil
#******************************************************************
現(xiàn)在解釋一下/etc/networks的紀(jì)錄格式,arpanet 是網(wǎng)絡(luò)名,10 是網(wǎng)絡(luò)地址,arpa是網(wǎng)絡(luò)別名。
大家也可以看到,隨著Internet中主機數(shù)目的增加,主機表機制已經(jīng)越來越不適應(yīng)發(fā)展,在一張有這幾萬條紀(jì)錄的主機表中,名字和ip地址映射查找地效率將很低,所以大多數(shù)的主機表系統(tǒng)已經(jīng)被DNS所取代。但是主機表系統(tǒng)在小型網(wǎng)絡(luò)中仍然十分有用,在小型網(wǎng)絡(luò)中,由于主機的數(shù)目比較少,并且由于主機的信息變化比較少,所以采用配置和維護(hù)的主機系統(tǒng)就比較有效。另外,主機表對NIS系統(tǒng)也十分重要。現(xiàn)在通常采用NIS和DNS同時使用,取長補短。
2. DNS原理
DNS實際上是一個分布式的數(shù)據(jù)庫系統(tǒng),它是有層次結(jié)構(gòu)的系統(tǒng),DNS并沒有一張保存著所有的主機信息的主機表,相反,這些信息是存放在許多分布式的域名服務(wù)器中,這些域名服務(wù)器組成一個層次結(jié)構(gòu)的系統(tǒng),頂層是一個根域(root domain),它使用符號點號”. “來表示。其實,域的概念和我們地理上的行政區(qū)域管理的概念是類似地,一個國家行政機構(gòu)包括中央政府,(就相當(dāng)于根域)和各個省份的省政府(第一級域名),省政府之下又包括許多市政府(第二級域名),市政府之下包括許多縣政府(第三級域名),等等依次類推,每一個下級子域都是上級域的子域。每個域都有自己一組的域名服務(wù)器,這些服務(wù)器中保存著當(dāng)前域的主機信息和下級子域的域名服務(wù)器信息。例如根域服務(wù)器不必知道根域內(nèi)所有主機的信息,它只要知道所有子域的域名服務(wù)器的地址即可。
第一層域一般有兩種類型,一種是地理域,另一種是機構(gòu)域,地理域是通過地理區(qū)域來劃分域名,例如中國的地理域名是CN,日本是JP,香港是HK,美國一般不使用地理域名;機構(gòu)域是根據(jù)注冊的機構(gòu)類型來分類,機構(gòu)類的類型為:
n Com 商業(yè)機構(gòu)
n Edu 教育機構(gòu)
n Gov 政府機構(gòu)
n Mil 軍事機構(gòu)
n Org 一些國際組織和一些非盈利性組織等等
n Net 網(wǎng)絡(luò)服務(wù)提供商
下圖就表示了域名的層次結(jié)構(gòu):
圖一 DNS的層次結(jié)構(gòu)
在圖一中包括了地理域和機構(gòu)域兩種類型,其中地理域是以中國為例說明的,機構(gòu)域是以com舉例說明的。如上圖所示,www.china-pub.com 標(biāo)明了Internet上的一個主機,com是一級域,china-pub是二級域,www,mail,dns都是主機名,用以標(biāo)明主機的服務(wù)類型。這個例子就形象的說明了域名系統(tǒng)的層次結(jié)構(gòu)和分層管理機制。
在上面介紹了域的概念和域的層次結(jié)構(gòu)之后,就可以了解dns的工作原理和過程,dns的工作過程是:
a) 客戶機提出域名解析請求,并將該請求發(fā)送給本地的域名服務(wù)器.
b) 當(dāng)本地的域名服務(wù)器收到請求后,就先查詢本地的緩存,如果有該紀(jì)錄項,則本地的域名服務(wù)器就直接把查詢的結(jié)果返回.
c) 如果本地的緩存中沒有該紀(jì)錄,則本地域名服務(wù)器就直接把請求發(fā)給根域名服務(wù)器,然后根域名服務(wù)器再返回給本地域名服務(wù)器一個所查詢域(根的子域)的主域名服務(wù)器的地址.
d) 本地服務(wù)器再向上一步返回的域名服務(wù)器發(fā)送請求,然后接受請求的服務(wù)器查詢自己的緩存,如果沒有該紀(jì)錄,則返回相關(guān)的下級的域名服務(wù)器的地址.
e) 重復(fù)第四步,直到找到正確的紀(jì)錄.
f) 本地域名服務(wù)器把返回的結(jié)果保存到緩存,以備下一次使用,同時還將結(jié)果返回給客戶機.
讓我們舉一個例子來詳細(xì)說明解析域名的過程.假設(shè)我們的客戶機想要訪問站點www.china-pub.com,本地的域名服務(wù)器是dns.xjtu.edu.cn ,一個根域名服務(wù)器是NS.INTERNIC.NET,所要訪問的網(wǎng)站的域名服務(wù)器是dns.china-pub.com,域名解析的過程如下:
(1)客戶機發(fā)出請求解析域名www.china-pub.com.的報文
(2)本地的域名服務(wù)器收到請求,查詢本地緩存,假設(shè)沒有該紀(jì)錄,則本地域名服務(wù)器dns.xjtu.edu.cn則向根域名服務(wù)器ns.internic.net發(fā)出請求解析域名www.china-pub.com.
(3)根域名服務(wù)器ns.internic.net.收到請求后查詢本地紀(jì)錄得到如下結(jié)果,china-pub.com NS dns.china-pub.com,同時給出dns.china-pub.com的地址,并將結(jié)果返回給域名服務(wù)器dns.xjtu.edu.cn.
(4).域名服務(wù)器dns.xjtu.edu.cn 收到回應(yīng)后,再發(fā)出請求解析域名www.china-pub.com報文.
(5)域名服務(wù)器 dns.china-pub.com收到請求后,查詢本地紀(jì)錄找到一條紀(jì)錄如下: www.china-pub.com A 211.100.6.143,并將結(jié)果返回給域名服務(wù)器dns.xjtu.edu.cn
(6)域名服務(wù)器將返回的結(jié)果保存到本地緩存,同時將結(jié)果返回給客戶機.
這樣就完成了一次域名解析過程.
3. DNS和NIS的區(qū)別和聯(lián)系
NIS(Network Information Service網(wǎng)絡(luò)信息服務(wù))和DNS是類似的,都是一個數(shù)據(jù)庫系統(tǒng),它是由sun公司提出概念并開發(fā)出來的.他們都解決了主機表機制中主機表龐大的缺點,但是NIS適用于局域網(wǎng)中提供名字服務(wù),同時NIS不僅僅提供名字服務(wù),它還將幾個系統(tǒng)的文件影像成為可以查詢的數(shù)據(jù)庫,例如/etc/hosts和/etc/networks就是這樣的文件,可以供NIS客戶機使用.在Internet中DNS依然占有絕對的地位,但是同時有些系統(tǒng)卻同時使用/etc/hosts來進(jìn)行名字服務(wù).在linux系統(tǒng)中還有一個文件十分重要,它就是/etc/nsswitch.conf,這個文件是系統(tǒng)數(shù)據(jù)庫和名字服務(wù)交換配置文件.
它的一個樣例是 /etc/nsswitch.conf
######|###################################################################
passwd: files nisplus nis
shadow: files nisplus nis
group: files nisplus nis
hosts: files dns nisplus nis
services: nisplus [NOTFOUND=return] files
networks: nisplus [NOTFOUND=return] files
protocols: nisplus [NOTFOUND=return] files
rpc: nisplus [NOTFOUND=return] files
ethers: nisplus [NOTFOUND=return] files
netmasks: nisplus [NOTFOUND=return] files
######|###################################################################
在這個文件中,包括幾個關(guān)鍵字例如host, network ,passwd,group,等等,這些關(guān)鍵字的合法取值是nisplus(代表nis 版本3), files(代表使用本地文件),dns(代表使用dns系統(tǒng)),nis(代表使用nis 版本2)等等.我們在這里僅僅介紹host的關(guān)鍵字,語句
hosts: files dns nisplus nis 的含義是在查找主機名字時首先查找本地的文件,也就是/etc/hosts文件, 然后再使用DNS進(jìn)行域名解析.再使用nis 第三版,最后使用nis的第二版本來進(jìn)行名字服務(wù).(注[NOTFOUND=return]含義是如果在這條語句出現(xiàn)之前查詢沒有結(jié)果,則停止查詢.)
二.域名服務(wù)器的配置
域名服務(wù)系統(tǒng)一般都是采用軟件bind(伯克利網(wǎng)間名域)來實現(xiàn)地,它一般可以可以分為兩種類型:一種是轉(zhuǎn)換程序,另一種是名字服務(wù)器進(jìn)程.轉(zhuǎn)換程序是形成域名查詢的軟件,名字服務(wù)器是對域名解析查進(jìn)行響應(yīng)地進(jìn)程.
bind軟件一般是所有l(wèi)inux版本的缺省配置,所以安裝就可以省略.但是它的配置就比較復(fù)雜,在進(jìn)行配置之前我們要先了解一下域名系統(tǒng)的四種類型:
(1)唯轉(zhuǎn)換程序系統(tǒng): 在bind軟件中,所有系統(tǒng)都要使用轉(zhuǎn)換程序,但是不一定都要運行名字服務(wù)器,這些僅僅運行轉(zhuǎn)換程序的系統(tǒng),自身是無法獲得域名信息的,必須依靠其它域名服務(wù)器系統(tǒng)來獲得域名信息,這就叫做唯轉(zhuǎn)換程序系統(tǒng).它一般依賴文件/etc/resolv.conf來實現(xiàn)轉(zhuǎn)換.
(2)主域名服務(wù)器: 在一個域中,一般有一臺域名服務(wù)器保存著該域中所有主機的域名信息,這些信息是保存在這臺主域名服務(wù)器中的,它可以響應(yīng)有關(guān)于該域的域名解析請求.
(3)輔助域名服務(wù)器: 輔助域名服務(wù)器的配置和主域名服務(wù)器是相同的,它們的區(qū)別僅僅在于輔助域名服務(wù)器要從主域名服務(wù)器中轉(zhuǎn)移整個數(shù)據(jù)庫文件,并且定期從主域名服務(wù)器中取特定的數(shù)據(jù)庫文件.
(4)唯緩存域名服務(wù)器: 在這種域名服務(wù)器中,我們僅僅需要配置緩存文件,唯緩存服務(wù)器從其它的域名服務(wù)器中獲得域名信息,然后在自己的緩存中增加該條紀(jì)錄,以備下一次域名解析請求使用.
1.唯轉(zhuǎn)換程序的配置
在唯轉(zhuǎn)換程序中,我們需要配置文件/etc/resolv.conf. resolv.conf是一個獨立的文件,它可以告訴解析器庫在使用BIND軟件進(jìn)行主機查找時,必須使用哪個名字服務(wù)器。如果這個文件不存在或是空的,那么解析器就假設(shè)名字服務(wù)器在你本地的主機上(這是我們下面將要介紹的情況)。
resolv.conf文件中最重要的選項是nameserver,它給出了要使用的名字服務(wù)器的IP地址。如果你使用多個nameserver選項來指定幾個名字服務(wù)器,那么它們會以給出的順序一個個嘗試。因此,你應(yīng)該首先給出最可靠的服務(wù)器。在目前的版本中,最多支持三個名字服務(wù)器。
如果沒有給出nameserver選項,那么解析器試圖連接本地主機上的名字服務(wù)器。
如果在nameserver選項中指定的ip地址是本機地址(例如127.0.0.1),則域名解析器依然會把本機作為名字服務(wù)器.
其它兩個選項,domain和search涉及到如果BIND軟件不能用第一個請求解析主機名時,轉(zhuǎn)換程序會自動附加在主機名上的缺省域。search選項指定了一個試用的域名列表。列表項是用空格或制表符分開的。 如果沒有給出search選項,轉(zhuǎn)換程序就會通過使用域名本身,從本地域名直到根域中建立一個搜尋列表。本地域名可以使用domain語句給出;如果沒有給出domain,那么解析器就通過系統(tǒng)調(diào)用getdomainname(2)來獲取本地域名。
下面就舉一個resolv.conf的樣例文件:
########################################################################
# /etc/resolv.conf
# Local domain
domain xjtu.edu.cn
#
# First we use dns.xjtu.edu.cn as central nameserver:
nameserver 202.117.0.20
# Second we try the dns.xanet.edu.cn as nameserver:
nameserver 202.112.11.130
當(dāng)解析名字www.china-pub時,解析器將首先查詢域名服務(wù)器202.117.0.20,如果查詢失敗,則再使用域名服務(wù)器202.112.11.130進(jìn)行查詢。如果查詢www,由于兩個域名服務(wù)器都不可能返回域名請求,則必須要求轉(zhuǎn)換程序自動將本地域名xjtu.edu.cn (通過選項domain xjtu.edu.cn得到)加到主機名中,于是查詢的域名信息是www.xjtu.edu.cn.然后由域名服務(wù)器返回查詢的結(jié)果是202.117.1.13.
2. named的配置
named(或者in.named)就是名字服務(wù)器進(jìn)程,由它來響應(yīng)域名解析請求.在配置named的時候,需要重點了解如下幾個文件,可以說域名服務(wù)器的配置就全在這幾個文件中.
named.boot文件---------這個文件中保存著運行named的配置參數(shù),包括相關(guān)文件的位置等等.
named.local文件---------這個文件用于本機的名字服務(wù),即把回送地址(127.0.0.1)解析為本地主機名(localhost).
named.ca 文件---------這個文件是高速緩存文件,其中包含指向根域的紀(jì)錄.
named.hosts 文件---------這個文件就是域名解析的主要文件,即把域名映射成為ip地址.
named.rev 文件----------這個文件就是反向域名解析的主要文件,即把ip地址解析成為域名.
不同類型的域名服務(wù)器所需的文件也是不相同的,主域名服務(wù)器和輔助域名服務(wù)器的配置是相同的,它們和唯緩存的域名服務(wù)器是不相同的.主域名服務(wù)器需要以上介紹的所有文件,但是唯緩存的域名服務(wù)器卻僅僅需要named.ca和named.boot文件,有時也會使用named.local文件,所以唯緩存的域名服務(wù)器的配置就比較簡單.
下面就先介紹一下named的參數(shù)配置文件named.boot. .named.boot文件通常很小并且只包括指向DNS系統(tǒng)主文件的指針、以及指向名字服務(wù)器的指針。該boot文件中的注釋行以一個分號開始一直延續(xù)到下一個新行開始。在我們詳細(xì)討論named.boot的格式之前,讓我們首先討論一下in-addr.arpa域.in-addr.arpa域又被稱為反向解析域,其作用就是把ip地址映射成為域名.in-addr.arpa是一個固定的符號標(biāo)志,然后將網(wǎng)絡(luò)地址翻轉(zhuǎn)后寫在in-addr.arpa之前即可組成in-addr.arpa的域名.舉例來說,網(wǎng)絡(luò)名稱(xjtu.edu.cn西安交通大學(xué)校園網(wǎng))的網(wǎng)絡(luò)地址是202.117.0.0,則它的in-addr.arpa的反向域名是117.202.in-addr.arpa.
那么下面我們就看一下named.boot的樣本文件。
#########################################################################
;
; /etc/named.boot file for xjtu.edu.cn
;
directory /var/named
;
; domain file
;---------------------------------------------------
cache . named.ca
primary xjtu.edu.cn named.hosts
primary 0.0.127.in-addr.arpa named.local
primary 117.202.in-addr.arpa named.rev
在named.boot文件中,一般有如下幾個命令:primary,secondary,cache,forward,
slave,directory,sortlist,domain和兩個指令$include ,$origin;下面我們就主要介紹一下以上常用的命令
primary 它是一個非常重要的命令,它將這個域名服務(wù)器指定為主域名服務(wù)器.它的參數(shù)是一個域名(domain name)和一個文件名(file name)。作為一個主域名服務(wù)器,named從主文件(named.hosts)中裝入域名信息。一般說來,每個named.boot文件中至少有一個primary項,即用于網(wǎng)絡(luò)127.0.0.0的逆向映射,該網(wǎng)絡(luò)是本地回送(loopback)網(wǎng)絡(luò)。特別地,在配置的域名服務(wù)器是一個唯緩存服務(wù)器時,named.boot文件僅僅需要一個primary命令.
secondary 它將域名服務(wù)器指定為輔助域名服務(wù)器.域名(domain name)、地址列表(address list)和一個文件名(file name)是secondary的參數(shù)。一個輔助服務(wù)器同樣也掌有該域的授權(quán)數(shù)據(jù),但它不是從本地文件中得到的,而是從主服務(wù)器中下載來的。因此至少一個主服務(wù)器的IP地址必須在named的地址列表中給出。輔助域名服務(wù)器將聯(lián)系每個主服務(wù)器直到它成功地將區(qū)域數(shù)據(jù)庫傳輸過來,這個域信息數(shù)據(jù)庫然后被保存在第三個參數(shù)指定的備份文件中。如果所有主服務(wù)器都沒有響應(yīng),輔助服務(wù)器就從備份文件中取回域數(shù)據(jù)。此后,named將定期刷新區(qū)域數(shù)據(jù)。
cache cache是非常特殊的項并且實際上應(yīng)該在所有運行名字服務(wù)器的機器上存在。它的功能有兩個:它指示named激活它的緩沖,并從指定的緩沖文件中裝入根域名提示。文件named.ca包含了根服務(wù)器提示,它是一個指向根名字服務(wù)器的一張列表。只有NS和A記錄將被識別。cache命令將域(domain)和文件名(file name)作為參數(shù)。domain參數(shù)通常是根域名“.”。對named來說這個信息是絕對至關(guān)重要的:如果named.boot文件中沒有cache語句,named將完全不會產(chǎn)生一個本地緩沖。如果下一個服務(wù)器請求不在本地網(wǎng)上,這將嚴(yán)重地降低性能以及增加網(wǎng)絡(luò)負(fù)荷。更為嚴(yán)重的是,named將不能到達(dá)任何根名字服務(wù)器,因而,除了那些它確切知道的域名信息,它將不能解析任何地址。這個規(guī)則的一個例外是使用轉(zhuǎn)發(fā)服務(wù)器(cf. 下面的forwarders選項)。
forwarders 這個語句將一個地址列表(address list)作為參數(shù)。這個列表中的IP地址指定了在named不能從本地緩沖中解析一個查詢時可能會查詢的名字服務(wù)器的一個列表。它們會被順序地試用直到其中一個服務(wù)器對查詢作出響應(yīng)。
slave 該語句使得名字服務(wù)器成為一個從服務(wù)器。也即,它本身將永不執(zhí)行遞歸查詢,但只是將查詢轉(zhuǎn)發(fā)到forwarders語句指定的服務(wù)器上。
directory 它定義了區(qū)域文件存儲的目錄。文件名可以用與該目錄相關(guān)的形式給出。通過重復(fù)使用directory可以指定幾個目錄。根據(jù)Linux文件系統(tǒng)標(biāo)準(zhǔn),這應(yīng)該是/var/named。
前面我們曾經(jīng)講過,唯緩存的域名服務(wù)器的配置和主域名服務(wù)的配置是不同的.在唯緩存域名服務(wù)器中,并不需要named.hosts和named.rev文件,所以在named.boot中我們僅僅需要如下配置
;
; an example file of named.boot for cache only name server
;
primary 0.0.127.in-addr.arpa /etc/named.local
cache . /etc/named.ca
大家一定要記住,在named.boot中使用命令cache并不是指明該服務(wù)器是唯緩存服務(wù)器的關(guān)鍵,關(guān)鍵是在named.boot文件中沒有primary和secondary選項,(除了回送地址的選項).實際上,所有的named.boot文件中都有cache命令.
在介紹DNS的數(shù)據(jù)庫文件之前,我們首先了解一下在這些文件重要使用的標(biāo)準(zhǔn)資源紀(jì)錄. 資源記錄(resource records),簡稱RR是dns數(shù)據(jù)庫文件中所包含數(shù)據(jù)的組成部分。它們構(gòu)成DNS中的最小的信息單元。每一種資源記錄都有一個類型。例如,A標(biāo)記將一個主機名映射到一個IP地址、一個CNAME標(biāo)記將一個主機的別名與它的正式主機名相關(guān)聯(lián)。
dns域名數(shù)據(jù)庫文件中的資源記錄表示法共享一個通用的格式,它是
[name] [ttl] [class] type data
各域用空格或制表符分開。一個項可以連續(xù)跨過幾行,分號是注釋標(biāo)記,在分號和下一行之間的文字是注釋信息,都將被忽略。
name 資源紀(jì)錄引用的域的名字,可以是一臺主機,也可以是一個域.如果該字段是以點號’.’結(jié)束,則表明該域是一個絕對的域名,否則就是在本地域基礎(chǔ)上的域名。如果沒有給出這個字段,那么該RR假定應(yīng)用于前一個RR的域。
ttl 為了迫使解析器在一段時間后放棄信息,每個RR有一個相應(yīng)的“生命周期”(“time to live”),或簡稱ttl。ttl域用秒來指定從服務(wù)器取得的信息有效的時間。它是一個最多八位的十進(jìn)制數(shù)。通常該字段為空,那么它的缺省值是前面SOA記錄中所設(shè)定的值。
class 這是一個地址類,正如IP地址的IN,Hessiod(麻省理工學(xué)院開發(fā)的名字服務(wù)器)類中對象的HS,choasnet的類信息是由標(biāo)記CH表示。對于TCP/IP網(wǎng)絡(luò)來說,你必須設(shè)置class為IN。人們一般都設(shè)置該字段的值為IN.
type 它描述了標(biāo)準(zhǔn)資源的類型。最常見的紀(jì)錄類型是A、SOA、PTR以及NS。
data 它保存與RR相關(guān)的數(shù)據(jù)。這個域的格式和內(nèi)容依賴于RR的類型。例如在A紀(jì)錄中,對應(yīng)的data值是ip地址,而在NS紀(jì)錄中相應(yīng)的值是域名。
下面我們就逐個介紹一下標(biāo)準(zhǔn)資源紀(jì)錄:
SOA (start of authority)管理開始紀(jì)錄,它描述了一個授權(quán)區(qū)域。它表示緊跟在SOA RR后面的記錄包含有對該域的授權(quán)信息。在文件named.boot中每一個用primary語句包括的dns數(shù)據(jù)庫文件在此區(qū)域必須含有一個SOA記錄。它的記錄的格式是:[zone] [ttl] IN SOA origin contact(
Serial
Refresh
Retry
Expire
Minimum
)
在SOA紀(jì)錄中,zone的值一般是用符號”@”表示,它代表著在named.boot中有一條primary紀(jì)錄指明的域名。Ttl字段在SOA紀(jì)錄中也是一般為空。
orign 這是該域的主域名服務(wù)器的主機名。它通常用一個完全的名字給出。例如dns主機是xjtu.edu.cn域中主域名服務(wù)器,則在SOA的origin字段中要給出完整的名字是dns.xjtu.edu.cn。
contact 這是維護(hù)該域的管理員的email地址。用一個點替換掉了在email中的“@”字符。例如,交通大學(xué)域的管理員是administrator,那么這個字段域?qū)⒑衋dministrator.xjut.edu.cn。
serial 這是一個用單個十進(jìn)制數(shù)表示的區(qū)域文件的版本號數(shù)。每當(dāng)區(qū)域文件中的數(shù)據(jù)改變時,就必須增加該字段的值。輔助名字服務(wù)器還可以通過這個字段識別區(qū)域信息是否改變。為了保持最新,輔助域名服務(wù)器在一定間隔時間后就請求主域名服務(wù)器的SOA記錄,并且將該序列號值與本身緩沖中的SOA記錄的序列號值相比較。如果發(fā)現(xiàn)序列號的值增加了,輔助服務(wù)器就必須從主服務(wù)器將整個區(qū)域數(shù)據(jù)庫傳輸過來。
refresh 它指定了輔助服務(wù)器在檢查主服務(wù)器的SOA記錄是否更新之前所要等待的一個以秒計的間隔時間。同樣地,這是一個最多八位的十進(jìn)制數(shù)。由于網(wǎng)絡(luò)的拓?fù)浣Y(jié)構(gòu)不會經(jīng)常性地改變,所以對于大型網(wǎng)絡(luò)來說,這個數(shù)應(yīng)該指定為大約一天左右。否則,如果更新太快,雖然會使輔助域名服務(wù)器和主域名服務(wù)器的紀(jì)錄幾乎保持一致,但是這樣會加重網(wǎng)絡(luò)和服務(wù)器的負(fù)擔(dān)。
retry 它確定了在輔助域名服務(wù)器在和主域名服務(wù)器連接失敗之后,應(yīng)該等待一定的時間間隔后才能再此連接主域名服務(wù)器。它也是一個最多八位的十進(jìn)制數(shù),單位是一秒鐘。該字段不應(yīng)該太小,否則一個臨時的服務(wù)器失敗或網(wǎng)絡(luò)問題將導(dǎo)致輔助服務(wù)器反復(fù)連接,不僅浪費了網(wǎng)絡(luò)資源,同時可能什么結(jié)果也得不到。一個小時(3600)、或者一個半小時(1800),是一個好的選擇。
expire 它以秒指定了一個時間值,在這個時間過后,如果服務(wù)器還不能聯(lián)系到主要服務(wù)器的話,它最終將丟棄所有的區(qū)域數(shù)據(jù)。這個時間值通常應(yīng)該很大。建議設(shè)置為42天。
minimum 這是對于沒有明確指定ttl的所有資源記錄的一個缺省的ttl值。這是一個八位的十進(jìn)制數(shù),單位是一秒鐘,它指明了該標(biāo)準(zhǔn)資源記錄在其他的服務(wù)器中所能夠保存的時間。然而,它與輔助服務(wù)器開始嘗試更新區(qū)域信息所必須等待的時間無關(guān)。Minimum應(yīng)該是一個很大的值。一周或一個月的值是一個很好的選擇。對于單個RR可能經(jīng)常改變的情況,你仍可以給它們一個不同的ttl值。
下面是一個樣例設(shè)置:
@ IN SOA dns.xjtu.edu.cn administrator.xjtu.edu.cn. (
1999022700 ; Serial 1999年2月27日
43200 ; Refresh 一天更新兩次
3600 ; Retry 一個小時后重試
3600000 ; Expire 1000個小時過期
604800 ; Minimum ttl 是一個星期
)
A 地址紀(jì)錄(address)。 該字段將一個主機名解析為對應(yīng)IP地址。其格式為
[host] [ttl] IN A address
資源數(shù)據(jù)域包含是ip地址。對于每一臺主機,只能有一個A記錄。用于這個A記錄的主機名被認(rèn)為是正式的或規(guī)范的主機名。所有其它主機名都是別名,并且必須使用一個CNAME記錄映射到這個規(guī)范的主機名上。如果host沒有使用符號“.”,則主機名是在本地的域名基礎(chǔ)上的名字,如果使用”.”結(jié)束,則表明該主機名是一個絕對域名。
舉例如下: www IN A 202.117.1.13
dns.china-pub.com. IN A 211.100.6.143
NS 名服務(wù)器紀(jì)錄(name server).這指向一個本區(qū)域的一個二級子域的主名字服務(wù)器。就是這條紀(jì)錄組成了dns系統(tǒng)中的層次結(jié)構(gòu)。為了解析這個主機名,必須另外給出一個A記錄,指明NS主機的地址。它的格式為:
[domain] [ttl] IN NS server
舉例如下: xjtu.edu.cn. IN NS dns.xjtu.edu.cn.
CNAME 它將一個主機的別名與它的正規(guī)(或規(guī)范)主機名相關(guān)聯(lián)。規(guī)范主機名就是主文件為其提供一個A記錄的主機名;別名只是通過一個CNAME記錄簡單地聯(lián)結(jié)到規(guī)范主機名上,但它們本身沒有任何其它的記錄。
PTR 域名指針紀(jì)錄.這個類型的記錄用于將域名解析為ip地址。它將域名和in-addr.arpa域相關(guān)聯(lián)。其格式是:
Name [ttl] IN PTR host
舉例如下: 交通大學(xué)的反向域名是117.202.in-addr.arpa。
43.48 IN PTR reserch.xjtu.edu.cn
把域名reserch.xjtu.edu.cn反向解析為202.117.48.43.
MX 郵件交換器(mail exchanger)。它為本域指明了一個郵件服務(wù)器,所有到達(dá)本域的郵件將會重定向到郵件服務(wù)器上。MX記錄的句法是
[name] [ttl] [class] MX preference host
host 為name命名郵件交換器。每個郵件交換器有一個整數(shù)preference(優(yōu)先權(quán))與之關(guān)聯(lián)。一個想要將郵件分發(fā)到name的郵件傳輸代理會試用所有針對這個域的MX記錄的主機,直到成功為止。具有最低優(yōu)先權(quán)值的將首先試用,然后按著優(yōu)先權(quán)值的增大順序試用其它主機。
舉例如下:
IN MX 10 dns.xajump.edu.cn.
HINFO 這個記錄提供了有關(guān)系統(tǒng)硬件和軟件的信息。它的句法是
[host] [ttl] [class] HINFO hardware software
hardware(硬件)字段確定主機所使用的硬件。Software(軟件)字段指定系統(tǒng)所用的操作系統(tǒng)軟件?偟恼f來這個紀(jì)錄并不常用。
在介紹了標(biāo)準(zhǔn)的資源紀(jì)錄之后,dns的幾個重要的數(shù)據(jù)庫文件也就非常容易理解了,下面我們就通過一個實例來具體說明named的配置。
3.配置的named.的實例
第一步,在你的linux系統(tǒng)中以超級用戶身份登錄。
第二步,編輯/etc/named.boot文件,使用命令#vi /etc/named.boot
directory /var/named # 指定配置文件目錄
cache . named.ca # 緩存文件名
primary xjtu.edu.cn named.hosts #本子域正向解析文件
primary 117.202.in-addr.arpa named.rev #反向解析文件
primary 0.0.127.in-addr.arpa named.local #回送地址解析文件
在本例中,域名是xjtu.edu.cn,對應(yīng)的反向域名是117.202.in-addr.arpa。
其實,named.ca ,named.hosts,named.rev和named.local文件的名字是可以隨便改變的,只要你在named.boot文件中指定,并且在儲存配置文件的目錄中有對應(yīng)的文件即可,例如named.boot文件可以更改為如下:
directory /var/named # 配置文件目錄
cache . named.ca # 緩存文件名
primary xjtu.edu.cn named.xjtu.hosts #本子域正向解析文件
primary 117.202.in-addr.arpa named.xjtu.hosts #反向解析文件
primary 0.0.127.in-addr.arpa named.local #會送地址解析文件
第三步,生成named.local文件
在世界上所有的dns服務(wù)器上的named.local文件幾乎都是一樣的,所以我們只要從任何一個主機上下載這個文件就可以了。范例文件如下:
@ IN SOA dns.xjtu.edu.cn. root.xjtu.edu.cn. (
1997022700 ; Serial
28800 ; Refresh
14400 ; Retry
3600000 ; Expire
86400 ) ; Minimum
IN NS 127.0.0.1.
1 IN PTR localhost.
大家可以在這個文件中看到有一個SOA紀(jì)錄和一個PTR紀(jì)錄,我們僅僅需要修改SOA紀(jì)錄中的域名信息和管理員郵件地址字段。
第四步 生成/named.ca文件
named.ca文件也是十分相似的,它必須要提供根域名服務(wù)器的名字和地址,范例文件如下:
; 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 . 〈file〉"
; 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 Services (NSI)
; submenu InterNIC Registration Archives
; file named.root
;
; last update: Aug 22, 1997
; related version of root zone: 1997082200
;
;
; formerly NS.INTERNIC.NET
;
. 3600000 IN NS A.ROOT-SERVERS.NET.
A.ROOT-SERVERS.NET. 3600000 A 198.41.0.4
;
; formerly NS1.ISI.EDU
;
. 3600000 NS B.ROOT-SERVERS.NET.
B.ROOT-SERVERS.NET. 3600000 A 128.9.0.107
;
; formerly C.PSI.NET
;
. 3600000 NS C.ROOT-SERVERS.NET.
C.ROOT-SERVERS.NET. 3600000 A 192.33.4.12
;
; formerly TERP.UMD.EDU
;
. 3600000 NS D.ROOT-SERVERS.NET.
D.ROOT-SERVERS.NET. 3600000 A 128.8.10.90
;
; formerly NS.NASA.GOV
;
. 3600000 NS E.ROOT-SERVERS.NET.
E.ROOT-SERVERS.NET. 3600000 A 192.203.230.10
;
; formerly NS.ISC.ORG
;
. 3600000 NS F.ROOT-SERVERS.NET.
F.ROOT-SERVERS.NET. 3600000 A 192.5.5.241
;
; formerly NS.NIC.DDN.MIL
;
. 3600000 NS G.ROOT-SERVERS.NET.
G.ROOT-SERVERS.NET. 3600000 A 192.112.36.4
;
; formerly AOS.ARL.ARMY.MIL
;
. 3600000 NS H.ROOT-SERVERS.NET.
H.ROOT-SERVERS.NET. 3600000 A 128.63.2.53
;
; formerly NIC.NORDU.NET
;
. 3600000 NS I.ROOT-SERVERS.NET.
I.ROOT-SERVERS.NET. 3600000 A 192.36.148.17
;
; temporarily housed at NSI (InterNIC)
;
. 3600000 NS J.ROOT-SERVERS.NET.
J.ROOT-SERVERS.NET. 3600000 A 198.41.0.10
;
; housed in LINX, operated by RIPE NCC
;
. 3600000 NS K.ROOT-SERVERS.NET.
K.ROOT-SERVERS.NET. 3600000 A 193.0.14.129
;
; temporarily housed at ISI (IANA)
;
. 3600000 NS L.ROOT-SERVERS.NET.
L.ROOT-SERVERS.NET. 3600000 A 198.32.64.12
;
; housed in Japan, operated by WIDE
. 3600000 NS M.ROOT-SERVERS.NET.
M.ROOT-SERVERS.NET. 3600000 A 202.12.27.33
; End of File
在這個文件的前部,注明了本文件的出處,(我是從FTP.RS.INTERNIC.NET下載的)它是由interNIC給出的根域信息,在文件的其余部分,就逐個列出了各個根域服務(wù)器,例如:
. 3600000 NS M.ROOT-SERVERS.NET.
M.ROOT-SERVERS.NET. 3600000 A 202.12.27.33
第一行,符號”.”指明了根域, 360000 是ttl, NS 指明了域名服務(wù)器的域名是
M.ROOT-SERVERS.NET. 。第二行指明了M.ROOT-SERVERS.NET.的地址是202.12.27.33。
Named.ca文件一般不需要我們進(jìn)行修改。
第五步 生成named.hosts文件
在我們的named.boot文件中指定的是一個主域名服務(wù)器,所以在named.hosts文件中我們配置如下:
@ IN SOA dns.xjtu.edu.cn. root.xjtu.xajump.edu.cn. (
990930
10800
1800
604800
604800 ) ;
IN NS dns.xjtu.edu.cn.
IN MX 10 mail.xjtu.edu.cn.
dns IN A 202.117.0.20
mail IN A 202.117.1.21
www IN A 202.117.1.13
ftp IN A 202.117.1.24
在這個文件中,我們設(shè)置四臺主機dns.xjtu.edu.cn ,mail.xjtu.edu.cn,www.xjtu.edu.cn和ftp.xjtu.edu.cn 的域名信息。其中NS 指明域xitu.edu.cn 的域名服務(wù)器是dns.xjtu.edu.cn.
MX字段指明域xjtu.edu.cn的郵件服務(wù)器是mail.xjtu.edu.cn。A 字段指明了這幾臺主機域名對應(yīng)的ip地址。
第六步 生成named.rev文件
同named.hosts文件一樣,只不過named.rev是一個反向的域名解析文件。范例文件如下:
@ IN SOA dns.xjtu.edu.cn. root.xjtu.xajump.edu.cn. (
990930
10800
1800
604800
604800 ) ;
IN NS dns.xjtu.edu.cn.
20.0 IN PTR dns.xjtu.edu.cn.
21.1 IN PTR mail.xjtu.edu.cn.
13.1 IN PTR www.xjtu.edu.cn.
24.1 IN PTR ftp.xjtu.edu.cn.
第七步 修改/etc/resolv.conf文件
配置轉(zhuǎn)換程序文件,/etc/resolv.conf的范例文件是
domain xjtu.edu.cn
nameserver 127.0.0.1
nameserver 202.117.1.9
在這個文件中首先指明本域是xjtu.edu.cn。第一個域名服務(wù)器是本機127.0.0.1.第二個域名服務(wù)器是202.117.1.9。
第八步 啟動named進(jìn)程
在配置好上述所有文件后,即可運行named進(jìn)程,來等待dns請求。使用命令如下:# /usr/sbin/named 來啟動named進(jìn)程。在第一次啟動進(jìn)程時,應(yīng)該查看出錯信息:
使用如下命令:# tail -f /var/log/messages 來查看信息。
經(jīng)過以上的八個步驟,一個完整的域名服務(wù)器就已經(jīng)正常運行了!下面我們要做的就是要檢查它運行情況,是否正常工作!
三 使用nslookup來調(diào)試named
在linux下的工具nslookup可以用于檢查名字服務(wù)器設(shè)置的操作。它是隨bind軟件附贈的。Nslookup首先使用/etc/resolv.conf 文件中指定的域名服務(wù)器作為缺省的服務(wù)器,如果有多個,則選擇第一個。Nslookup不僅能查詢單個的主機,還可以查詢DNS記錄的任何類型,甚至傳輸一個域的整個區(qū)域信息。
當(dāng)不加參數(shù)地調(diào)用,nslookup將顯示它所用的名字服務(wù)器,并且進(jìn)入交互模式。在’〉’提示符下,你可以鍵入任何想要查詢的域名。缺省地,它請求類A記錄,這些是包含與域名相關(guān)的IP地址的。
通過使用命令“set type=type”來改變查詢類型,這里type是一個標(biāo)準(zhǔn)資源記錄名或所有紀(jì)錄名(ANY)。
Nslookup的使用命令如下所示:
# nslookup
Default Server: localhost
Address: 127.0.0.1
〉 www.xjtu.edu.cn
Server: localhost
Address: 127.0.0.1
Non-authoritative answer:
Name: xjtu04.xjtu.edu.cn
Address: 202.117.1.13
Aliases: www.xjtu.edu.cn
如果你要查詢的不是一個A類型的紀(jì)錄,可以通過命令來設(shè)置查詢的類型,使用命令set type=(A , NS ,MX)等等,例子如下所示:
〉 xjtu.edu.cn
Server: dns.xanet.edu.cn
Address: 202.112.11.130
*** localhost can't find xjtu.edu.cn: Non-existent host/domain
(注:查詢?nèi)笔∈茿類型的紀(jì)錄,所以無法找到xjtu.edu.cn的ip地址)
〉 set type=NS
〉 xjtu.edu.cn
Server: dns.xjtu.edu.cn
Address: 202.117.0.20
xjtu.edu.cn nameserver = dns.xjtu.edu.cn
dns.xjtu.edu.cn internet address = 202.117.0.20
(注:在設(shè)置查詢類型為NS之后,就可以找到相應(yīng)的紀(jì)錄)
以同樣的方式你可以查詢MX記錄,等等。使用一個ANY類型將返回與一個給出的名字關(guān)聯(lián)的所有資源記錄。
除了調(diào)試,nslookup還可以為named.ca文件獲取根名字服務(wù)器的當(dāng)前列表。你可以通過查詢與根域相關(guān)的所有NS類型記錄來做到。
在使用nslookup的時候,還可以使用命令server 來指定特定的域名服務(wù)器,例如:
〉 server dns.xanet.edu.cn
Default Server: dns.xanet.edu.cn
Address: 202.112.11.130
同時可以設(shè)置缺省的域名,例如:
〉 set domain=xjtu.edu.cn
〉 www
Server: dns.xanet.edu.cn
Address: 202.112.11.130
Non-authoritative answer:
Name: xjtu04.xjtu.edu.cn
Address: 202.117.1.13
Aliases: www.xjtu.edu.cn
在設(shè)置了缺省的域名之后,就直接可以輸入www,nslookup會自動把缺省的域名加入。
我們所輸入的www實際上是查詢www.xjtu.edu.cn。
如果在查詢的時候出錯了,這時我們可以使用set debug命令了進(jìn)行信息的調(diào)試。
〉 www.lib.xanet.edu.cn
Server: localhost.edu.cn
Address: 127.0.0.1
*** localhost.edu.cn can't find www.lib.xanet.edu.cn: Non-existent host/domain
找不到相關(guān)的域名信息,我們進(jìn)行調(diào)試和跟蹤。
〉 set debug
〉 www.lib.xanet.edu.cn
Server: localhost.edu.cn
Address: 127.0.0.1
;; res_nmkquery(QUERY, www.lib.xanet.edu.cn, IN, A)
------------
Got answer:
HEADER:
opcode = QUERY, id = 33813, rcode = NXDOMAIN
header flags: response, want recursion, recursion avail.
questions = 1, answers = 0, authority records = 1, additional = 0
QUESTIONS:
www.lib.xanet.edu.cn, type = A, class = IN
AUTHORITY RECORDS:
-〉 xanet.edu.cn
ttl = 10711 (2h58m31s)
origin = dns.xanet.edu.cn
mail addr = root.dns.xanet.edu.cn
serial = 990930
refresh = 10800 (3H)
retry = 1800 (30M)
expire = 604800 (1W)
minimum ttl = 604800 (1W)
------------
;; res_nmkquery(QUERY, www.lib.xanet.edu.cn.xjtu.edu.cn, IN, A)
------------
Got answer:
HEADER:
opcode = QUERY, id = 33814, rcode = NXDOMAIN
header flags: response, want recursion, recursion avail.
questions = 1, answers = 0, authority records = 1, additional = 0
QUESTIONS:
www.lib.xanet.edu.cn.xjtu.edu.cn, type = A, class = IN
AUTHORITY RECORDS:
-〉 xjtu.edu.cn
ttl = 10711 (2h58m31s)
origin = dec3000.xjtu.edu.cn
mail addr = root.dec3000.xjtu.edu.cn
serial = 111003
refresh = 28800 (8H)
retry = 7200 (2H)
expire = 86400 (1D)
minimum ttl = 86400 (1D)
------------
;; res_nmkquery(QUERY, www.lib.xanet.edu.cn.edu.cn, IN, A)
------------
Got answer:
HEADER:
opcode = QUERY, id = 33815, rcode = NXDOMAIN
header flags: response, want recursion, recursion avail.
questions = 1, answers = 0, authority records = 1, additional = 0
QUESTIONS:
www.lib.xanet.edu.cn.edu.cn, type = A, class = IN
AUTHORITY RECORDS:
-〉 edu.cn
ttl = 10711 (2h58m31s)
origin = NS2.NET.edu.cn
mail addr = HOSTMASTER.NET.edu.cn
serial = 2000111113
refresh = 14400 (4H)
retry = 1800 (30M)
expire = 604800 (1W)
minimum ttl = 86400 (1D)
------------
*** localhost.edu.cn can't find www.lib.xanet.edu.cn: Non-existent host/domain
通過上面返回的信息,我們可以清楚的知道,在沒有找到紀(jì)錄時,首先發(fā)送請求到根域,
NS2.NET.edu.cn,然后是dec3000.xjtu.edu.cn,最后找到了dns.xanet.edu.cn,發(fā)現(xiàn)沒有該紀(jì)錄,則返回查詢結(jié)果。
最后講一講如何從主域名服務(wù)器中下載一個完整的域信息。
〉 server dns.xanet.edu.cn
Default Server: dns.xanet.edu.cn
Address: 202.112.11.130
〉 ls xanet.edu.cn 〉 xanet.dns
[dns.xanet.edu.cn]
#
Received 70 answers (59 records).
〉view xanet.dns
www 202.117.1.13
dns 202.117.0.20
ftp 202.117.1.24
mail 202.117.1.21
……
nslookup完整的命令集可以通過nslookup中的help命令得到。
四 總結(jié)
上面我們已經(jīng)詳細(xì)的介紹了linux系統(tǒng)中域名服務(wù)器的原理和配置,相信在按照上述的步驟,我們都能夠順利的安裝好域名服務(wù)器,但是如果要當(dāng)好一個大型網(wǎng)絡(luò)的域名管理員,不僅需要實際的操作經(jīng)驗,更需要自己閱讀詳細(xì)的rfc文檔。如下的文檔要仔細(xì)閱讀:
Rfc 1032 “DOMAIN ADMINISTRATORS GUIDE”
Rfc 1033 “DOMAIN ADMINISTRATORS OPERATIONS GUIDE”
Rfc 1034 “DOMAIN NAMES - CONCEPTS AND FACILITIES”
Rfc 1035 “DOMAIN NAMES - IMPLEMENTATION AND SPECIFICATION”
Rfc 1713 “Tools for DNS debugging”
Rfc 1912 “Common DNS Operational and Configuration Errors” |
|