[轉載] DNS域名解析 - PCZONE 討論區

返回   PCZONE 討論區 > ▲ ADSL_CABLE_FTTH 寬 頻 上 網 討 論 > -- 網 路 技 術 版


PCZONE 討論區



通知

-- 網 路 技 術 版 較深入的網路方面技術問題,請來此這版討論

會員
[轉載] DNS域名解析
目標﹕

完成這一章,你將能夠做一下事情﹕

比較三種主機名解析方式﹕

/etc/hosts
NIS
DNS/BIND
使用hosts_to_named命令來配置主DNS服務器

配置輔DNS服務器

配置主機名解析器

配置/etc/nsswitch.conf文件

使用hosts_to_named命令增加/刪除DNS數據庫中的一個主機。

使用nslookup命令進行DNS服務查錯

描述以下配置文件的作用和文件格式﹕

/etc/rc.config.d/namesvrs
/etc/named.boot
/etc/resolv.conf


1.將主機名解析成為IP地址

IP網絡中的系統進行通訊必須依靠Internet地址。用戶和應用程序可以通過主機名來查找一個主機,這就要求在數據包發送之前,IP協議層必須將這個主機名翻譯成為一個IP地址(例如16.30.0.99)。這個主機名到IP地址之間的轉換是在這個網絡連接建立之前通過一個gethostbyname()的庫函數來實現的。這個庫函數也被稱為解析器,因為它的作用是將主機名解析為一個IP地址。


同樣,反向的解析也是必須;有時候,一個IP地址必須被解析成為一個主機名。例如主機想要驗證進來的連接,必須通過IP地址,將IP地址映射成為一個名字。通常這被用作權限驗證﹕例如,文件/etc/hosts.equiv,$HOME/.rhosts,或者/etc/exports的使用就是例子。解析IP地址成為主機名是通過調用一個名為gethostbyaddr()庫函數而實現的。


當網絡很小的時候,維護一個包含有網絡中的系統的名字和IP地址的/etc/hosts文件是一件很容易的的事情,而當網絡變得更大同時地理上分布更廣的時候,這種維護會變得十分的困難。這個時候就需要用另外的方法來實現這個功能。


與每一台機器都存儲和維護所有主機名和IP地址信息的方式不同,有一種稱為域名服務器的服務。域名服務器,可以由網絡中的一個(或者多個)系統組成,其作用是存儲並且提供信息。域名服務提供了一種與/etc/hosts文件不同的的方式來進行主機名與IP地址之間的轉換。DNS常用在大型的網絡中提供解析主機名的服務。


當前十分常用的名稱服務是Network Information Services(包括NIS和NIS+),和Berkeley
Internet Name Domain(BIND)服務。

在這一章,我們將學習Berkeley Internet Name Domain 服務。


2.DNS概述

Berkeley Internet Name Domain(BIND)是一種基於RFC
1034/1035"域名"規範的域名系統(DNS)。BIND是由以下三部分組成﹕

分層的名稱空間﹕ 與單層的的名稱空間相對應,如使用/etc/hosts文件的域名解析方式。

名稱服務器保存有域的樹型結構的信息。這個服務器程序是在系統中是一個叫做named的進程。而提供這個網絡服務的主機被叫做域名服務器。

解析器是一種程序,它負責將域名解析成為IP地址。這個程序被各種網絡服務所調用,例如telnet,ftp,rcp,rlogin,和其他的網絡服務。這些程序,例如gethostbyname(),和gethostbyaddr(),能夠判斷首先使用哪個名稱服務(/etc/hosts,NIS,或者DNS),然後使用指定的服務來將主機名映射成為IP地址。對BIND來說,解析器會從域名服務器提取信息,對解析器來說,並沒有一個特別的進程於它相關。解析器只是名稱服務器的一個可編程的界面,這些流程被編譯進gethostbyname()和gethostbyaddr()流程中。任何執行這些調用的程序會自動調用BIND(如果系統中配置了這個服務).否則會使用NIS或者/etc/hosts文件。在有的系統中,有一個名稱服務的開關(一個文件),其作用是指定系統解析域名時使用的方式的先後順序和組合。


3.DNS層次化的名稱空間

域名空間是一種對基於樹型結構的網絡中的節點進行分層命名的方法。樹型結構粗略代表一個網絡邊界分支。

每一個名稱空間中的子空間被稱為一個域,每一個域都有一個標記,這個標記由一系列的由左到右的圓點分隔的字母組成,如﹕sanfran.ca.hp.com。


節點"sanfran"屬於域"ca";域"ca"屬於域"hp";而域"hp"屬於域"com",而域"com"屬於“根域”。

最後一個圓點,域名的結尾部分,指出的是絕對域名,這和相對域名相對立,如"sanfran.ca"。

解析器會將相對域名翻譯為絕對域名,轉換的原則我們會在以後的章節中看到。


4.公共和私有的域名空間

公共的域名空間

網絡在物理上可以和一個公眾網絡相連接,如ARPANET INTERNET
network。在這種情況下,要求要有官方的IP地址和域名。你可以聯系InterNIC注冊服務,http://rs.internic.net來進行域名登記。


如果你已經登記有一個域,那麼在這個域中,你可以獨立地管理你這個域,你可以在這個域中增加主機,你可以自由分配一個屬於這個網絡地址的IP地址給這個主機,而不需要向管理機構注冊,同樣你也可以在這個域中分配子域,而不需要向管理機構注冊。只有你這個域中的頂級域中的授權的服務器才需要注冊。接著,你可以為你的一個主機分配子域。


私有名稱空間

在這種情況下,客戶的網絡和公眾網是相互分離的。這樣域名和IP地址就可以自由地進行選擇。但是,如果將來會連接到公眾網絡,最好是去尋求一個正式的IP地址並且遵循命名的慣例。



5.名稱服務器

一個域名服務器﹕

響應客戶機的請求,將主機名解析為IP地址
劃分名稱空間
能夠讓其他的域名服務器來解析域名
應該有第二個名稱服務器來作為備份
例子:

ca.hp.com域名服務器

sanfran.ca.hp.com <--->128.1.1.1

oakland.ca.hp.com <--->128.1.1.2

la.ca.hp.com <--->128.1.1.3


有許多不同類型的DNS服務器

主域名服務器

主服務器對它所包含的數據來說是最有權威的(簡而言之,由上一級的域賦予它的權利)。它可以,依次,創建子域,並且分配權限。與副服務器相比較而言,主服務器上的信息是最新的信息。


副域名服務器

副域名服務器是一個備份服務器。它包含有主服務器上基本相同的信息。在一個可以設置的時間間隔,它會從主服務器上更新數據。副域名服務器可以選擇是否在本地磁盤上保留原始記錄。這可以在named.boot中進行配置。


緩存服務器

緩存服務器不在本地的磁盤上存儲數據。所有的數據都是放在系統的緩存中。它被用在在多用戶系統中加速域名查詢的速度。緩存服務器提供一個非正式的備份方式,與副域名服務器在本地存儲數據相比較,這種方式最大的優點是﹕在一個新的子域加入到一個主域名服務器中時,它不需要DNS數據庫中的數據進行維護。


6.解析在本域中主機的主機名

每當在一個網絡服務中指明一個目標主機的主機名的時候,就會間接啟動一個解析器程序例如gethostbyname()。

網絡軟件使用的是IP地址,而不是主機名,所以首先要將主機名解析為 IP地址。


解析器的任務﹕

決定本地節點使用的是BIND,NIS,或者/etc/hosts,這裡我們假設使用的是BIND。
當目標地址是一個相對域名的時候自動構建一個可能的絕對域名列表。
查詢域名服務器(本地主機或者在/etc/resolv.conf中配置的遠程主機),將域名解析為IP地址。如果沒有域名服務器響應,用戶程序會掛起一小段時間。如果配置的域名服務器響應但是返回的數據無效,會自動轉向使用NIS或者/etc/hosts。如果我們使用的是NIS而不是BIND,解析器會從指定的NIS服務器中查詢主機的NIS映射表。如果BIND,和NIS都配置了,有的UNIX會首先使用BIND如(HP-UX),而有的UNIX會首先使用NIS,如(SUN-OS)。

域名搜索列表

當想要查詢的主機和你當前的主機在同一域或者子域的時候,不需要鍵入完全的主機名。解析器會自動為你加上後綴。例如,如果你在域ca.hp.com中,同時你鍵入命令telnet
la,解析器會自動構造一個搜索列表如下﹕

la.ca.hp.com

在解析器的配置文件中添加另外的域的後綴會導致更廣泛的搜索結果,例如﹕

la.hp.com ????la.ca.hp.com

解析器會向域名服務器查詢搜索列表中的每個域名直到找到正確的域名。

如果用戶提供的是一個完全格式的主機名(發送到域名服務器的就只有一個查詢請求)。


NSLookup

nslookup命令讓你可以檢查主機名解析的過程﹕

$ nslookup

Default Name Server﹕ sanfran.ca.hp.com

address: 128.1.1.1

>ctrl + d

$ nslookup la

Name Server: sanfran.ca.hp.com

Address: 128.1.1.1

Name: la.ca.hp.com

Address: 128.1.1.3

Aliases: los_angeles

$


7.解析在其它域中的主機名

當查詢在其它域中的主機名的時候,DNS客戶端仍舊會將查詢請求發送到本地的DNS服務器。由於被查詢的主機名不在本地的服務器的數據庫裡,DNS服務器執行一種遞歸的查詢來在其它的域中查詢這個主機名。


遞歸查詢的過程如下所示﹕

1.假定機器genius,cs.tsinghua.edu.cn上的某個用戶要求arpa,att.com機器進行數據通信,此時本地機器將發現在本域內(.cs.tsinghua.edu.cn)中無法實現此種轉換,於是它將發送一個請求給根服務器詢問給定名稱的Internet地址。根服務器根據給出名稱中的.com和它所記錄的.com域名服務器地址,向此服務器詢問arpa.att.com的地址。.com服務器接到此請求後,將根據名稱中的.att域名及它所記錄的.att域名服務器的地址,向該服務器詢與arpa.att.com相應的Internet地址。在.att.com域名服務器中將記錄有arpa主機的Internet地址,於是它將此地址返回給.com服務器。.com服務器會將此結果返回給根服務器,而最後由根服務器將之返回給genius機器。


2.本地DNS服務器會將這些所有的名稱服務器的地址緩存,加上最後返回的解析結果。

3.如果本地服務器接收到另外的一個相同的主機名的解析請求時,就會直接從緩存中取出數據,並立即返回用戶需要的IP地址。

配置主域名服務器

1.向internic注冊你的域名。

2.在/etc/hosts文件中定義全格式主機名。

3.為DNS數據庫文件創建一個目錄。

4.創建一個hosts_to_named命令需要的參數文件。

5.創建一個hosts_to_named命令需要的DNS數據文件和啟動文件。

6.下載一個db.cache文件,其中包含root服務器的最新的地址列表。

7.修改/etc/rc.config.d/namesvrs文件並且啟動named守護進程。

8.配置DNS客戶端的功能。


以上是配置一個主域名服務器的詳細步驟。這裡我們假定sanfran節點將要被配置為一個主域名服務器,這個服務器所在的域為ca.hp.com。



1.向internic注冊你的域。

為了讓internet中的其它的人可以檢索到你的域中的主機名。internic必須要知道你的域的存在。你可以向internic申請你的域名,地址為http://rs.internic.net/rs-internic.h...ernic申請。


無論在那種情況下,你可能都需要提供你的域名,和你的主域名服務起和輔域名服務器的名稱和IP地址。

2.提供完全格式的/etc/hosts文件。

HP-UX提供的hosts_to_named工具能夠將/etc/hosts中的數據直接轉換成主域名服務器上的DNS數據庫。為了實現這個功能。你的hosts文件中的所有條目都需要轉換為完全格式的主機名。而老的主機名可以作為別名存在。


如果你願意,你還可以刪除hosts文件中域名服務器不能解析的子域條目。(注意,這樣,localhost條目必須保留)。下面的例子說明了需要對sanfran主機上的hosts文件作出的改動。


vi /etc/hosts

127.0.0.1 localhosts

128.1.1.1 sanfran.ca.hp.com ??sanfran

128.1.1.2 oakland.ca.hp.com ??oakland

128.1.1.3 la.ca.hp.com ???? la


3.創建一個目錄保存DNS數據庫文件。

hosts_to_named程序會創建幾個DNS數據文件。在典型的情況下,這些文件會存儲在/etc/named.data目錄下。你可以使用mkdir命令手工創建這個目錄。


mkdir /etc/named.data

cd /etc/named.data


4.為hosts_to_named程序創建一個param文件。

hosts_to_named是一個強大的創建DNS數據庫文件的工具。hosts_to_named自動搜索一個param文件來決定對哪些域的主機提供域名解析服務。

在-d選項後面加上一個域名,指定這個域名服務器所服務的域。由於一些域名服務器同時為多個域提供域名解析,這時就需要多個-ds選項。
在-n選項後面加上這個域中的每個子域的名稱,由於許多主機存在在子域中,這時就需要多個-ns選項。
-b選項決定你的DNS啟動文件存儲的位置。標準的位置是/etc/named.boot。
你創建的任何輔域名服務器需要從主域名服務器下載一個配置文件,其中包含主域名服務器的IP地址和這個域的其它信息。-z選項會創建輔域名服務器需要下載的配置文件。

其它的選項可以參看hosts_to_named名稱的聯機幫助。


sanfran域名服務器的param文件如下所示﹕

vi /etc/named.data/param

-d ca.hp.com ????<---這裡填上你的域名

-n 128.1.1????? <---這裡填上你的子域的地址

-z 128.1.1.1???? <---這裡填上你的主域名服務器的IP地址

-b /etc/named.boot


5.創建hosts_to_named的DNS數據文件和啟動文件。

hosts_to_named工具自動使用/etc/hosts文件來生成DNS數據文件,而使用的是在param文件中定義的選項。

如﹕


# hosts_to_named -f param

Translating /etc/hosts to lower case ...

collecting network data ...

???128.1

creating list of multi-homed hosts ...

creating "A" data (name to address mapping) for net 128.1 ...

creating "PTR" DATA (address to name mapping) for net 128.1 ...

creating "MX" (mail exchanger) data ...

Building default db.root file ...

Building default boot.sec.save for secondary servers ...

Building default boot.sec for secondary servers ...

Building default boot.casheonly for cashing only servers ...

done

6. 下載一個db.cashe文件,其中包含root服務器的IP地址列表。

hosts_to_named工具能夠創建幾乎所有的DNS數據庫文件,只有一個文件除外。那就是你必須手工創建db.cashe文件,其中包含root
域名服務器地址。你可以從internic的web網站上ftp下來一個包含當前root服務器地址的文件。由於root服務器列表隨時都在改變,你可能會需要定時地下載這個文件。


7.修改/etc/rc.config.d/namesvrs。手工的啟動named進程,不需要重啟動機器。

為了讓域名服務器的守護進程'named'在系統啟動的時候一起啟動,需要設置/etc/rc.config.d/namesvrs中的NAMED變量為“1”。


vi /etc/rc.config.d/namesvrs

...

NAMED=1

NAMED_ARGS=""

...


# /sbin/init.d/named start


named可以帶參數啟動,但是通常對NAMED_ARGS變量的值都不進行設置。


8.配置客戶端的功能在以下幾章中說明。


param文件的中的選項

param文件的選項如下﹕

d????????指明默認的域。db.ca文件會被創建。想要添加其它的域,可以在這個選項後面添加條目

n????????指明子網的網絡地址

r????????指明主服務器同樣也是root服務器,db.root文件會被創建。

z 和Z??????創建文件boot.sec和boot.sec.save,這些文件會被傳送到輔服務器作boot文件。

b????????指明boot文件的名稱和所在位置。


創建的數據文件

以下的數據文件是hosts_to_named將創建的文件。

/etc/named.boot ???????named的boot文件

/etc/named.data/db.ca???? ca域的數據庫文件,將主機名映射為IP地址

/etc/named.data/db.127.0.0??本地loopback的數據庫文件,將IP地址映射為主機名

/etc/named.data/db.128.1 ?? 網絡128.1的數據庫文件,將IP地址映射為主機名

/etc/named.data/db.root??? 僅作為root服務器

/etc/named.data/boot.sec ?? 傳送給輔域名服務器的文件

/etc/named.data/boot.sec.save 傳送給輔域名服務器的文件

/etc/named.data/boot.casheonly 傳送給緩存域名服務器的文件


注意﹕這些數據文件可以存在於任何目錄下,這取決於你在什麼目錄下運行的hosts_to_named命令,nam
e.boot文件中包含有這些信息。

如果參數文件中不包含-b(boot 文件)的選項,你必須手工刪除/etc目錄下的named.boot文件。

配置輔域名服務器

步驟﹕

1.為DNS數據文件創建一個目錄

2.從主域名服務器上FTP 一個配置文件

3.從主域名服務器上FTP db.127.0.0和db.cache的一個拷貝

4.從主域名服務器上FTP 附加的DNS數據文件(可選)

5.修改配置文件/etc/rc.config.d/namesvrs,並啟動named守護進程

6.設置輔域名服務器上的客戶端的功能



為什麼要配置一個輔域名服務器?

每一個域都應該有第二個服務器作為主域名服務器的補充。輔域名服務器的主要作用是在主域名服務器失效的時候提供名稱解析一個備份。同時,通過對客戶端進行某些設置,輔域名服務器也能夠減輕主域名服務器的負載,


創建一個輔域名服務器的步驟如下﹕

1.在輔域名服務器上,為數據庫文件和配置文件創建一個單獨的目錄。

大部分的輔域名服務器在本地保留本域的DNS數據文件。這個數據庫文件一般是存儲在/etc/named.data目錄下。


# mkdir /etc/named.data

# chmod 755 /etc/named.data


2. 從主服務器上FTP一個啟動配置文件。

named進程在啟動的時候會參考/etc/named.boot中的設置來決定DNS數據庫文件存放的位置。你可以從主服務器上下載一個named.boot文件。


主服務器上可能會有兩個named.boot文件的版本﹕/etc/named.data/boot.sec.save和/etc/named.data/boot.sec。如果你希望你的輔域名服務器在系統重啟動後仍舊保留所有的DNS數據庫文件的一個完全的磁盤拷貝,你可以選擇下載/etc/named.data/boot.sec.save文件。這樣作的目的在於﹕如果在輔域名服務器啟動的時候主服務器無效,輔域名服務器仍然可以使用存儲在本地的DNS數據文件來啟動DNS服務。


如果你選擇下載/etc/named/boot.sec文件,輔域名服務器就不會主動維護本地磁盤的數據庫文件,在這種情況下,如果輔域名服務器啟動的時候主服務器處於無效狀態,named進程就不能夠啟動。


注意你只能有一個boot文件。named守護進程啟動的時候會自動讀取這個文件中的配置信息。

?????

ftp 128.1.1.1 <--- FTP 連到你的主域名服務器

get /etc/named.data/boot.sec.save /etc/named.boot

quit


3.從主服務器FTP一個db.127.0.0和db.cache文件。

每個域名服務器都要有兩個DNS數據文件。db.127.0.0文件用來解析loopback地址。而域名服務器依靠db.cache文件來查找根域名服務器。從主域名服務器上可以下載這兩個文件。



ftp 128.1.1.1 ???????????FTP連接到主服務器

get /etc/named.data/db.127.0.0 ?? get db.127.0.0

get /etc/named.data/db.cache????get db.cache

quit


4.從主域名服務器FTP另外的數據庫文件(任選項)

如果你你想要你的輔域名服務器在本地磁盤中保存所有的DNS數據文件的拷貝,你需要從主服務器下載所有的數據文件。在第一次下載這個文件後,以後輔域名服務器會自動按照一定的間隔時間從主服務器上更新數據。


ftp 128.1.1.1 ??????????<--- FTP to the promary server

mget /etc/named.data/db.* ????<--- GET the DNS database files

quit??????????????? <-- 退出ftp


5. 修改/etc/rc.config.d/namesvrs。???手工啟動named進程,,不需要重新啟動系統。


# vi /etc/rc.config.d/namesvrs

NAMED=1

NAMED_ARGS=""

# /sbin/init.d/named start


named可以帶參數運行,但是通常都不對NAMED_ARGS變量進行設置。


6.配置客戶端功能在以後的章節中說明。


在設置一個輔域名服務器的時候,不要需要使用hosts_to_named命令,hosts_to_named命令不是設計用來創建輔域名服務器和cache_only服務器。使用rcp,ftp從主服務器上傳送需要的BIND文件,如果有必要,也可以手工修改BIND文件。如果是私有域(不於公眾網相連),就必須手工創建db.cache文件,因為這時的根服務區必須自己指定。


與設置主服務器的另外一個不同之處是﹕你可以選擇將DNS的數據文件存儲在本地,也可以選擇不存儲在本地。但是無論哪種服務器上都必須要有db.127.0.0這個文件。在本地存儲大量的DNS數據文件要佔用磁盤空間,但是在主服務器一直都不能存取的時候這種方式會起作用,因為我們可以在不能立即和主服務器通信的情況下重新啟動輔域名服務器。但是在超時之前主服務器必須能夠重新投入使用。



配置DNS客戶端


1.創建/etc/resolv.conf文件

search ????ca.hp.com ?hp.com

nameserver ??128.1.1.1

nameserver ??128.1.1.2


2.修改/etc/nsswitch.conf文件

????hosts ????dns nis files


3.修改/etc/hosts文件

????127.0.0.1 ??localhost

????128.1.1.3 ??la.ca.hp.com la


4.修改~/.rhosts,/etc/hosts.equiv,and 其它文件

????la ??????user1

????la.ca.hp.com ?user1





在一個DNS域中所有的主機,包括主域名服務器和輔域名服務器,都應該被配置為DNS客戶端。配置一個主機為一個DNS客戶端可以確保主機的解析器使用指定的DNS域名服務器來解析域名和IP地址,而不是用本地的hosts文件。配置一個主機為一個DNS客戶端的步驟如下﹕



1.修改解析器的配置文件。

?域名解析器的配置文件叫/etc/resolv.conf。resolv.conf文件有兩個重要的組成部分﹕

?a.創建一個“查找”列表。

?/etc/resolv.conf文件中的search關鍵字定義了一系列的域名,解析器在進行主機名解析的時候會搜尋這個列表。這個列表中至少應該列出自己主機所在的域。為了以後方便,你也可以增加其它的域名。


在這個搜索列表中添加其它的域可以讓你的用戶不必輸入完全格式的主機名,例如,由於下面的resolv.conf文件中在搜索列表內包含由ca.hp.com這個域,用戶想要telnet到sanfran就可以簡單地輸入“telnet
sanfran”。而由於ga.hp.com不包含在這個搜索列表中,所以想要存取"atlanta.ga.hp.com"就不能簡單的鍵入“telnet
atlanta",而需要鍵入完全的域名。


vi /etc/resolv.conf

search ca.hp.com ?hp.com ??<--- 在這裡列出通常存取的域。


b.在/etc/resolv.conf文件中增加”nameserver"條目


客戶端的解析器在進行主機名和IP地址解析的時候必須要知道使用的是哪個DNS服務器。你可以在/etc/resolv.conf文件中配置最多三個名稱服務器;如果第一個域名服務器沒有響應,解析器會自動去嘗試用第二個服務器。


由於解析器會自動用resolv.conf文件中的DNS服務器的排列順序來查找域名服務器,你可以使用一些方法來達到負載均衡的目的﹕在一些主機上,將主服務器列在前面,在另外主機上將輔域名服務器列在前面。



vi /etc/resolv.conf

search ca.hp.com ??hp.com ?<---在這裡列出通常存取的域

nameserver 128.1.1.1?????<--- 在這裡列出主域名服務器的IP地址

nameserver 128.1.1.2?????<--- 在這裡列出輔域名服務器的IP地址


2.修改/etc/nsswitch.conf

多數UNIX都可以使用本地的hosts文件,NIS,DNS三種方式來解析主機名。/etc/nsswitch.conf文件就是用來決定使用哪個服務來進行名稱解析,如果你沒有/etc/nsswitch.conf文件,系統會默認使用DNS。如果你有一個/etc/nsswitch.conf文件,找到"hosts"這一行,確認DNS是第一個選項。



cat /etc/nsswitch.conf

...

hosts ????dns nis files

...


一旦配置了/etc/resolv.conf和/etc/nsswitch.conf文件,解析器立即開始使用DNS進行名稱解析。


3.修改/etc/hosts文件

由於現在大多數的主機名都是使用DNS來進行解析,你可以選擇刪除/etc/hosts文件中的大多數的條目。但是,你也可以保留一些關鍵的條目以免在域名服務器失效的時候可以起作用,至少你需要保留localhosts條目和你自己的主機名。


在主域名服務器上,你應該保存本域中所有主機的信息;在使用hosts_to_named之前,確認/etc/hosts文件中的主機名都是正確的並且格式完整。你同樣可以選擇以別名方式保留非全格式的主機名。如﹕
在la.ca.hp.com上,修改後的hosts文件如下﹕

# vi /etc/hosts

127.0.0.1 ?localhost

128.1.1.3 ?la.ca.hp.com ?la


4.修改.rhosts,/etc/hosts.equiv等文件。

有些工具需要將接收到的數據包中的IP地址反向解析為域名。如果以下的文件存在,這些文件中應該包含完整格式的域名

~/.netrc

/etc/hosts.equiv

/var/adm/inetd.sec


例如,la上最新的.rhosts文件包含如下信息﹕


# vi ~/.rhosts

oakland.ca.hp.com

sanfran.ca.hp.com

la.ca.hp.com

使用nslookup測試DNS

# nslookup

> server ?128.1.1.1????# 選擇一個域名服務器器

> oakland.ca.hp.com???? # 將個主機名解析為一個IP

> 128.1.1.2?????? ??# 解析一個IP地址為主機名

> exit


Name Server: ?sanfran.ca.hp.com

Address:??? 128.1.1.1


Trying DNS

Name: ???? oakland.ca.hp.com

Address:??? 128.1.1.2



系統默認的配置是為了保證名稱解析服務的運行。如果DNS失效就從DNS切換為NIS,如果NIS也失效,就從NIS切換為/etc/hosts。


如果配置了多種名稱服務方式,並且允許在一種服務無效的時候自動切換使用另一種服務,這時可能出現一種情況就是﹕對同樣的請求,當請求發生的時間不同和響應這種請求的服務不同而得到不同的結果。所以一定要確保所有的名稱解析服務解析出來的結果是一致的。



注意﹕更改系統默認的名稱服務查找的配置會使查錯變得更複雜。


如果swtrace選項沒有設置,nslookup可能返回錯誤的數據源。

# nslookup la

Name Server: sanfran.ca.hp.com

Address: 128.1.1.1


Name : ??la

Address: 128.1.1.3


但是如果使用swtrace選項可能會出現另外一種結果﹕

# nslookup

Name Server: sandran.ca.hp.com

Address: 128.1.1.1

> set swtrace

> la

Name Server: sanfran.ca.hp.com

Address: 128.1.1.1

lookup source is DNS

*** No address (A) record available for la

switching to next source in the policy

lookup source is NIS

Default NIS Server: oakland

Address: 128.1.1.2

Name: la

Address: 128.1.1.3

>


DNS啟動文件和數據文件

啟動文件﹕named.boot,必須放在/etc目錄下,啟動文件告訴域名服務器數據文件的存放位置和指定的域使用哪種類型的服務器。

數據文件的位置是可配置的。建議創建一個單獨的目錄。目錄名字可以隨意選擇。

注意﹕ 域名服務器的cache數據都是存放在內存中,而不是存放在db.cache文件中,這個文件僅僅被用來指明根服務器的IP地址。

輔域名服務器上的named.boot文件和主服務器上的非常接近。只是在關鍵字primary的地方用secondary代替,同時IP地址為輔域名服務器的IP地址。


named守護進程在啟動的時候讀取服務器的數據文件。所以無論對數據文件做了任何修改,都應該重新啟動服務。

重啟動服務的命令為﹕kill - HUP named_pid 或者sig_named restart。


加載DNS數據文件

當系統的運行模式為2或者更高的時候,/sbin/rc2.d中的一個啟動腳本就會執行。這個腳本鏈接到運行腳本/sbin/init.d/named。這個腳本從/etc/rc.config.d/namesvrs中獲取適當的變量。域名服務器用/usr/sbin/named命令啟動。這是一個後台運行的守護進程。當named被激活,它會從啟動文件/etc/named.boot中讀取數據庫文件的位置。


NAMED_ARGS變量很少使用。啟動域名服務的語法和選項如下﹕

Syntax:named [ -d debuglevel} [ -p port_number] [ -b bootfile}

選項有﹕

-d ??????顯示調試信息。-d後面的數字決定信息顯示的級別。調試輸出信息被重定向到 ????? ???????
/var/tmp/named.run文件中。

-p?????? 使用另外一個端口號

-b?????? 使用另外一個啟動文件而不是/etc/named.boot。

在任何時候,你都可以使用運行腳本來手工停止或者重啟動named.

# /sbin/init.d/named stop

# /sinb/init.d/named start


注意: named進程只運行允許在BIND服務器上運行,而不能在BIND客戶端運行。


更新主域名服務器


1.更新主域名服務器上的/etc/hosts文件

??# vi /etc/hosts

2. 使用hosts_to_named命令重建DNS數據文件

??# cd /etc/named.data

??# hosts_to_named -f param

3. 使用 sig_named restart命令重新讀取DNS數據文件。

??# sig_named restart


如果你的DNS域中新添加了一台主機或者修改了IP地址。這時需要更新域名服務器的數據文件。你可以直接使用"vi"來進行修改,但是在一個簡單的域中,你可以通過修改/etc/hosts文件,然後運行hosts_to_named命令。


1.更新主域名服務器上的/etc/hosts文件。

在/etc/hosts文件中添加新的條目。一定要使用完全格式的主機名。

vi /etc/hosts

127.0.0.1 ????localhost

128.1.1.1???? sanfran.ca.hp.com. ???sanfran

128.1.1.2 ????oakland.ca.hp.com.??? oakland

128.1.1.3???? la.ca.hp.com ??????la

128.1.1.4 ????sacramento.ca.hp.com ??sacramento


2.在主域名服務器上重新運行hosts_to_named命令。

此操作會重建主域名服務器上的DNS數據文件,使之能反映/etc/hosts文件的更動。

cd /etc/named.data

hosts_to_named -f param


3.在主服務器上運行sig_named

默認的情況下,named進程在啟動的時候只去讀取db文件。sig_named命令強製named守護進程重新裝載更新過的數據庫文件。

sig_named restart

注意這時輔域名服務器上的數據不會立刻同步更新。下一章講述如何更新輔域名服務器上的數據文件。


更新輔域名服務器

Q:如何知道DNS數據文件是最新的?

Q:什麼時候更新DNS數據文件?

A:named根據數據文件的SOA記錄來判斷是否和什麼時候對文件進行更新。


更新操作只需要在主域名服務器上進行。輔域名服務器只是在發現序列號增加的時候才進行一次數據傳送。這要看SOA記錄中的更新數據的定時器的配置。如果想要立即更新輔服務器上的數據,使用sig_named
restart命令重新啟動服務即可。

SOA記錄列出一個序列號,主服務器上的數據庫文件每更新一次,這個數字就會增長。每使用一次hosts_to_named命令,這個數字就會變化一次。輔域名服務器會定時檢查這個序列號,如果主服務器上的這個序列號增長了,就自動進行一次數據傳遞來更新數據。如果在更新的時刻不能連通主域名服務器,隔一個時間段系統會自動重試。如果在一段給定的時間內都不能與主服務器聯系,輔域名服務器會放棄所有的數據。


注意﹕輔域名服務器定時自動從主服務器更新數據,而如果你想要立即更新數據,在輔服務器上執行sig_named restart命令即可。

回覆
主題工具


類似的主題
主題 主題作者 討論版 回覆 最後發表
[轉載]諾頓手機防毒粉絲聚會 hamayana -- 防 駭 / 防 毒 版 0 2011-07-01 06:15 PM
生命中的磚頭(轉載) Jack2016 -- 網 路 [ 佳 作 / 奇 文 ] 欣 賞 版 0 2001-12-29 03:08 PM
八風吹不動(轉載) Jack2016 -- 網 路 [ 佳 作 / 奇 文 ] 欣 賞 版 0 2001-12-29 03:03 PM
[轉載]挫折,是年輕人最好的禮物 xiaoyu -- 網 路 [ 佳 作 / 奇 文 ] 欣 賞 版 9 2001-12-19 10:53 PM






 XML   RSS 2.0   RSS 
本站使用 vBulletin 合法版權程式
站務信箱 : [email protected]

本論壇所有文章僅代表留言者個人意見,並不代表本站之立場,討論區以「即時留言」方式運作,故無法完全監察所有即時留言,若您發現文章可能有異議,請 email :[email protected] 處理。