天天看點

DDNS配置執行個體(DHCP+DNS=DDNS)

<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,如需轉載請自行聯系原作者

繼續閱讀