我们在办室的时候,有时会去访问别的机器,如果是在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好象会有一点问题。哪位有兴趣,共同研究一下。 em02.gif

更新一下:
代码:

#===/etc/dhclient.conf for linux =======
send host-name "your host name";
request subnet-mask, broadcast-address, routers,
        domain-name, domain-name-servers;
require subnet-mask, domain-name-servers;
timeout 60;
retry 60;
reboot 10;
select-timeout 5;
initial-interval 2;
script "/sbin/dhclient-script";



posted on 2005-08-02 21:12  葡萄  阅读(618)  评论(0)    收藏  举报