DDNS配置實例(DHCP+DNS=DDNS)

http://yuanbin.blog.51cto.com/363003/110825


DDNS配置實例(DHCP+DNS=DDNS)
 
在網絡管理中,維護DNS服務器是一項很基本的工作。但是,隨着網絡規模的不斷擴大,頻繁的去修改DNS區域數據文件,那也將會是一件很麻煩的事情。因此,動態DNS就應運而生。
 
動態DNS(DDNS)需要DNS和DHCP來協同工作。Linux下也可以實現DDNS,不過DNS需要Bind8以上的版本,DHCP需要3.0以上的版本。
 
本文用RedHat9來實現DDNS,Bind版本是bind-9.2.1-16,DHCP版本是dhcp-3.0pl1-23。DNS和DHCP使用一臺服務器。
 
後記講使用Cent OS 5.1實現DDNS。
 
1. DDNS試驗拓撲
DDNS試驗拓撲
 
2. 安裝DNS和DHCP軟件包
掛載系統盤,進入RPM包目錄,使用rpm –ivh來安裝bind包和dhcp包。其中caching-nameserver包是用來安裝name.ca、name.local等區域文件的,如果不安裝此包,那麼就要手寫或者從別的地方down這些文件了。
rpm
 
3. 配置DNS服務
① 編輯DNS服務主配置文件named.conf,默認在/etc/目錄下。
vi /etc/named.conf
 
② 建立區域數據文件
因爲安裝了caching-nameserver這個包,所以像named.ca、named.local和localhost.zone這三個區域數據文件都有了。現在來創建bob.com域的正向和反向區域數據文件。
vi /var/named/bob.com.dns
 
vi /var/named/bob.com.rev
 
chown named.named /var/named/bob.com.*
 
③ 測試DNS服務
使用service named start命令啓動DNS服務。
named
 
在防火牆中將UDP和TCP的53端口開放。
然後使用service iptables restart命令重啓防火牆。
 
Windows PC測試:
在Windows PC上將DNS指向192.168.1.251。
windos
在Windows PC上使用nslookup命令來解析DNS服務器中的域名。
windows
 
Linux  PC測試:
在Linux PC上將DNS指向192.168.1.251。
resolv
在Linux PC上使用host命令和nslookup命令來解析DNS服務器中的域名。
linuxpc
 
4. 配置DHCP服務
① 編輯DHCP服務主配置文件dhcpd.conf,默認在/etc/目錄下。
vi /etc/dhcpd.conf
ddns-update-style interim;
ignore client-updates;
default-lease-time 604800;
max-lease-time 864000;
option domain-name “bob.com”;
option domain-name-servers 192.168.1.251;
option time-offset -18000;
subnet 192.168.1.0 netmask 255.255.255.0 {
        range 192.168.1.100 192.168.1.200;
        option broadcast-address 192.168.1.255;
        option routers 192.168.1.1;
        }
 
② 測試DHCP+DNS服務
使用service dhcpd start命令啓動DHCP服務。
dhcpd
 
Windows PC測試:
在Windows PC上設置動態獲取IP和DNS。
dhcp
在Windows PC上使用nslookup命令來解析DNS服務器中的域名。
windows
 
Linux PC測試:
在Linux PC上使用動態獲取IP和DNS。
linuxpc
使用service network restart命令重啓網卡。
service
使用ifconfig命令查看Linux PC獲取到的IP地址。
linux
使用cat /etc/resolv.conf查看Linux PC獲取到的DNS地址。
dhcp
在Linux PC上使用host命令和nslookup命令來解析DNS服務器中的域名。
linuxpc
 
5. 配置安全的DDNS
① 創建密鑰
在DDNS服務器中以root身份進行:
使用dnssec–keygen –a HMAC-MD5 –b 128 –n USER bobddns命令來生成密鑰。
dnssec-keygen:用來生成更新密鑰。
-a HMAC-MD5:採用HMAC-MD5加密算法。
-b 128:生成的密鑰長度爲128位。
-n USER bobddns:密鑰的用戶名爲bobddns。
dnssec
 
密鑰生成後,會在當前目錄下自動生成兩個密鑰文件Kbobddns.+157+xxx.key和Kbobddns.+157+xxx.private。
ls兩個密鑰文件
 
查看兩個密鑰文件的內容:
cat Kbobddns.+157+50923.key
cat Kbobddns.+157+50923.private
cat密鑰文件 
兩個密鑰文件中的128位密鑰是一致的。需記住這一串密鑰字符串,後面將會用到。
 
② 添加密鑰信息到DNS主配置文件中
vi /etc/named.conf
添加:
key bobddns {
algorithm hmac-md5;
secret J+mC6Q29xiOtNEBySR4O1g==;
};
algorithm:指明生成密鑰的算法。
secret:指明密鑰串。
 
將bob.com區域中的allow-update { none; }中的“none”改成“key bobddns”;
將1.168.192.in-addr.arpa區域中的allow-update { none; }中的“none”也改成“key bobddns”。
將“none”改成“key bobddns”的意思是指明採用“key bobddns”作爲密鑰的用戶可以動態更新“bob.com”區域。
編輯named.conf
 
③ 添加密鑰信息到DHCP主配置文件中
vi /etc/dhcpd.conf
添加:
key bobddns {
            algorithm hmac-md5;
            secret J+mC6Q29xiOtNEBySR4O1g==;
}
zone bob.com. {
            primary 192.168.1.251;
            key bobddns;
}
zone 1.168.192.in-addr.arpa. {
            primary 192.168.1.251;
            key bobddns;
}
編輯dhcpd.conf
注意:域名後面的“.”千萬不能少了,還有在每個“}”後面都沒有“;”,這兩點和named是不一樣的,請注意。
 
④ 重啓DHCP和DNS服務
service dhcpd restart
service named restart
重啓DHCP和DNS服務
 
⑤ 測試DDNS
Windows PC測試:
使用hostname命令查看主機名。
windowspc
使用ipconfig/releaseipconfig/renew命令重新向DHCP服務器獲取IP。
使用nslookup命令測試。使用ls bob.com命令,發現PC1已經被添加到了bob.com這個域中了。然後使用pc1.bob.com能解析到自己的IP地址了。
windows
 
Linux PC測試:
使用hostname命令查看主機名。
Linuxpc
在Linux PC上的/etc目錄下新建一個DHCP客戶端文件,文件名爲dhclient.conf。
vi /etc/dhclient.conf
加入:
send fqdn.fqdn "Linux";
send fqdn.encoded on;
send fqdn.server-update off;
dhclient.conf
使用dhclient命令立即啓動DHCP客戶端。
使用nslookup命令測試。使用linux.bob.com能解析到自己的IP地址了,使用pc1.bob.com也能解析到Windows PC的IP地址了。
linux
 
DDNS服務器測試:
在重啓完DHCP和DNS服務後,如果正常,會在/var/named/目錄下生成兩個.jnl二進制格式區域文件。這兩個文件是當前正在工作的區域文件的運行時文件,所有動態更新的記錄首先會反應到這兩個文件中,然後經過大約15分鐘的時間纔會將更新內容添加到區域數據文件中。在本文的例子中,區域數據文件就是“bob.com.dns”和“bob.com.rev”。
jnl
查看更新後的區域數據文件,系統會將手寫的區域數據文件格式更改成它自己的格式。
bob.com.dns
說明:以上區域文件的書寫格式與更新前相比變化較大,說明該文件已經被更新過了。Windows PC和Linux PC的主機記錄已經在區域數據文件中自動添加進來了。這裏還要說明的是,在動態更新的客戶端PC1和Linux的A紀錄下多了一條同名的TXT類型的紀錄。TXT類型紀錄是BIND-DNS和DHCP專門用來實現DDNS的輔助性資源紀錄,它的值是哈希標示符字符串,該字符串的值還可以在DHCP租約文件/var/lib/dhcp/dhcpd.leases中找到。
dhcpd.lease
bob.com.rev
 
 
後記:Cent OS 5.1實驗DDNS成功。
 
剛開始我使用Cent OS 5.1做這個實驗,但是沒有成功。named和dhcpd這兩個服務都能夠正常的啓動,但是兩個區域數據文件的.jnl文件死活不出現,這樣就沒有達到動態更新的目的。因爲以前我使用Red Hat 9將這個實驗做了出來,所以,現在我就先使用Red Hat 9來做這個實驗,成功了。
 
接下來,我又重新使用Cent OS 5.1來做這個DDNS實驗,但是結果還是一樣。我以爲是chroot搞的鬼,就將bind-chroot-9.3.3-10.el5這個包卸載了,但是結果還是不成功。那問題就不在chroot上了,我又重裝上了bind-chroot-9.3.3-10.el5。
 
後來,我比對了一下Red Hat 9和Cent OS 5的區域數據文件的屬主(Red Hat 9 的區域數據文件默認在/var/named/目錄下;Cent OS 5的區域數據文件默認在/var/named/chroot/var/named/目錄下。),發現Red Hat 9的named目錄的屬主和屬組都是named,而Cent OS 5的named目錄的屬主是root,屬組是named,並且named目錄下的區域數據文件的屬主和屬組與named目錄一樣。因此,我將named目錄的屬主和屬組都改成了named後,並且重啓named服務,使用updatedb命令重刷系統數據庫後,在/var/named/chroot/var/named/目錄下兩個.jnl文件出現了。此時使用Windows PC和Linux PC測試都成功了。真的很高興,做了幾遍終於搞定了。原來是文件及目錄的權限搞怪,使用ps aux可以看到named服務的管理者是named。
 
如果使用Cent OS或者Red Hat 企業版做這個實驗,其他步驟和上面一樣,只要將name目錄的屬主改成named即可搞定。
chown -R named.named /var/named/chroot/var/named/
 

發佈了27 篇原創文章 · 獲贊 5 · 訪問量 17萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章