?? 如何配置一個linux dns server(轉).txt
字號:
作者:晴天飛雪
日期:2000-9-1 13:43:41
如何配置一個Linux下的DNS Server? (轉)
一、 假定
假定你已對域名服務器 DNS 有基本的了解,如果不是,請參看相關的文襠。
許多DNS的文章都是從DNS原理開始介紹,本人則從使用的角度出發,為Linux的管理員提供一些簡單實用的應用實例。
下面假定我們需要建立一臺企業網的DNS主服務器,應用條件如下:
(1) 一個C類網段地址 (本例中假定是192.22.33)
(2)企業域名為 my.com,并已注冊 (主域名服務器地址 192.22.33.20,主機名為 linux.my.com)
(3)企業網通過路由器與Internet連接
假如你的應用環境與上述條件不同,也請往下看,本文會在上述例子的基礎上針對以下情況作修正:
(1) 多個網段
(2) 封閉的內部網
(3) 只能訪問局部公共網的情況(如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
其中以“;”開頭的行是注釋行,其他各行含義是
(1)diretory /var/named
指定 named 從 /var/named 目錄下讀取 DNS 數據文件。這個目錄用戶可自行指定并創建,指定后所有的DNS 數據文件都存放在此目錄下。
(2)primary my.com db.my
指定 named 作為 my.com 域的主域名服務器,db.my 文件中包含所有 *.my.com 形式的域名轉換數據。
(3)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 地址)
(4)primary 33.22.192.IN-ADDR.ARPA db.192.22.33
指定 named 作為 192.22.33 網段地址轉換主服務器,db.192.22.33 文件中包含了所有 192.22.33.* 形式的地址到域名的轉換數據。
(5) 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.com 和 ftp.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 診斷:
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -