DNS(Domain Name Servive,域名服務)是Internet/Intranet中最基礎也是非常重要的一項服務,提供了網絡訪問中域名到IP地址的自動轉換。我們知道,Inetrnet上的主機成千上萬,並且還在隨時不斷增加,不可能由一個或幾個DNS服務器能夠實現這樣的解析過程,傳統主機表(hosts)方式更無法勝任,事實上DNS依靠一個分布式數據庫系統對網絡中主機域名進行解析,並及時地將新主機的信息傳播給網絡中的其它相關部分,因而給網絡維護及擴充帶來了極大的方便。近年來應用於Intel平台的SCO UNIX組建了大量各級業務網絡,為企業實施Intranet工程提供了良好的前提,筆者為此做了認真的探索,在SCO Unix網絡中成功實現了多級DNS服務器的設置並正常進行轉寄查詢(既本域DNS服務器不能完成解析請求時,自動轉發到其他域中),以下做詳細介紹。 一、 DNS的工作原理。 DNS采用服務器/客戶機模型,是一種分布式層次結構系統。所有的DNS主機都被寫入稱之為名字樹或域名空間的結構中。在DNS域層次結構的頂部是根域,有一組被稱為根服務器的DNS服務器(Name Server)為它服務,直接在根域下的是頂層域,頂層域往下是各個不同層次的子域,每個子域都包含了DNS服務器和客戶機(見圖1)。當DNS客戶機需要和其他主機進行連接時,先向本地的DNS服務器發出主機名解析請求,本地DNS服務器如果認為查詢目標是在自己管轄的域內,則直接返回解析結果,否則把查詢請求轉寄給自己的頂層域繼續查詢,最終將查詢結果返回給客戶機。 < 圖略 > 在SCO Unix中,DNS服務器通過閱讀/etc/named.boot文件確定它所主管的域及名字信息數據存放在哪些區文件(zone)中從而響應各種解析請求的。在DNS的結構體系中,SCO Unix支持五種類型的配置,分別是主名字服務器(primary server)、輔助名字服務器(second server)、唯高速緩存服務器(caching-only server)、從屬模式服務器(server in slave mode)、客戶機。實際應用中,一個域的主名字服務器是必不可少的,當然,為起到均衡負載、相互備份的作用,相鄰域的主名字服務器同時可設為對方的輔助名字服務器。為節省篇幅,本文僅介紹主名字服務器的配置過程。 二、 網絡結構選擇及實現目標。 1、 網絡結構。 本文以某銀行上下級分行組網為例(見圖2),是Internet結構的一個簡單模型。一級分行設為頂層域通過廣域網下連多個二級分行,建立DNS服務器(安裝SCO Unix系統,主機名:ser2,IP:122.68.2.2),設置好本域(ha.CCB)的所有主機;所有二級分行的域均作為子域,圖2中標注了一個二級分行,也建立DNS服務器(安裝SCO Unix系統,主機名:srv2,IP:220.112.8.2),同樣設好本域的所有主機。須說明的是,SCO Unix 選用OpenServer 3.0 或5.0均可。 2、 實現目標。 建立一個分布式的數據庫系統,平常管理員只維護本域主機信息表反映本地主機變化情況。各域DNS服務器不僅能正確解析本域的DNS請求,而且借助頂層域還能解析來自其它域的DNS請求。據此,配置正確路由後,即可通過簡單、友好易記的域名實現全網范圍的的Web服務、匿名FTP服務、Mail服務……等Intranet功能。 < 圖略 > 三、DNS服務器的配置過程。 1、 創建/etc/named.boot文件。 對域:ha.CCB: #vi /etc/named.boot Directory /etc/named.d ;定義數據文件目錄 primary ha.CCB named.hosts ;定義主名字服務器及本域主機信息數據文件 cache . root.cache ;定義高速緩存初始化文件 primary 2.68.122.in-addr.arpa named.rev primary 0.0.127.in-addr.arpa named.local stub smx.ha.CCB 220.112.8.2 ;定義子域表,如有多個子域,依此排列 對域:smx.ha.CCB: #vi /etc/named.boot directory /etc/named.d primary smx.ha.CCB named.hosts cache . root.cache primary 8.112.220.in-addr.arpa named.rev primary 0.0.127.in-addr.arpa named.local forwarders 122.68.2.2 ;定義轉寄查詢目標服務器 2、 配置named.hosts文件,實現正向解析(域名-->IP地址)。 #cd /etc/named.d 對域:ha.CCB: #vi named.hosts $INCLUDE named.soa localhost IN A 127.0.0.1 ser2 IN A 122.68.2.2 IN MX 10 ser2.ha.CCB. mail IN CNAME ser2 ha.ccb. IN MX 10 ser2.ha.CCB. ser1 IN A 122.68.2.1 gj1 IN A 122.68.2.45 對域:smx.ha.CCB: #vi named.hosts $INCLUDE named.soa localhost IN A 127.0.0.1 srv2 IN A 220.112.8.2 IN MX 10 srv2.smx.ha.CCB. mail IN CNAME ser2 smx.ha.ccb. IN MX 10 srv2.smx.ha.CCB. srv1 IN A 220.112.8.1 cli1 IN A 220.112.8.30 cli2 IN A 220.112.8.50 3、 配置named.rev文件,實現反向解析(IP地址-->域名)。 #cd /etc/named 對域:ha.CCB #vi named.rev $INCLUDE named.soa 1IN PTR ser1.ha.CCB. 2IN PTR ser2.ha.CCB. 45IN PTR gl1.ha.CCB. 對域:smx.ha.CCB #vi named.rev $INCLUDE named.soa 1 IN PTR srv1.smx.ha.CCB. 2 IN PTR srv2.smx.ha.CCB. 30 IN PTR cli1.smx.ha.CCB. 50 IN PTR cli2.smx.ha.CCB. 4、 配置named.soa文件。主要用於定期向輔助名字服務器刷新最新變化信息。 對域:ha.CCB #cd /etc/named.d #vi named.soa @ IN SOA ser2.ha.CCB. root.ser2.ha.CCB. ( 1999112510 Serial 10800 Refresh 1800 Retry 3600000 EXPire 86400 ) Minimum IN NS ser2.ha.CCB. 對域:smx.ha.CCB #cd /etc/named.d #vi named.soa @ IN SOA srv2.smx.ha.CCB. root.srv2.smx.ha.CCB. ( 1999112510 Serial 10800 Refresh 1800 Retry 3600000 Expire 86400 ) Minimum IN NS srv2.smx.ha.CCB. 5、 配置named.local文件。 該文件用來將回送地址127.0.0.1轉換成本地戶機名localhost,它是反向域0.0.127.IN-ADDR.ARPA使用的文件,對所有域都相同。 #cd /etc/named.d #vi named.local $INCLUDE named.soa 1 IN PTR localhost. 6、 配置root.cache文件。 該文件用於定義高速緩存中根服務器信息,用戶也可以將本地域內其它服務器或常用主機的地址等有關信息存放其中。一般用系統自帶的root.cache模版即可。例: #cd /etc/named.d #vi root.cache . 999999 IN NS NS.INTERNIC.NET. NS.INTERNIC.NET. 999999 IN A 20.122.25.26 7、 啟動DNS服務。 先查詢後台守護進程/etc/named是否存在,如存在先kill其進程ID號,再重新啟動該命令。 #ps -efgrep named #kill ID #/etc/named 三、DNS客戶機的配置。 1、 Unix客戶機。 對域ha.CCB #vi /etc/resolv.conf domain ha.CCB nameserver 122.68.2.2 對域smx.ha.CCB #vi /etc/resolv.conf domain smx.ha.CCB nameserver 220.112.8.2 2、 Win95/Win98客戶機。 < 圖略 > 點擊"開始"-》"設置"-》"控制面版"-》"網絡",如圖3所示修改"TCP/IP屬性"中DNS設置項,最後確認重啟系統。 三、測試配置情況。 Win95/Win98客戶機可進入MSDOS方式,在C>提示下使用ping hostname命令,其中hostname指所查詢的域名全稱,如配置正確則立刻顯示經過解析的IP地址,否則長時間無顯示結果表示配置不正確需查找原因。 Unix客戶機可使用nslookup命令進行交互式查詢。以下是域smx.ha.CCB中客戶機srv1的查詢過程: $ nslookup Default Server: srv2.smx.ha.CCB Address: 220.112.8.2 > srv1.smx.ha.CCB Server: srv2.smx.ha.CCB Address: 220.112.8.2 Name: srv1.smx.ha.CCB Address: 220.112.8.1 > ser2.ha.CCB Server: srv2.smx.ha.CCB Address: 220.112.8.2 Name: ser2.ha.CCB Address: 122.68.2.1 > 122.68.2.45 Server: srv2.smx.ha.CCB Address: 220.112.8.2 Name: gl1.ha.CCB Address: 122.68.2.45 > exit 我們從上可以看出,DNS服務器可以方便地實現域名--》IP 或 IP--》域名的解析。 四、日常維護及總結。 SCO Unix網絡中DNS的維護很簡單,由於采用分布式的數據庫管理結構,各域系統管理員只負責維護本域內主機信息變化情況。舉例來說,當域內新增客戶機時,先修改named.hosts文件增加客戶機的A記錄,再修改named.rev文件增加PTR記錄,如網絡中存在輔助名字服務器,則按照當時的時間更新主名字服務器上named.soa文件中的版本序列號(serial),最後重啟/etc/named進程即可。其它如客戶機刪除、IP調整等情況依此類推。 多級DNS服務器的正確設置不僅大大方便客戶端用戶的記憶和操作,而且也是Intranet上開展WWW、匿名FTP、E_mail等流行服務的必要前提。由於SCO Unix系統的高可靠性和高安全性,當前國內行業系統采用其組網的居多,相信本文有一定的借鑒作用。