DHCP + DNS (bind) == DDNS(轉)

post0發表於2007-08-11
DHCP + DNS (bind) == DDNS(轉)[@more@]

我們在辦室的時候,有時會去訪問別的機器,如果是在windows下,我們我數時候會用機器名去訪問,因為netbios/wins會幫我們來把機器名轉成IP的。下面給大家介紹一種用動態DNS來解析機器名的辦法。不過,不是用的w2k的DDNS,而是用的Linux.

準備:一臺(或兩臺)Linux伺服器,用來做DHCP server和DNS server。也可以把它做成兩臺伺服器。

安裝:伺服器的安裝過程,請參考其它文件,記住把 dhcp 和 bind, bind-utils 裝上就行了。

配置:

一、DHCP的配置:

配置DHCP server 時很簡單,可以參考 /usr/share/doc/dhcp-x.xx/dhcpd.conf.sample來做。也可以先把這個檔案cp 到 /etc/dhcpd.conf,然後根據自己的需要做適當修改。下面貼出我的一個/etc/dhcpd.conf,供大家參考:

程式碼:

ddns-update-style interim;

ignore client-updates;

key DHCP_UPDATER {

algorithm HMAC-MD5;

secret qhB++OR5yWo8BTXwk/m4ng;

};

zone bj.pnx. {

primary 127.0.0.1;

key DHCP_UPDATER;

}

zone 251.168.192.in-addr.arpa. {

primary 127.0.0.1;

key DHCP_UPDATER;

}

subnet 192.168.251.0 netmask 255.255.255.0 {

range 192.168.251.100 192.168.251.200;

# --- default gateway

option routers 192.168.251.254;

option subnet-mask 255.255.255.0;

# option nis-domain "domain.org";

option domain-name "bj.pnx";

option domain-name-servers 192.168.251.63,192.168.251.254;

# option time-offset 28800; # PRC Standard Time

# option ntp-servers 192.168.251.220;

# option netbios-name-servers 192.168.1.1;

# range dynamic-bootp 192.168.0.128 192.168.0.255;

default-lease-time 21600;

max-lease-time 43200;

}

幾個要注意的地方:

1. "ddns-update-style"

這個就是動態DNS的更新方式,有幾個選項,我用的是interim,可以用 man dhcpd.conf找到另外的幾個選項。

2. "ignore client-updates"

這個選項是不允許客戶機更新DNS記錄。當然,也可能允許,但會有一點問題。

3. "key DHCP_UPDATER"

這個是更新DNS的KEY,是必須的。其中algorithm 後的是生成key的演算法,key的生成是用 "dnssec-keygen -a HMAC-MD5 -b 128 -n USER DHCP_UPDATER"。

4. "zone"

要更新的zone,如果是本機就是DNS server,primay 就寫127.0.0.1,要是其它機器是DNS server, 就寫那臺機器的IP。

別的都是一般DNS該有的了,要注意的是一定要有 range 那一行,不然就分不了IP啦。

配好以後,可以啟動一下試試, service dhcpd start,如果沒問題,把dhcpd改成開機就啟動,chkconfig --level 2345 dhcpd on。

二、bind(named)的配置。

關於bind(named)配置的文章有很多了。這裡只把與普通配置不同的地方寫出來。

下面給我的named.conf供大家參考:

程式碼:

// generated by named-bootconf.pl

options {

directory "/var/named";

/*

* If there is a firewall between you and nameservers you want

* to talk to, you might need to uncomment the query-source

* directive below. Previous versions of BIND always asked

* questions using port 53, but BIND 8.1 uses an unprivileged

* port by default.

*/

// forwarders { 192.168.1.254; };

// query-source address * port 53;

};

//

// a caching only nameserver config

//

controls {

inet 127.0.0.1 allow { localhost; } keys { rndckey; };

};

key DHCP_UPDATER {

algorithm HMAC-MD5;

secret qhB++OR5yWo8BTXwk/m4ng;

};

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 "1.168.192.in-addr.arpa" IN {

type master;

file "1.168.192.zone";

allow-update { key DHCP_UPDATER; };

};

zone "test.com" IN {

type master;

file "test.com";

allow-update { key DHCP_UPDATER; };

};

include "/etc/rndc.key";

其中多了的是

程式碼:

key DHCP_UPDATER {

algorithm HMAC-MD5;

secret qhB++OR5yWo8BTXwk/m4ng;

};

這就是更新dns要用的key,必須和dhcpd.conf裡的一樣。

還有就是每個 zone 都可以用 key 來update了。

這樣就行了。然後啟動一下試試吧。

你就可以ping 機器名來找你同事的機器了。

本人只在windows客戶機上試驗過,Linux好象會有一點問題。哪位有興趣,共同研究一下

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

相關文章