這是從大陸 IT 文章中,引用過來的文章,有關於利用 DHCP 來更新 DNS 上的記錄,以達到DDNS,此方法適用於環境中有 Windows 95/98/ME/NT 等作業系統。
由於它們並不認識 DDNS,所以要由 DHCP Server 來做 DNS 的記錄更新。
準備:一台(或兩台)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 主機名來找你同事的機器了。
安裝:伺服器的安裝過程,請参考其它文件,記住把 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 主機名來找你同事的機器了。
沒有留言:
張貼留言