基於Linux的網路試驗系統的設計(三)

火星人 @ 2014-03-12 , reply:0


   作者:wangzy
來自: 軟體屋-Linux之家

第三章 DNS(域名系統)和設置

第一節 DNS介紹

一、DNS

連接TCP/IP的每個網路介面用一個唯一的32位的IP地址標識,但由於數字比較複雜、難以記憶而且沒有形象性。因而人們發明了用域名系統來解決它,在這種情況下,我們可以使用易於理解和較為形象的名稱來作為一台計算機的標識。在大多數情況下,數字地址和域名地址可以交替使用;但無論用數字地址或是域名進行網路應用時,網路總是以IP地址為基礎來進行的。在網路進行連接前,系統必須將域名地址轉換成IP地址。這就是DNS的任務。

將域名轉換成IP地址有常用的兩種方法。一種較古老的方法是從一個稱為「主機表」的文件中查找主機名;後來一般使用的是一個稱為「域名服務(DNS)」的分散式資料庫系統,將名字轉換成IP地址。

主機表是一個簡單的文本文件,可以使IP地址與主機名相關聯。在Redhat5.2中,主機表文件為/etc/hosts,該文件的每一表項包含一個IP地址和用空格隔開的與該地址關聯的主機名列表。

雖然主機表比較簡單,但它有一些缺點。域名系統則能克服這些缺點:

-DNS的擴充性好。它並不依靠單獨一個大表,而是一個分散式資料庫系統,不會因為資料庫的增長而陷入困境。

-DNS可確保在必要時將新主機的信息傳播到網路中其他部分。不僅能自動地傳播信息,而且可以只傳播所需的信息。

DNS的工作原理為:如果一台DNS伺服器接收到一個要求獲取有關主機信息的請求,它就將該請求發送給一台管理伺服器。管理伺服器是負責保持查詢域的精確信息的任何伺服器。當它響應該請求時,本地伺服器就將回答信息保存在高速緩存中供將來使用。當下一次本地伺服器再接收到該信息的請求時,它本身就回答這個請求。

二、DNS伺服器的類型

1、「Cache-Only」的DNS伺服器:

一個DNS伺服器也不可能擁有國際網路上所有的主機信息,因此它提供一個轉送方式,將自己的DNS伺服器無法處理的查詢要求轉送至上一層的DNS伺服器查詢,然後將所得到的查詢結果,傳送給提出查詢要求的主機。而「Cache-Only」 的「 DNS」 就是該DNS伺服器的主機信息里除了自己之外就沒有了,它將所有的查詢要求都轉送至其他DNS伺服器去查詢。

2、「 Primary」 DNS伺服器:

一個完整功能的DNS伺服器,管理一個或數個「 Domain」 (域)的機器信息。而這些主機相關的資料都依照格式儲存於伺服器的檔案目錄中,然後會在伺服器啟動時將這些資料讀入系統。


「 Secondary」 DNS伺服器:

基本上它也是一個完整功能的DNS伺服器,只是所不同的是,它的主機資料並非完全儲存於伺服器所在的檔案目錄,而由某個「Primary DNS」 來提供。

我們的實驗系統將是一個「Primary」的DNS伺服器,它一方面提供本地區域網用戶的查詢,另一方面則將其他的請求做緩存處理。

第二節 DNS的設置

一、應用條件

在Linux上已經帶有了DNS軟體,我採用的是Internet使用最為廣泛的BIND(Berkeley Internet Name Domain Name Server)版本8。

我們的應用條件如下:

1、一個C類網段地址 (172.31.0);

2、域名為 ec.edu,(主域名伺服器地址 172.31.0.10,主機名為Linuxserver.ec.edu);

3、區域網通過網關與Internet連接 。

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

named 啟動時需要讀取幾個數據文件,在bind 4下預設情況下是先/etc/named.boot,所以/etc/named.boot是named的基本配置文件。在bind 8下,預設情況下先是/etc/named.conf。(請注意red hat 5.1中自帶的是bind 4,而red hat 5.2自帶的是bind 8,我就是在這上面花費了大量的時間)。

雖然啟動named可直接執行named,在Linux上我們可以使用一個控制named的工具ndc。ndc可以用於啟動、中止、重啟動、刷新DNS數據、輸出DNS數據等多種調試功能,我就是用這個工具來幫助DNS伺服器的調試。

 

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

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


; boot file for name server

directory /var/named

domain ec.edu named.hosts

primary 0.0.127.in-addr.arpa named.local

primary 0.31.0.172.in-addr.arpa named.rev

cache . named.ca


其中以「;」開頭的行是註釋行,其他各行含義如下:

(1)diretory /var/named :指定named從 /var/named 目錄下讀取DNS數據文件,這個目錄用戶可自行指定並創建,指定后所有的DNS數據文件都存放在此目錄下;

(2)domain ec.edu named.hosts :指定named作為ec.edu域的主域名伺服器,named.hosts文件中包含所有 *.ec.edu形式的域名轉換數據;

(3)primary 0.0.127.IN-ADDR.ARPA named.local :指定named作為127.0.0網段地址轉換主伺服器,named.local文件中包含了127.0.0.*形式的地址到域名的轉換數據(127.0.0網段地址是區域網介面的內部 loopback地址);

(4)primary 0.31.0.172.in-addr.arpa named.rev :指定named作為172.31.0網段地址轉換主伺服器,named.rev文件中包含了所有 172.31.0.*形式的地址到域名的轉換數據;

(5)cache . named.ca :指定named從 named.ca 文件中獲得Internet的頂層「根」伺服器地址 。

(3)、(4)兩行中的網段地址是倒寫的,另外,各個文件名也是可以自行決定的。


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


// generated by named-bootconf.pl

options {

directory 「/var/named」;

// query-source address * port 53;

};

// a caching only nameserver config

zone 「.」 {

type hint;

file 「named.ca」;

};

zone 「0.0.127.in-addr.arpa」 {

type master;

file 「named.local」;

};

//-------------------------------

zone 「0.31.172.in-addr.arpa」 {

type master;

file 「named.rev」;

};

zone 「ec.edu」 {

type master;

file 「named.hosts」;

};

//這些為添加的內容

//-------------------------------

這個文件也可以使用named-bootconf.pl腳本從named.boot轉化得到。

 

三、建立各個DNS數據文件

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


1、建立正向域名轉換數據文件named.hosts

根據/etc/named.boot的定義,我們在/var/named目錄下建立named.hosts,其中應該包括所有在ec.edu域內的主機節點。但在機器數量較多時,為了調試方便,建議一開始只把幾台節點的數據放入文件,待named正常工作后再把其他節點的數據補充進去。下面是named.hosts的例子:


@ IN SOA LinuxServer.ec.edu. root.LinuxServer.ec.edu. (

1999051702 ; serial

36000 ; refresh

8640 ; retry

360000 ; expire

86400 ) ; minim

IN NS LinuxServer.ec.edu.

MX 10 LinuxServer.ec.edu.

localhost IN A 127.0.0.1

LinuxServer IN A 172.31.0.10

o2 IN A 172.31.0.1

ntsever IN A 172.31.0.110

w100 IN A 172.31.0.100

W101 IN A 172.31.0.101

W102 IN A 172.31.0.102

W103 IN A 172.31.0.103

W104 IN A 172.31.0.104

W105 IN A 172.31.0.105

W106 IN A 172.31.0.106

W107 IN A 172.31.0.107

W108 IN A 172.31.0.108

W109 IN A 172.31.0.109

W111 IN A 172.31.0.111

W112 IN A 172.31.0.112

W113 IN A 172.31.0.113

W114 IN A 172.31.0.114

W115 IN A 172.31.0.115

W116 IN A 172.31.0.116

W117 IN A 172.31.0.117

W118 IN A 172.31.0.118

W119 IN A 172.31.0.119

W120 IN A 172.31.0.120

gateway IN A 172.31.0.200

mail MX 10 Linuxserver.ec.edu.

www CNAME Linuxserver.ec.edu.

ftp CNAME Linuxserver.ec.edu.




其中第一行是SOA記錄,定義了域名數據的基本信息,依次是DNS伺服器名、DNS 管理員郵件地址(這裡的"@"用"."代替),括弧內的第一個數字是文件版本號(一般為當天的時間和修改次數組成),每次本文件內容修改後,必須更改此號。其餘數字與DNS伺服器直接的數據交換有關,在這裡我們不需要改動。

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

在此以下是各種域名/地址轉換數據,其中A記錄是DNS域名到IP地址的記錄,是必須有的,以o2.ec.edu為例,在A記錄中域ec.edu被省略,只寫成o2,named在處理時會根據named.boot中的定義自動加上ec.edu,而其對應IP地址為172.31.0.1。另一種記錄是MX記錄。MX是郵件地址轉換記錄,本例中定義了將username@mail.ec.edu的郵件地址轉換成username@Linuxserver.ec.edu,即實際上真正的郵件伺服器是LinuxServer.ec.edu,它的優先數為10,所以通常郵件首先被發往優先數小的主機support.my.com(有兩個以上的mail伺服器的情況)。

還有一些是為方便訪問者而提供的CNAME記錄。CNAME定義了一些主機的別名,如我們要將Linuxserver.ec.edu作為實驗系統的www和ftp伺服器,所以我們提供了www.ec.edu和ftp.ec.edu作為Linuxserver.ec.edu的別名,用戶只需要根據習慣就可以訪問系統的www、ftp伺服器了,如果將來我們換用別的主機作www和ftp伺服器,只需要修改CNAME記錄就可,對用戶沒有影響。在其後的web配置中的虛擬主機設置,我們還將再次使用CNAME記錄。

注意:MX和CNAME記錄最後的帶域名的主機名后必須帶一個「.」。


2、建立反向DNS數據文件named.local和named.rev

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

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


@ IN SOA LinuxServer.ec.edu. root.LinuxServer.ec.edu. (

1999051602 ; serial

36000 ; refresh

8640 ; retry

360000 ; expire

86400 ) ; minim

IN NS LinuxServer.ec.edu.

1 IN PTR localhost.


而外部網段的數據文件 named.rev 中包含所有主機 IP 地址到DNS主機名的轉換數據。named.rev 內容如下:


@ IN SOA LinuxServer.ec.edu. root.LinuxServer.ec.edu. (

1999051602 ; serial

36000 ; refresh

8640 ; retry

360000 ; expire

86400 ) ; minim

IN NS LinuxServer.ec.edu.

10 IN PTR LinuxServer.ec.edu.

1 IN PTR o2.ec.edu.

100 IN PTR w100.ec.edu.

101 IN PTR w101.ec.edu.

102 IN PTR w102.ec.edu.

103 IN PTR w103.ec.edu.

104 IN PTR w104.ec.edu.

105 IN PTR w105.ec.edu.

106 IN PTR w106.ec.edu.

107 IN PTR w107.ec.edu.

108 IN PTR w108.ec.edu.

109 IN PTR w109.ec.edu.

110 IN PTR w110.ec.edu.

111 IN PTR w111.ec.edu.

112 IN PTR w112.ec.edu.

113 IN PTR w113.ec.edu.

114 IN PTR w114.ec.edu.

115 IN PTR w115.ec.edu.

116 IN PTR w116.ec.edu.

117 IN PTR w117.ec.edu.

118 IN PTR w118.ec.edu.

119 IN PTR w119.ec.edu.

120 IN PTR w120.ec.edu.




反向DNS數據文件中的主要部分是PTR記錄,PTR記錄中的IP地址都只有主機號,named會根據named.boot的定義自動加上前面的網路號,注意在後面的主機名要附加一個「.」 。


3、獲得named.ca文件

在Linux系統上通常在/var/named下已經提供了一個named.ca,該文件中包含了Internet的頂層域名伺服器,但這個文件通常會發生變化,所以最好從Internic下載最新的版本。該文件可通過匿名ftp從ftp.rs.internic.net下載,在domain目錄下,文件名為 named.root。該文件下載后要拷貝到named的工作目錄並重命名成named.boot中指定的文件名,本文中為named.ca。

 

四、設置反向解析順序文件/etc/resolv.conf

為了使用和測試named,要把Linux設置在使用DNS狀態。方法是在/etc目錄下,創建resolv.conf文件。這個文件的用途是讓設置域名伺服器的順序,如果在第一個域名伺服器上找不著某個域名,它就會到第二個域名伺服器上去尋找,依次類推。我們的伺服器也通過網關接入Internet,而它的DNS只包含本地網段的主機信息;因此在連入Internet后本地在找不著某個域名時就必須到別的DNS伺服器上去查找。以實驗系統的例子,/etc/resolv.conf 內容為:


domain ec.edu

search ec.edu

nameserver 172.31.0.10

nameserver 202.96.0.133 在172.31.0.10找不著的情況下到202.96.0.133

nameserver 202.96.199.133 在前兩個都找不著的情況下到202.96.199.133





[火星人 via ] 基於Linux的網路試驗系統的設計(三)已經有447次圍觀

http://www.coctec.com/docs/net/show-post-68526.html