第二課、設置域名解釋服務
首先解釋一下域名服務(DNS-Domain Name Server)的作用。其實,鏈接到網絡的電腦,只需要知道IP地址就可以實現訪問。但是誰會去記住129.128.5.191這個IP地址是代表OpenBSD的服務器呢?當然是www.openbsd.org容易記憶得多了。域名服務所實現的作用,就是把www.openbsd.org這樣的名字轉換成電腦可以識別的129.128.5.191這樣的IP地址。
所以域名解釋服務應當包含兩種轉換過程:從名字到IP地址(正向解釋);從IP地址到名字(反向解釋)。理解了這些基本感念,配置域名解釋服務得時候就會比較容易了。
第一節、設置named.boot文件
OpenBSD 2.8系統在安裝完成後就已經有域名解釋服務程序named 4.9.7-REL,只是需要人工設定啟動。named的配置文件在/var/named目錄裡面,文件名是named.boot。一個簡單的,可以使用的(當然是和手冊的例子聯系起來啦!)的named.boot的文件內容如下:
directory /namedb
cache . root.cache
primary 0.0.127.IN-ADDR.ARPA localhost.rev
primary 32.168.192.IN-ADDR.ARPA 01tech.rev
primary 01tech.nat 01tech
可以用vi工具來編輯這個文件(vi的使用方法請參考『附錄4』)。解釋一下這個文件各行的含義:
第一行用於指定域名解釋文件所在目錄,其實真正的域名解釋文件是放在/var/named/namedb目錄裡面,因為我們將采用chroot的方式(執行程序的時候切換到程序需要的用戶,並以改用戶的根目錄作為根目錄的方式)執行named,所以這裡是/namedb。
第二行指定了緩存文件,對於曾經訪問過的域名,將會記錄在緩存文件裡面,以後查詢的時候就會快很多。緩存文件的文件名是root.cache。
第三行指定了對於本機的域名反解文件。0.0.127.IN-ADDR.ARPA的寫法其實就是說要反過來求127.0.0.x(x的范圍是1~255)的對應名稱。相關的解釋文件是localhost.rev
第四行和第三行同理,就是要求192.168.32.x的對應名稱。相關的解釋文件是01tech.rev
第五行是正解,指定凡是域名為01tech.nat的名稱都交給01tech文件進行解釋。
第二節、配置域名解釋文件
然後,我們看看/var/namedb目錄裡面的文件的內容,在系統沒有配置域名解釋服務的時候,默認只有兩個文件:localhost.rev和root.cache,其中的localhost.rev並非我們需要的內容,要自行改寫,改寫後的內容如下:
@ IN SOA moo.01tech.nat. root.moo.01tech.nat. (
14 ;Serial
3600 ;Refresh
900 ;Retry
3600000 ;Expire
3600) ;Minimum
IN NS moo.01tech.nat.
1 IN PTR localhost.
解釋一下這個文件的構成吧!其實這個文件由三個RR(Resource record)構成,或者我們用表格的方式來分析,會比較容易理解吧:
[ name ] [ ttl ] [ class ] type data
@ 省略 IN SOA ……
省略 省略 IN NS ……
1 省略 IN PTR ……
Name必須為主機名或者域名,當使用@時代表縮寫,就是和named.boot文件中指定的一樣,在這裡就代表127.0.0.x了。
ttl是指此條數據的有效保存期限,通常都忽略掉,采用默認的ttl值。
class指定網絡類型,IN代表Internet,基本上都不會使用別的類型。
type常見的有SOA、NS、A、PTR、MX、CNAME等。
SOA(Start Of Authority)後面跟負責這個域的主機,管理員郵箱,序列號,副解釋域更新間隔,副解釋域更新失敗重試間隔,主解釋域失敗時副解釋域提供數據的有效期限,其他域名解釋服務器保留本域名解釋服務器的時間。需要注意的是,在主機和管理員郵箱後一定不能缺少“.”否則系統會自動加上完整的域名,例如只寫moo的話,系統會添加為moo.01tech.nat。所以也可以簡單的把SOA語句寫作SOA moo root.moo (……)。
NS(Name Server)後面跟指定的提供域名解釋服務的主機名
PTR(Pointer)後面是對應於前面IP地址的名稱。
A(Address)後面是對應於前面的名稱的IP地址。需要注意正解的A和反解的PTR的記錄必須相符,否則會造成DNS查詢不正常,系統變慢。
CNAME用於建立別名,這樣訪問別名的時候,就會轉為訪問正式的名稱。
MX記錄的是一串目的地址列表,用於告訴郵件服務器傳送信件的優先順序。
對於A、CNAME、MX的使用方法將會在後面的正解文件中看到,以後將不再作出解釋。
01tech.rev的文件內容和localhost.rev文件基本相同,如下:
@ IN SOA moo.01tech.nat. root.moo.01tech.nat. (
14 ;Serial
3600 ;Refresh
900 ;Retry
3600000 ;Expire
3600) ;Minimum
IN NS moo.01tech.nat.
1 IN PTR moo.01tech.nat.
01tech的內容如下:
@ IN SOA moo.01tech.nat. root.moo.01tech.nat. (
14 ;Serial
3600 ;Refresh
900 ;Retry
3600000 ;Expire
3600) ;Minimum
IN NS moo.01tech.nat.
IN MX 5 pop.01tech.nat.
moo IN A 192.168.32.1
www IN CNAME moo
pop IN CNAME moo
smtp IN CNAME moo
localhost. IN CNAME moo
01tech.nat. IN CNAME moo
第三節、測試DNS
好了,說了一大堆的東西,需要好好消化,不過我們還是看看我們的DNS是否正常吧,通過以下的命令啟動named:
named –t /var/named
然後用nslookup來檢查DNS是否正常。以下是nslookup運行的結果,任何時候如果域名不能解釋,通過按Ctrl+C可以中斷查詢。
nslookup
Default Server: moo.01tech.nat
Address: 192.168.32.1
>pop
Server: moo.01tech.nat
Address: 192.168.32.1
Name: moo.01tech.nat
Address: 192.168.32.1
Aliases: pop.01tech.nat
>exit
如果您完全按照手冊的例子來配置您的DNS,但是查詢卻沒有這樣的結果,那麼您需要重新再來,好好吃透上面的說明了。
第四節、在啟動系統的時候自動啟動DNS
要使系統在啟動時自動啟動DNS服務非常簡單,修改/etc/rc.conf文件裡面的相關項就可以了
named_flags=NO 改為 named_flags=””