Pass4Sure | Taiwan

TestPassPort 的部落格

TestPassPort The safer,easier way to help you pass IT exams . We provide high quality IT exams practice questions and answers. And help you pass any IT exam at the first try.TestPassPort 老品牌、高品質、服務好,通過有保證..^^

« 转载:2009 JAVA認證日--買每年便宜JAVA認證卷的時間到囉 路由基礎概念解析 »

在Linux上建立DNS服務器

一、假定

許多DNS的文章都是從DNS原理開始介紹,本人則從使用的角度出發,為Linux的管理員提供一些簡單實用的應用實例。

下面假定我們需要建立一台企業網的DNS主服務器,應用條件如下:


一個C類網段地址(本例中假定是192.22.33)
企業域名為my.com,並已註冊(主域名服務器地址192.22.33.20,主機名為linux.my.com)
企業網通過路由器與Internet連接
假如你的應用環境與上述條件不同,也請往下看,本文會在上述例子的基礎上針對以下情況作修正:


多個網段
封閉的內部網
只能訪問局部公共網的情況(如169網、上海熱線等)
二、named、/etc/named.boot和ndc

DNS服務器的主體是域名服務器進程named ,named啟動後向DNS客戶機提供域名解析服務,把域名轉換成IP地址。

named啟動時需要讀取一個初始化文件,缺省情況下是/etc/named.boot,所以/etc/named.boot是named的基本配置文件。

雖然啟動named可直接執行named,在Linux上我們可以使用一個控制named的工具ndc。 ndc可以用於啟動、中止、重啟動、刷新DNS數

據、輸出DNS數據等多種調試功能,我在這裡推薦大家用這個工具來幫助DNS服務器的調試。

有關ndc的詳細用法,請參看Linux有關文檔。

三、建立named配置文件/etc/named.boot

/etc/named.boot是基本的配置文件,但不包含任何DNS數據,針對我們前面的假定,我們先建立以下/etc/named.boot,其內容如下:

;
; boot file for name server
;
directory /var/named

primary my.com db.my
primary 0.0.127.IN-ADDR.ARPA db.127.0.0
primary 33.22.192.IN-ADDR.ARPA db.192.22.33
cache . db.cache


其中以“;”開頭的行是註釋行,其他各行含義是


diretory /var/named
指定named從/var/named目錄下讀取DNS數據文件。這個目錄用戶可自行指定並創建,指定後所有的DNS數據文件都存放在此目錄下。
primary my.com db.my
指定named作為my.com域的主域名服務器,db.my文件中包含所有*.my.com形式的域名轉換數據。
primary 0.0.127.IN-ADDR.ARPA db.127.0.0指定named作為127.0.0網段地址轉換主服務器,db.127.0.0文件中包含了127.0.0.*形式

的地址到域名的轉換數據。 (127.0.0網段地址是局域網接口的內部loopback地址)
primary 33.22.192.IN-ADDR.ARPA db.192.22.33指定named作為192.22.33網段地址轉換主服務器,db.192.22.33文件中包含了所有

192.22.33.*形式的地址到域名的轉換數據。
cache . db.cache
指定named從db.cache文件中獲得Internet的頂層“根”服務器地址要注意3、4兩行中的網段地址是倒寫的,另外,各個文件名也是可以自

行決定的。

四、建立各個DNS數據文件

下一步,要按/etc/named.boot中的定義,建立各個DNS數據文件。

(1)建立正向域名轉換數據文件db.my

根據/etc/named.boot的定義,我們在/var/named目錄下建立db.my,其中應該包括所有在my.com域內的主機節點。但在機器數量較

多時,為了調試方便,建議一開始只把幾台節點的數據放入文件,待named正常工作後再把其他節點的數據補充進去。下面是db.my的例

子:

@ IN SOA linux.my.com. root.linux.my.com. (
199511301 ; serial, todays date + todays serial #
28800 ; refresh, seconds
7200 ; retry, seconds
3600000 ; expire, seconds
86400 ) ; minimum, seconds
NS linux.my.com.
MX 10 support.my.com.

localhost A 127.0.0.1
linux A 192.22.33.20
support2 A 192.22.33.102
hp712 A 192.22.33.160
support A 192.22.33.100
mail MX 10 support.my.com.
MX 20 support2.my.com.
www CNAME hp712.my.com.
ftp CNAME hp712.my.com.
ns CNAME linux.my.com.


其中第一行是SOA記錄,定義了域名數據的基本信息,依次是DNS服務器名、DNS管理員郵件地址,括號內的第一個數字是文件版本號,

每次本文件內容修改後,必須更改此號。其餘數字與DNS服務器直接的數據交換有關,在這裡我們不需要改動。

括號後面有一條NS記錄和一條MX記錄,定義了域名服務器本身的域名和username@my.com形式郵件地址所對應的郵件服務器名字。

在此以下是各種域名/地址轉換數據,其中A記錄是DNS域名到IP地址的記錄,是必須有的,以hp712.my.com為例,在A記錄中域my.com被省

略,只寫成hp712,named在處理時會根據named.boot中的定義自動加上my.com,而其對應IP地址為192.22.33.160。

另一種記錄是MX記錄。 MX是郵件地址轉換記錄,本例中定義了將username@mail.my.com的郵件地址轉換成username@support.my.com

username@support2.my.com,即實際上真正的郵件服務器是support.my.com和support2.my.com,其中support.my.com的優先數為10,

support2.my.com的優先數為20,所以通常郵件首先被發往優先數小的主機support.my.com。

還有一些是為方便提供的CNAME記錄。 CNAME定義了一些主機的別名,比如我們將hp712.my.com作為公司的www和ftp服務器,所以我們提供了

www.my.comftp.my.com作為hp712.my.com的別名,用戶只需要根據習慣就可以訪問公司的www、ftp服務器了,如果將來我們換用別的主機

作www和ftp服務器,只需要修改CNAME記錄就可,對用戶沒有影響。

注意:MX和CNAME記錄最後的帶域名的主機名後必須帶一個“.”

(2)建立反向DNS數據文件db.127.0.0和db.192.22.33

反向DNS數據文件用來提供根據IP地址查詢相應DNS主機名,每個網段分別有一個數據文件。

對於內部網段127.0.0通常只有一個地址,即127.0.0.1 loopback地址,db.127.0.0內容如下:

@ IN SOA linux.my.com root.linux.my.com. (
1997022700 ; Serial
28800 ; Refresh
14400 ; Retry
3600000 ; Expire
86400 ) ; Minimum
IN NS linux.my.com.

1 IN PTR localhost.
而外部網段的數據文件db.192.22.33中包含所有主機IP地址到DNS主機名的轉換數據。 db.192.22.33內容如下:
@ IN SOA linux.my.com. root.pc590.my.com. (
199609206 ; Serial
28800 ; Refresh
7200 ; Retry
604800 ; Expire
86400) ; Minimum TTL
NS linux.my.com.
;
; All hosts
;
20 PTR linux.my.com.
102 PTR support2.my.com.
100 PTR support.my.com.
160 PTR hp712.my.com.


反向DNS數據文件中的主要部分是PTR記錄,PTR記錄中的IP地址都只有主機號,named會根據named.boot的定義自動加上前面的網

絡號,注意後面的主機名要附加一個“.”

(3)獲得db.cache文件

在Linux系統上通常在/var/named下已經提供了一個named.ca,該文件文件中包含了Internet的頂層域名服務器,但這個文件通常會發生

變化,所以建議最好從Internic下載最新的版本。該文件可通過匿名ftp從ftp.rs.internic.net下載,在domain目錄下,文件名為

named.root。注意該文件下載後要拷貝到named的工作目錄並重命名成named.boot中指定的文件名,本文中為db.cache。

五、啟動和測試named

首先,根據先前推薦的方法,用ndc啟動named:

ndc start


然後,為了使用和測試named,要把Linux設置在使用DNS狀態。方法是在/etc目錄下,創建resolv.conf文件。以我們的例

子,/etc/resolv.conf內容為:

search my.com
nameserver 192.22.33.20


然後,我們就可以測試named了。

Linux和其他Unix系統均提供了nslookup工具,在命令行狀態下輸入:

nslookup


就進入交換式nslookup環境,如果named正常啟動,nslookup會顯示當前DNS服務器的地址和域名,否則表示named沒能正常啟動。下面簡單

介紹一些基本的DNS診斷:


檢查正向DNS解析在nslookup提示符下輸入帶域名的主機名,如hp712.my.com,nslookup應能顯示該主機名對應的IP地址,如果只輸入

hp712,nslookup會根據/etc/resolv.conf的定義,自動添加my.com域名並回答對應的IP地址。
檢查反向DNS解析在nslookup提示符下輸入某個IP地址,如192.22.33.20,nslookup應能回答該IP地址所對應的主機名。
檢查MX郵件地址記錄在nslookup提示符下輸入:
set q=mx

然後輸入某個域名,以本文的例子,輸入my.com或mail.my.com,nslookup應能夠回答對應的郵件服務器地址,即support.my.com和

support2.my.com。


檢查CNAME別名記錄在nslookup提示符下輸入:

set q=cname


然後輸入某個別名,如www.my.com,nslookup應能回答對應的真實主機名,即hp712.my.com。如要退出nslookup,可輸入exit。

六、修改DNS數據

如果要在網絡中增加主機,例如要增加一台叫做pc01.my.com的PC機,管理員要在db.my中增加該主機對應的A記錄,並且要在db.192.22.33

中增加對應的PTR記錄,然後用ndc更新named的數據:

ndc reload


要注意必須同時更改A記錄和PTR記錄,許多管理員往往只增加A記錄而忽略了逆向查詢用的PTR記錄,結果會使許多應用程序不能正常運行。

特別注意,一旦修改了DNS數據文件的內容,請務必改動數據文件的版本號( Serial )

七、使網絡中的其他系統(客戶機)使用DNS服務器

一旦DNS服務器開始工作,就可以配置所有企業網內的主機使用DNS服務。 Unix主機配置的方法,已經在前面說明過,即創建

/etc/resolv.conf文件,內容見前面第五節。

Windows 95的配置則是在網卡的TCP/IP配置中,選擇使用DNS(enable),然後在配置窗口中分別填入各項參數。以本文的例子,如果運行

Windows95的主機被命名為pc01.my.com,則在主機名(Host)一欄中填pc01,在域名(Domain)一欄中填my.com,然後把域名服務器

(DNS Server)加入搜索列表中。

Windows NT節點的配置大致相同。

八、幾種不同環境下的修正

(1)如果IP網段多於一個假定現在在my.com域中增加一個IP網段192.22.37,則/etc/named.boot的內容中就增加一個網段的定義

,具體如下:

;
; boot file for name server
;
directory /var/named

primary my.com db.my
primary 0.0.127.IN-ADDR.ARPA db.127.0.0
primary 33.22.192.IN-ADDR.ARPA db.192.22.33
primary 37.22.192.IN-ADDR.ARPA db.192.22.37
cache . db.cache


而反向DNS數據文件則增加一個定義192.22.37網段的文件db.192.22.37,其中包括了所有處於192.22.37網段中的節點,其格式與

db.192.22.33類似。

(2)如果企業網是封閉的如果企業網絡不與外界Internet直接互連,DNS服務器就不必關心本企業域以外的域名,所以配置named的時候

可以不理會db.cache,我們可以將/etc/named.boot中的cache行去除。

(3)如果你聯入的公共網不能訪問Internet如果你的內部網接入的公共網只能訪問有限的範圍,如免費的169網、上海熱線等,那麼你的

DNS服務器就不能通過Internet的頂層服務器(root server)進行地址解析,所以你必須用你直接能訪問到的DNS服務器來替代。具體

辦法是用forwarders選項來指定上級DNS服務器,以本文為例,named.boot的內容為:

;
; boot file for secondary name server
;
directory /var/named

secondary my.com 192.22.33.20 db.my
secondary 0.0.127.IN-ADDR.ARPA 192.22.33.20 db.127.0.0
secondary 33.22.192.IN-ADDR.ARPA 192.22.33.20 db.192.22.33
cache . db.cache


其中、等是你能直接訪問到的DNS服務器的地址,通常就是你的ISP (169、上海熱線等)的DNS服務器的地址,至少要有一個。

通過forwarders和options forward-only參數的指定,你的企業DNS服務器就工作在forward-only模式下,所有本地不能解決的名

字都被傳送到ISP的DNS服務器上去解析。

九、建立後備DNS服務器(Secondary DNS Server)

通常有一台DNS主服務器,網絡即可正常工作,但根據Internic對域名的管理規範,一個獨立的域名必須至少有兩台DNS服務器,即一

台DNS主服務器( Primary Server )和一台後備DNS服務器( Secondary Server ),這主要是為DNS服務的可靠性考慮,能使

Internet的性能更為可靠。

現在仍以前面的例子,現在要加入一台運行Linux的機器nspc.my.com,IP地址為192.22.33.60。

(1)主服務器上的修改首先確認DNS主服務器工作正常,然後,在主服務器上的正向DNS數據文件db.my中,加入nspc.my.com的有關記錄,並增加一個NS記錄,使主服務器上的db.my成為下列內容:

@ IN SOA linux.my.com. root.linux.my.com. (
199511301 ; serial, todays date + todays serial #
28800 ; refresh, seconds
7200 ; retry, seconds
3600000 ; expire, seconds
86400 ) ; minimum, seconds
NS linux.my.com.
NS nspc.my.com. ;必須增加的記錄
MX 10 support.my.com.

localhost A 127.0.0.1
linux A 192.22.33.20
support2 A 192.22.33.102
hp712 A 192.22.33.160
support A 192.22.33.100
nspc A 192.22.33.60 ;增加的記錄
mail MX 10 support.my.com.
MX 20 support2.my.com.
www CNAME hp712.my.com.
ftp CNAME hp712.my.com.
ns2 CNAME nspc.my.com. ;增加的記錄
ns CNAME linux.my.com.


然後對主服務器上的各個反向DNS數據文件做類似的修改,增加有關後備服務器的NS記錄,然後重新起動named。

可見,其實在主DNS服務器上的改動主要是增加了一條NS記錄,其餘的改動和增加一台普通節點一樣,如果是用現有的節點做後備DNS服務器,則增加NS記錄是唯一必須的步驟。

(2)後備DNS服務器(secondary server)的配置需要在後備DNS服務器上創建的配置文件只有named.boot和db.cache,格式與主服務器相似,named.boot內容為:

;
; boot file for secondary name server
;
directory /var/named

secondary my.com 192.22.33.20 db.my
secondary 0.0.127.IN-ADDR.ARPA 192.22.33.20 db.127.0.0
secondary 33.22.192.IN-ADDR.ARPA 192.22.33.20 db.192.22.33
cache . db.cache


其中的三行secondary定義,使得named從192.22.33.20,即主服務器上獲得各種DNS數據,並存在本地的各個數據文件中。本地的數據文件由named從主DNS服務器的named下載後生成,通常與主服務器上的數據文件完全一樣,萬一後備服務器與主服務器失去連接而不能下載DNS數據,後備服務器可利用本地的數據文件工作。而後備DNS服務器的db.cache通常由系統管理員從主服務器上拷貝過來即可。

通常,後備DNS服務器可以建立在企業網內,也可利用外部的DNS服務器充當,如讓ISP的服務器作為企業的後備DNS服務器,這樣可以提高DNS服務的可靠性。注意,同一台DNS服務器可以同時成為多個DNS域的服務器,而且可以既作某些域的主服務器,同時又是另一些域的後備服務器。

(3)DNS客戶機端的改動

對於內部網上的Unix主機,應該在/etc/resolv.conf中增加一行nameserver說明,使得系統能夠搜索後備DNS服務器,以本文的例子,/etc/resolv.conf的內容為:

search my.com
nameserver 192.22.33.20
nameserver 192.22.33.60


注意,我們可以根據需要決定/etc/resolv.conf中所列出的DNS服務器的順序,通常選擇訪問速度快的服務器在前。對於Windows95和NT,則是在DNS服務器的列表中把後備DNS服務器添加進去即可,添加的順序同樣可以決定訪問各DNS服務器的優先級。

  • 相關文章:

發表評論:

◎歡迎參與討論,請在這裡發表您的看法、交流您的觀點。

日曆

最新評論及回復

最近發表

Powered By Z-Blog 1.8 Arwen Build 81206

Copyright TestPassPort. Some Rights Reserved.