文中有不對或者有不清楚的地方,請你們告訴我,謝謝!
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試驗拓撲
2. 安裝DNS和DHCP軟件包
掛載系統盤,進入RPM包目錄,使用rpm –ivh來安裝bind包和dhcp包。其中caching-nameserver包是用來安裝name.ca、name.local等區域文件的,若是不安裝此包,那麼就要手寫或者從別的地方down這些文件了。
3. 配置DNS服務
① 編輯DNS服務主配置文件named.conf,默認在/etc/目錄下。
vi /etc/named.conf
options {
directory "/var/named";
};
zone "." IN {
type hint;
file "named.ca";
};
zone "localhost" IN {
type master;
file "localhost.zone";
allow-update { none; };
};
zone "0.0.127.in-addr.arpa" IN {
type master;
file "named.local";
allow-update { none; };
};
zone "bob.com" IN {
type master;
file "bob.com.dns";
allow-update { none; };
};
zone "1.168.192.in-addr.arpa" IN {
type master;
file "bob.com.rev";
allow-update { none; };
};
include "/etc/rndc.key";
② 創建區域數據文件
由於安裝了caching-nameserver這個包,因此像named.ca、named.local和localhost.zone這三個區域數據文件都有了。如今來建立bob.com域的正向和反向區域數據文件。
vi /var/named/bob.com.dns
$TTL 86400
$ORIGIN bob.com.
@ IN SOA bob.com. root.bob.com. (
20081103 ; serial
120 ; refresh
14400 ; retry
3600000 ; expiry
86400 ) ; minimum
IN NS bob.com.
dns IN A 192.168.1.251
www IN A 192.168.1.250
vi /var/named/bob.com.rev
$TTL 86400
@ IN SOA bob.com. root.bob.com. (
20081103 ; Serial
120 ; Refresh
14400 ; Retry
3600000 ; Expire
86400 ) ; Minimum
IN NS bob.com.
251 IN PTR dns.bob.com.
chown named.named /var/named/bob.com.*
③ 測試DNS服務
使用service named start命令啓動DNS服務。
在防火牆中將UDP和TCP的53端口開放。
而後使用service iptables restart命令重啓防火牆。
Windows PC測試:
在Windows PC上將DNS指向192.168.1.251。
在Windows PC上使用nslookup命令來解析DNS服務器中的域名。
Linux PC測試:
在Linux PC上將DNS指向192.168.1.251。
在Linux PC上使用host命令和nslookup命令來解析DNS服務器中的域名。
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服務。
Windows PC測試:
在Windows PC上設置動態獲取IP和DNS。
在Windows PC上使用nslookup命令來解析DNS服務器中的域名。
Linux PC測試:
在Linux PC上使用動態獲取IP和DNS。
使用service network restart命令重啓網卡。
使用ifconfig命令查看Linux PC獲取到的IP地址。
使用cat /etc/resolv.conf查看Linux PC獲取到的DNS地址。
在Linux PC上使用host命令和nslookup命令來解析DNS服務器中的域名。
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。
密鑰生成後,會在當前目錄下自動生成兩個密鑰文件Kbobddns.+157+xxx.key和Kbobddns.+157+xxx.private。
查看兩個密鑰文件的內容:
cat Kbobddns.+157+50923.key
cat Kbobddns.+157+50923.private
兩個密鑰文件中的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」區域。
③ 添加密鑰信息到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;
}
注意:域名後面的「.」千萬不能少了,還有在每一個「}」後面都沒有「;」,這兩點和named是不同的,請注意。
④ 重啓DHCP和DNS服務
service dhcpd restart
service named restart
⑤ 測試DDNS
Windows PC測試:
使用hostname命令查看主機名。
使用ipconfig/release和ipconfig/renew命令從新向DHCP服務器獲取IP。
使用nslookup命令測試。使用ls bob.com命令,發現PC1已經被添加到了bob.com這個域中了。而後使用pc1.bob.com能解析到本身的IP地址了。
Linux PC測試:
使用hostname命令查看主機名。
在Linux PC上的/etc目錄下新建一個DHCP客戶端文件,文件名爲dhclient.conf。
vi /etc/dhclient.conf
加入:
send fqdn.fqdn "Linux";
send fqdn.encoded on;
send fqdn.server-update off;
使用dhclient命令當即啓動DHCP客戶端。
使用nslookup命令測試。使用linux.bob.com能解析到本身的IP地址了,使用pc1.bob.com也能解析到Windows PC的IP地址了。
DDNS服務器測試:
在重啓完DHCP和DNS服務後,若是正常,會在/var/named/目錄下生成兩個.jnl二進制格式區域文件。這兩個文件是當前正在工做的區域文件的運行時文件,全部動態更新的記錄首先會反應到這兩個文件中,而後通過大約15分鐘的時間纔會將更新內容添加到區域數據文件中。在本文的例子中,區域數據文件就是「bob.com.dns」和「bob.com.rev」。
查看更新後的區域數據文件,系統會將手寫的區域數據文件格式更改爲它本身的格式。
說明:以上區域文件的書寫格式與更新前相比變化較大,說明該文件已經被更新過了。Windows PC和Linux PC的主機記錄已經在區域數據文件中自動添加進來了。這裏還要說明的是,在動態更新的客戶端PC1和Linux的A紀錄下多了一條同名的TXT類型的紀錄。TXT類型紀錄是BIND-DNS和DHCP專門用來實現DDNS的輔助性資源紀錄,它的值是哈希標示符字符串,該字符串的值還能夠在DHCP租約文件/var/lib/dhcp/dhcpd.leases中找到。
後記: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/
祝願你們可以作成功!