周 莉 張曉艷
(蘇州市職業大學計算機工程學院,江蘇 蘇州 215104)
基于Linux的中小企業網絡DDNS服務的研究和實現
周 莉 張曉艷
(蘇州市職業大學計算機工程學院,江蘇 蘇州 215104)
本文以動態域名系統為研究對象,分析DDNS的工作原理及應用范圍,以中小企業具體應用為實例,根據不同企業需求,闡述DDNS實現方法、配置步驟和測試方法,并使用協議分析工具展示測試結果。
域名系統;動態主機配置;動態域名系統
DNS服務器對域名進行管理,當DNS服務器所管轄域名區域內發現變化,如增減主機、主機IP地址變動,DNS服務器上的配置文件就要做出相應的改變,這種改變涉及很多人工更新。隨著計算機普及和網絡規模擴大,純粹依靠人工更新不現實[1],DNS自動更新也成為企業網絡中的基本需求,動態域名系統DDNS正得到廣泛的應用。
基于DDNS服務,管理員可以在地址發生變動的主機上,使用命令來更新DNS服務器上對應的記錄,這種情況適用于更新不頻繁且涉及范圍較小的地址變動,如服務器地址的變化;更多的,主機名與IP地址綁定后,實現由IP地址動態綁定的DHCP服務器向區域內主DNS服務器發送更新通知;主DNS服務器更新后,可以通過主動方式或被動方式與從DNS服務器通信,實現從DNS服務器上的數據同步,到最終變動的記錄在區域內所有的DNS服務器上的更新。本文以兩個中小企業的DDNS應用為例,闡述DDNS的實現和測試方法。
企業網絡中管理員往往管理多臺服務器,除DNS服務器以外還包括WEB服務器、FTP服務器等等,這些服務器的地址相對穩定,但是特定情況下IP地址也會發生變化,當發生變化的時候,管理員可以使用命令自動更新DNS服務器上對應的記錄,這樣避免了手動修改DNS服務器記錄并重啟DNS服務器的麻煩。本文以一個中小型企業網絡為例進行闡述,企業網絡地址是192.168.0.0/24,公司域名為test.com,DNS服務器的地址是192.168.0.2,WWW服務器當前的地址是192.168.0.4。
2.1 DNS服務器端的設置
(1)密鑰文件的生成
WWW服務器要更新DNS服務器上的記錄,就必須具有一個可靠的身份,取得DNS服務器的信任,那么在DDNS中,這種身份認證通常是基于非對稱加密技術的,通過相應的命令生成一對公鑰和私鑰,DNS密鑰的生成使用dnssec-kengen命令[2],該命令可以指定算法、密鑰長度和更新類型,主要算法有RSAMD5、RSA、DSA、DH、HMAC-MD5等,類型有ZONE和HOST,ZONE表示客戶端可以更新任何標志及整個ZONE,HOST表示客戶端僅可以針對自身的主機名更新;

//生成更新所需的密鑰文件,選用HMAC-MD5算法,密鑰長度512bit,更新A記錄

//查看生成的密鑰文件,公鑰文件以.key結尾,私鑰文件以.private結尾
(2)主配置文件的修改
主配置文件的修改主要包括添加密碼選項,在區域聲明中加入更新策略。打開Kdns-dhcp.+157+55691.key文件將其中的密鑰復制到DNS服務器的主配置文件,建立密鑰選項,在要更新的區域聲明中做更新策略配置。


//在原有的ZONE的聲明中加入update-policy
//grant這句表示在ZONE中,使用密鑰dns-www可以更新www.test.com的A標志
(3)權限的開放
在更新的過程中,會涉及對從服務器相應文件夾的讀寫操作,因此必須在DNS服務器上做出相應的設置,否則會因為權限問題而無法同步,設置方法如下:
[root@localhostdns-key]# chown named.named/var/ named/
//設/var/named的文件所有者和文件所屬的組
2.2 客戶端的更新
(1)密鑰文件的分發
密鑰文件生成之后,需要通過一種安全的方式從網絡上傳送給WWW服務器。SSH將待傳輸數據包進行加密后,對其進行網絡傳輸,適合對密鑰文件的分發,Linux默認安裝了SSH程序OpenSSH,實現文件異地復制的命令是scp,配置過程如下:

在DNS服務器端,用scp命令將密碼文件用SSH傳遞給客戶端:
[root@localhost dns-key]#scp/root/dns-key/Kdns-www* ssh-user1@192.168.0.4:~
//將本地的Kdns-www公鑰、私鑰文件傳遞到www.test. com上ssh-usr1用戶主目錄中
(2)在WWW服務器上使用nsupdate遠程更新DNS記錄
[root@localhost ddns]#nsupdate-k Kdns-www.+ 157+23545.key
//使用指定密鑰文件進行更新
〉server 192.168.0.2//指定更新對象(給出DNS服務器的地址)
〉update delete www.test.com//刪除已有的www.test. comA記錄
〉update add www.test.com 600 A 192.168.0.5//增加新的www.test.comA記錄
〉send//將之前輸入的命令,遞交DNS服務器執行(3)DDNS測試
使用host命令解析www.test.com,得出更新后的地址,說明DNS服務器端已更新成功:

通過Wireshark捕獲兩者之間的通信,可以看到DNS服務器和客戶端之間更新了www.test.com這條記錄:

圖1 基于nsupdate的DDNS更新過程
在實際應用中,更多的是DNS服務器與DHCP服務器之間互動實現DDNS。本文以一個小型企業網絡為例,企業網絡地址為192.168.0.0/24,公司域名為test.com,網絡中DNS服務器地址為 192.168.0.2,DHCP服務器的地址為192.168.0.3,網絡中由DHCP服務器來自動分配的IP地址池是192.168.0.50-192.168.0.200,有一臺客戶名完整的主機名即為alice.test.com,其IP地址由DHCP服務器自動分配。
3.1 DNS服務器的配置
(1)密鑰文件的生成
DNS與DHCP服務器之間的自動更新也需要身份的驗證,同樣使用dnssec-kengen命令來生成兩者之間通信的密鑰文件:

//查看生成的公鑰文件和私鑰文件
(2)配置文件的修改
與基于nsupdate的DDNS相同,在配置文件中生成一個密鑰選項key,名為dns-dhcp,包含算法和Kdns-dhcp.+157+ 55691.key中的公鑰,在區域聲明中加入key選項和allow_update選項:
3.2 DHCP服務的安裝與配置
DHCP服務實現網絡內IP地址的自動分配,當DHCP客戶端啟動時,它會自動與DHCP服務器通信,由DHCP服務器為DHCP客戶端提供自動分配IP地址的服務。CentOS 6.5中dhcp服務可以使用rpm命令進行安裝,在聯網的情況下,也可以使用yum命令進行安裝:



3.3 自動更新的測試
設置主機alice.test.com從DHCP處自動獲得IP地址,如使用ifconfig命令查看,從DHCP服務器處獲得192.168.0.50,此 時 使 用 host命 令 來 解 析 alice.test.com,會 得 到192.168.0.50,通過Wireshark可以捕獲到DNS服務器和DHCP服務器之間相應的通信,test.com域得到了更新,如圖2所示:

圖2 基于DHCP的DDNS
Linux作為一款優秀的自由軟件正得到日益廣泛的應用,越來越多的企業采用免費、靈活、高效的Linux作為企業服務器的平臺,本文給出了Linux下DNS服務器的重要功能DDNS的實現,對企業Linux運維人員具有一定的參考價值和指導意義。
[1]Behrouz A.Forouzan,Sophia Chung Fegan.TCP/IPF協議族(第2版)[M].北京:清華大學出版社,2003.
[2]鳥哥.鳥哥的Linux私房菜—服務器架設篇[M].北京:機械工業出版社,2012.
[3]王小杰.基于Linux系統的DHCP服務器架構[J].電腦編程技巧與維護,2013,(10):83-84.
Research and Implementation of DDNS Application in SMEs Based on Linux
Zhou LiZhang Xiaoyan
(Department of Computer Engineering,Suzhou Vocational University,Suzhou 215104,Jiangsu)
This paper focuses on the dynamic domain name system,analyzes DDNS working principle and applications,elaborates implementation,configuration procedures and test methods of DDNS according to different needs in SMEs’applications and gives test results by using protocol analysis tool.
DNS;DHCP;DDNS
TP368.5
A
1008-6609(2015)10-0035-03
周莉,女,江蘇江陰人,講師,研究方向:計算機網絡與職業教育。
蘇州市職業大學教改課題“高職《Linux網絡管理》課程的優化改革”,項目編號:SZDJG—14019。