BIND 高階特性(二)-- 動態更新(轉)

post0發表於2007-08-11
BIND 高階特性(二)-- 動態更新(轉)[@more@]

在很多大的網路中為了簡化維護量,都使用了DHCP來動態分配IP地址。這樣就要求DNS也能夠動態的新增和刪除記錄。BIND 8和9就支援DNS動態更新機制。

主DNS和輔DNS在處理收到的動態更新記錄是有區別的,輔DNS在收到更新訊息的時候,由於它不是該區的主DNS,它就會將這個更新訊息轉發給它的主DNS,這稱作“更新轉發”。而主DNS當然就簡單地做更新而已。

如何來建立動態更新訊息呢?第一種是用軟體程式設計方式,採用ns_update()解析器例程來建立。第二種則是用命令列程式nsupdate命令手工建立。這裡主要講一下第二種,命令格式如下:

prereq yxrrset domain name type

prereq nxrrset domain name type

prereq yxdomain domain name

prereq nxdomain domain name

update delete domain name [type] [rdata]

update add domain name ttl [class] type rdata

看起來似乎挺複雜,其實很容易。prereq 表示預先必須符合的條件,yxrrset表示存在記錄,nxrrset表示不存在記錄,而yxdomain則表示存在域名了。例如:

# nsupdate

> prereq nxdomain

> update add 600 A 210.52.83.228

>

這個例子告訴伺服器只有在域名不存在時才對域名 新增一個地址。注意最後一個空行表示nsupdate傳送這個更新訊息。

# nsupdate

> prereq yxrrset xmgd.com. MX

> update delete xmgd.com. MX

> update add xmgd.com. 600 MX 10 mail.xmgd.com.

> update add xmgd.com. 600 MX 50 pop.xmgd.com.

>

這個例子告訴伺服器檢查伺服器是否有xmgd.com.的MX記錄,如果有的話就刪除原有的MX記錄,重新新增兩個。

如何來限制動態更新呢?我們可以使用allow-update引數來限制動態更新,如:

zone “xmgd.com” {

type master;

file "zone.xmgd.com";

allow-update { x.x.x.x; }; // IP 地址

};

不過,要注意的是如果我們允許從輔DNS向主DNS進行地址更新,那麼任何人只要向輔DNS傳送更新訊息,經過轉發更新也能進行原本不能進行的動態更新,如何防止這一點呢?可以在輔DNS上使用allow-update-forwarding引數來做轉發更新的限制,如:

zone “xmgd.com” {

type slave;

file "zone.xmgd.com";

allow-update-forwarding { x.x.x.x; }; // IP 地址

};

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/8225414/viewspace-945040/,如需轉載,請註明出處,否則將追究法律責任。

相關文章