<b>文中有不對或者有不清楚的地方,請大家告訴我,謝謝!</b>
<b></b>
<b>DDNS</b><b>配置執行個體(DHCP+DNS=DDNS)</b>
在網絡管理中,維護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。
<b>1. </b><b>DDNS</b><b>試驗拓撲</b>
<a href="http://yuanbin.blog.51cto.com/attachment/200811/7/363003_1226036086iO0P.jpg"></a>
<b>2. </b><b>安裝DNS和DHCP軟體包</b>
挂載系統盤,進入RPM包目錄,使用rpm –ivh來安裝bind包和dhcp包。其中caching-nameserver包是用來安裝name.ca、name.local等區域檔案的,如果不安裝此包,那麼就要手寫或者從别的地方down這些檔案了。
<a href="http://yuanbin.blog.51cto.com/attachment/200811/7/363003_1226036087nvl9.gif"></a>
<b></b><b></b>
<b>3. </b><b>配置DNS服務</b>
① 編輯DNS服務主配置檔案named.conf,預設在/etc/目錄下。
<b>vi /etc/named.conf</b>
② 建立區域資料檔案
因為安裝了caching-nameserver這個包,是以像named.ca、named.local和localhost.zone這三個區域資料檔案都有了。現在來建立bob.com域的正向和反向區域資料檔案。
<b>vi /var/named/bob.com.dns</b>
<b>vi /var/named/bob.com.rev</b>
chown named.named /var/named/bob.com.*
③ 測試DNS服務
使用<b>service named start</b>指令啟動DNS服務。
<a href="http://yuanbin.blog.51cto.com/attachment/200811/7/363003_1226036087xR9b.gif"></a>
在防火牆中将UDP和TCP的53端口開放。
然後使用<b>service iptables restart</b>指令重新開機防火牆。
Windows PC測試:
在Windows PC上将DNS指向192.168.1.251。
<a href="http://yuanbin.blog.51cto.com/attachment/200811/7/363003_1226036088Ldq8.gif"></a>
在Windows PC上使用<b>nslookup</b>指令來解析DNS伺服器中的域名。
<a href="http://yuanbin.blog.51cto.com/attachment/200811/7/363003_1226036092vMn9.gif"></a>
Linux PC測試:
在Linux PC上将DNS指向192.168.1.251。
<a href="http://yuanbin.blog.51cto.com/attachment/200811/7/363003_1226036093dpgJ.gif"></a>
在Linux PC上使用<b>host</b>指令和<b>nslookup</b>指令來解析DNS伺服器中的域名。
<a href="http://yuanbin.blog.51cto.com/attachment/200811/7/363003_1226036095Z59Z.gif"></a>
<b>4. </b><b>配置DHCP服務</b>
① 編輯DHCP服務主配置檔案dhcpd.conf,預設在/etc/目錄下。
<b>vi /etc/dhcpd.conf</b>
<b>ddns-update-style interim;</b>
<b>ignore client-updates;</b>
<b>default-lease-time 604800;</b>
<b>max-lease-time 864000;</b>
<b>option domain-name “bob.com”;</b>
<b>option domain-name-servers 192.168.1.251;</b>
<b>option time-offset -18000;</b>
<b></b>
<b>subnet 192.168.1.0 netmask 255.255.255.0 {</b>
<b> range 192.168.1.100 192.168.1.200;</b>
<b> option broadcast-address 192.168.1.255;</b>
<b> option routers 192.168.1.1;</b>
<b> }</b>
② 測試DHCP+DNS服務
使用<b>service dhcpd start</b>指令啟動DHCP服務。
<a href="http://yuanbin.blog.51cto.com/attachment/200811/7/363003_1226036099Ifnx.gif"></a>
在Windows PC上設定動态擷取IP和DNS。
<a href="http://yuanbin.blog.51cto.com/attachment/200811/7/363003_1226036099beOK.gif"></a>
<a href="http://yuanbin.blog.51cto.com/attachment/200811/7/363003_1226036102746y.gif"></a>
Linux PC測試:
在Linux PC上使用動态擷取IP和DNS。
<a href="http://yuanbin.blog.51cto.com/attachment/200811/7/363003_1226036104Tov6.gif"></a>
使用<b>service network restart</b>指令重新開機網卡。
<a href="http://yuanbin.blog.51cto.com/attachment/200811/7/363003_1226036107oRl8.gif"></a>
使用<b>ifconfig</b>指令檢視Linux PC擷取到的IP位址。
<a href="http://yuanbin.blog.51cto.com/attachment/200811/7/363003_1226036108EOTS.gif"></a>
使用<b>cat /etc/resolv.conf</b>檢視Linux PC擷取到的DNS位址。
<a href="http://yuanbin.blog.51cto.com/attachment/200811/7/363003_1226036110Conn.gif"></a>
<a href="http://yuanbin.blog.51cto.com/attachment/200811/7/363003_1226036112tRQZ.gif"></a>
<b>5. </b><b>配置安全的DDNS</b>
① 建立密鑰
在DDNS伺服器中以root身份進行:
使用<b>dnssec–keygen –a HMAC-MD5 –b 128 –n USER bobddns</b>指令來生成密鑰。
<b>dnssec-keygen</b><b>:</b>用來生成更新密鑰。
<b>-a HMAC-MD5</b><b>:</b>采用HMAC-MD5加密算法。
<b>-b 128</b><b>:</b>生成的密鑰長度為128位。
<b>-n USER bobddns</b><b>:</b>密鑰的使用者名為bobddns。
<a href="http://yuanbin.blog.51cto.com/attachment/200811/7/363003_1226036114MI7U.gif"></a>
密鑰生成後,會在目前目錄下自動生成兩個密鑰檔案Kbobddns.+157+xxx.key和Kbobddns.+157+xxx.private。
<a href="http://yuanbin.blog.51cto.com/attachment/200811/7/363003_1226036114ebPs.gif"></a>
檢視兩個密鑰檔案的内容:
<b>cat Kbobddns.+157+50923.key</b>
<b>cat Kbobddns.+157+50923.private</b>
兩個密鑰檔案中的128位密鑰是一緻的。需記住這一串密鑰字元串,後面将會用到。
② 添加密鑰資訊到DNS主配置檔案中
添加:
<b>key bobddns {</b>
<b>algorithm hmac-md5;</b>
<b>secret J+mC6Q29xiOtNEBySR4O1g==;</b>
<b>};</b>
algorithm:指明生成密鑰的算法。
secret:指明密鑰串。
将bob.com區域中的allow-update { none; }中的“none”改成“<b>key bobddns</b>”;
将1.168.192.in-addr.arpa區域中的allow-update { none; }中的“none”也改成“<b>key bobddns</b>”。
将“none”改成“key bobddns”的意思是指明采用“key bobddns”作為密鑰的使用者可以動态更新“bob.com”區域。
<a href="http://yuanbin.blog.51cto.com/attachment/200811/7/363003_1226036116s7RE.gif"></a>
③ 添加密鑰資訊到DHCP主配置檔案中
<b> algorithm hmac-md5;</b>
<b> secret J+mC6Q29xiOtNEBySR4O1g==;</b>
<b>}</b>
<b>zone bob.com. {</b>
<b> primary 192.168.1.251;</b>
<b> key bobddns;</b>
<b>zone 1.168.192.in-addr.arpa. {</b>
<a href="http://yuanbin.blog.51cto.com/attachment/200811/7/363003_12260361173WVv.gif"></a>
<b>注意:域名後面的“.”千萬不能少了,還有在每個“}”後面都沒有“;”,這兩點和named是不一樣的,請注意。</b>
④ 重新開機DHCP和DNS服務
<b>service dhcpd restart</b>
<b>service named restart</b>
<a href="http://yuanbin.blog.51cto.com/attachment/200811/7/363003_1226036118FtYA.gif"></a>
⑤ 測試DDNS
使用<b>hostname</b>指令檢視主機名。
<a href="http://yuanbin.blog.51cto.com/attachment/200811/7/363003_1226036119SjBH.gif"></a>
使用<b>ipconfig/release</b>和<b>ipconfig/renew</b>指令重新向DHCP伺服器擷取IP。
使用<b>nslookup</b>指令測試。使用<b>ls bob.com</b>指令,發現PC1已經被添加到了bob.com這個域中了。然後使用<b>pc1.bob.com</b>能解析到自己的IP位址了。
<a href="http://yuanbin.blog.51cto.com/attachment/200811/7/363003_1226036119jtSE.gif"></a>
使用hostname指令檢視主機名。
<a href="http://yuanbin.blog.51cto.com/attachment/200811/7/363003_1226036120SZDt.gif"></a>
在Linux PC上的/etc目錄下建立一個DHCP用戶端檔案,檔案名為dhclient.conf。
<b>vi /etc/dhclient.conf</b>
加入:
<b>send fqdn.fqdn "Linux";</b>
<b>send fqdn.encoded on;</b>
<b>send fqdn.server-update off;</b>
<a href="http://yuanbin.blog.51cto.com/attachment/200811/7/363003_1226036121WnoX.gif"></a>
使用<b>dhclient</b>指令立即啟動DHCP用戶端。
使用<b>nslookup</b>指令測試。使用linux.bob.com能解析到自己的IP位址了,使用pc1.bob.com也能解析到Windows PC的IP位址了。
<a href="http://yuanbin.blog.51cto.com/attachment/200811/7/363003_1226036122tRmK.gif"></a>
DDNS伺服器測試:
在重新開機完DHCP和DNS服務後,如果正常,會在/var/named/目錄下生成兩個<b>.jnl</b>二進制格式區域檔案。這兩個檔案是目前正在工作的區域檔案的運作時檔案,所有動态更新的記錄首先會反應到這兩個檔案中,然後經過大約15分鐘的時間才會将更新内容添加到區域資料檔案中。在本文的例子中,區域資料檔案就是“bob.com.dns”和“bob.com.rev”。
<a href="http://yuanbin.blog.51cto.com/attachment/200811/7/363003_1226036125V1zg.gif"></a>
檢視更新後的區域資料檔案,系統會将手寫的區域資料檔案格式更改成它自己的格式。
<a href="http://yuanbin.blog.51cto.com/attachment/200811/7/363003_1226036126Kth2.gif"></a>
說明:以上區域檔案的書寫格式與更新前相比變化較大,說明該檔案已經被更新過了。Windows PC和Linux PC的主機記錄已經在區域資料檔案中自動添加進來了。這裡還要說明的是,在動态更新的用戶端PC1和Linux的A紀錄下多了一條同名的TXT類型的紀錄。TXT類型紀錄是BIND-DNS和DHCP專門用來實作DDNS的輔助性資源紀錄,它的值是哈希标示符字元串,該字元串的值還可以在DHCP租約檔案<b>/var/lib/dhcp/dhcpd.leases</b>中找到。
<a href="http://yuanbin.blog.51cto.com/attachment/200811/7/363003_1226036131hItw.gif"></a>
<a href="http://yuanbin.blog.51cto.com/attachment/200811/7/363003_12260361344Kdk.gif"></a>
後記: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/
祝願大家能夠做成功!
本文轉自yuanbin0710 51CTO部落格,原文連結:http://blog.51cto.com/yuanbin/110825,如需轉載請自行聯系原作者