免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 10038 | 回复: 18
打印 上一主题 下一主题

[DNS] DHCP + DNS (bind) == DDNS [复制链接]

论坛徽章:
33
荣誉会员
日期:2011-11-23 16:44:17天秤座
日期:2014-08-26 16:18:20天秤座
日期:2014-08-29 10:12:18丑牛
日期:2014-08-29 16:06:45丑牛
日期:2014-09-03 10:28:58射手座
日期:2014-09-03 16:01:17寅虎
日期:2014-09-11 14:24:21天蝎座
日期:2014-09-17 08:33:55IT运维版块每日发帖之星
日期:2016-04-17 06:23:27操作系统版块每日发帖之星
日期:2016-04-18 06:20:00IT运维版块每日发帖之星
日期:2016-04-24 06:20:0015-16赛季CBA联赛之天津
日期:2016-05-06 12:46:59
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2004-06-10 10:07 |只看该作者 |倒序浏览
我们在办室的时候,有时会去访问别的机器,如果是在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,供大家参考:

  1.    ddns-update-style interim;
  2.    ignore client-updates;

  3.    key DHCP_UPDATER {
  4.            algorithm HMAC-MD5;
  5.            secret  qhB++OR5yWo8BTXwk/m4ng;
  6.    };

  7.    zone bj.pnx. {
  8.            primary 127.0.0.1;
  9.            key DHCP_UPDATER;
  10.    }

  11.    zone 251.168.192.in-addr.arpa. {
  12.            primary 127.0.0.1;
  13.            key DHCP_UPDATER;
  14.    }

  15.    subnet 192.168.251.0 netmask 255.255.255.0 {
  16.            range 192.168.251.100 192.168.251.200;
  17.    # --- default gateway
  18.            option routers                  192.168.251.254;
  19.            option subnet-mask              255.255.255.0;

  20.    #       option nis-domain               "domain.org";
  21.            option domain-name              "bj.pnx";
  22.            option domain-name-servers      192.168.251.63,192.168.251.254;

  23.    #       option time-offset              28800;  # PRC Standard Time
  24.    #       option ntp-servers              192.168.251.220;
  25.    #       option netbios-name-servers     192.168.1.1;

  26.    #       range dynamic-bootp 192.168.0.128 192.168.0.255;
  27.            default-lease-time 21600;
  28.            max-lease-time 43200;
  29.   
  30.    }  
复制代码


几个要注意的地方:
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供大家参考:

  1.    // generated by named-bootconf.pl

  2.    options {
  3.            directory "/var/named";
  4.            /*
  5.             * If there is a firewall between you and nameservers you want
  6.             * to talk to, you might need to uncomment the query-source
  7.             * directive below.  Previous versions of BIND always asked
  8.             * questions using port 53, but BIND 8.1 uses an unprivileged
  9.             * port by default.
  10.             */
  11.    //        forwarders { 192.168.1.254; };
  12.            // query-source address * port 53;
  13.    };

  14.    //
  15.    // a caching only nameserver config
  16.    //
  17.    controls {
  18.            inet 127.0.0.1 allow { localhost; } keys { rndckey; };
  19.    };

  20.    key DHCP_UPDATER {
  21.            algorithm HMAC-MD5;
  22.            secret qhB++OR5yWo8BTXwk/m4ng;
  23.    };

  24.    zone "." IN {
  25.            type hint;
  26.            file "named.ca";
  27.    };

  28.    zone "localhost" IN {
  29.            type master;
  30.            file "localhost.zone";
  31.            allow-update { none; };
  32.    };

  33.    zone "0.0.127.in-addr.arpa" IN {
  34.            type master;
  35.            file "named.local";
  36.            allow-update { none; };
  37.    };

  38.    zone "1.168.192.in-addr.arpa" IN {
  39.            type master;
  40.            file "1.168.192.zone";
  41.            allow-update { key DHCP_UPDATER; };
  42.    };

  43.    zone "test.com" IN {
  44.            type master;
  45.            file "test.com";
  46.            allow-update { key DHCP_UPDATER; };
  47.    };
  48.    include "/etc/rndc.key";
复制代码


其中多了的是

  1.    key DHCP_UPDATER {
  2.            algorithm HMAC-MD5;
  3.            secret qhB++OR5yWo8BTXwk/m4ng;
  4.    };
复制代码

这就是更新dns要用的key,必须和dhcpd.conf里的一样。

还有就是每个 zone 都可以用 key 来update了。

这样就行了。然后启动一下试试吧。

你就可以ping 机器名来找你同事的机器了。

本人只在windows客户机上试验过,Linux好象会有一点问题。哪位有兴趣,共同研究一下。

更新一下:

  1. #===/etc/dhclient.conf for linux =======
  2. send host-name "your host name";
  3. request subnet-mask, broadcast-address, routers,
  4.         domain-name, domain-name-servers;
  5. require subnet-mask, domain-name-servers;
  6. timeout 60;
  7. retry 60;
  8. reboot 10;
  9. select-timeout 5;
  10. initial-interval 2;
  11. script "/sbin/dhclient-script";
复制代码

论坛徽章:
1
荣誉版主
日期:2011-11-23 16:44:17
2 [报告]
发表于 2004-06-10 10:47 |只看该作者

DHCP + DNS (bind) == DDNS

不错.

论坛徽章:
33
荣誉会员
日期:2011-11-23 16:44:17天秤座
日期:2014-08-26 16:18:20天秤座
日期:2014-08-29 10:12:18丑牛
日期:2014-08-29 16:06:45丑牛
日期:2014-09-03 10:28:58射手座
日期:2014-09-03 16:01:17寅虎
日期:2014-09-11 14:24:21天蝎座
日期:2014-09-17 08:33:55IT运维版块每日发帖之星
日期:2016-04-17 06:23:27操作系统版块每日发帖之星
日期:2016-04-18 06:20:00IT运维版块每日发帖之星
日期:2016-04-24 06:20:0015-16赛季CBA联赛之天津
日期:2016-05-06 12:46:59
3 [报告]
发表于 2004-06-10 10:55 |只看该作者

DHCP + DNS (bind) == DDNS

谢谢版主!

论坛徽章:
0
4 [报告]
发表于 2004-06-10 14:04 |只看该作者

DHCP + DNS (bind) == DDNS

HI,你好:
请问你这样配置的服务,加入客户端是Linux时,DNS也能自动更行吗?
我没有采用你的这种DDNS的更新方式,可是如果客户端时windows时不会有问题,可是当客户端是linux时,需要在linux客户端编辑一个文件/etc/dhclient.confDNS才能更新,不信你可以看看/var/lib/dhcp/的文件的内容,客户端分配的IP没有Hostname的记录。

论坛徽章:
33
荣誉会员
日期:2011-11-23 16:44:17天秤座
日期:2014-08-26 16:18:20天秤座
日期:2014-08-29 10:12:18丑牛
日期:2014-08-29 16:06:45丑牛
日期:2014-09-03 10:28:58射手座
日期:2014-09-03 16:01:17寅虎
日期:2014-09-11 14:24:21天蝎座
日期:2014-09-17 08:33:55IT运维版块每日发帖之星
日期:2016-04-17 06:23:27操作系统版块每日发帖之星
日期:2016-04-18 06:20:00IT运维版块每日发帖之星
日期:2016-04-24 06:20:0015-16赛季CBA联赛之天津
日期:2016-05-06 12:46:59
5 [报告]
发表于 2004-06-10 15:38 |只看该作者

DHCP + DNS (bind) == DDNS

这个我知道,给Linux分配的IP都 是没有主机名的。

因为我的客户机都是windows的,Linux的我都用静态IP。

麻烦老兄把那个 /etc/dhclient.conf写出来吧。谢谢啦。

论坛徽章:
0
6 [报告]
发表于 2004-06-10 17:35 |只看该作者

DHCP + DNS (bind) == DDNS

我的/etc/dhclient.conf内容如下:
send fqdn.fqdn "hostname";
send fqdn.encoded  on;
send fqdn.server-update off;
但是我在Redhat8&9中还是不行,只有在/etc/rc.d/rc.local中加入下面的命令:
/sbin/dhclient
注意必须在/sbin存在这个可执行的文件。我知道在redhat中是存在的。
谢谢!希望能相互探讨,我会把我的试验步骤写出来使得这个帖子更完善。你认为如何?

论坛徽章:
33
荣誉会员
日期:2011-11-23 16:44:17天秤座
日期:2014-08-26 16:18:20天秤座
日期:2014-08-29 10:12:18丑牛
日期:2014-08-29 16:06:45丑牛
日期:2014-09-03 10:28:58射手座
日期:2014-09-03 16:01:17寅虎
日期:2014-09-11 14:24:21天蝎座
日期:2014-09-17 08:33:55IT运维版块每日发帖之星
日期:2016-04-17 06:23:27操作系统版块每日发帖之星
日期:2016-04-18 06:20:00IT运维版块每日发帖之星
日期:2016-04-24 06:20:0015-16赛季CBA联赛之天津
日期:2016-05-06 12:46:59
7 [报告]
发表于 2004-06-10 17:56 |只看该作者

DHCP + DNS (bind) == DDNS

把 /etc/sysconfig/network-script/ifcfg-eth0 里的 PROTOCOL设成DHCP也不行么?

论坛徽章:
0
8 [报告]
发表于 2004-06-10 18:04 |只看该作者

DHCP + DNS (bind) == DDNS

邮件发送和接收是在那个文件里配置啊

论坛徽章:
0
9 [报告]
发表于 2004-06-11 08:58 |只看该作者

DHCP + DNS (bind) == DDNS

[quote]原帖由 "q1208c"]把 /etc/sysconfig/network-script/ifcfg-eth0 里的 PROTOCOL设成DHCP也不行么?[/quote 发表:

不行的,只能得到IP。不能更新数据库,我猜测是客户发出DHCP请求中没有包含客户的主机名造成的。

论坛徽章:
0
10 [报告]
发表于 2004-06-11 23:17 |只看该作者

DHCP + DNS (bind) == DDNS

send host-name "";
    request subnet-mask, routers, domain-name, domain-name-servers;
}
我是这样写的,但是可以确定DDNS使用正常
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP