bind + dhcpd 实现 动态 ddns

目标:

当客户获取 DHCP IP 地址后, 把当前使用中的主机名向 BIND 服务器自动注册, 实现自动域名解析功能

 

原理:

bind 用于域名解析,  为避免所有用户都能够用于更新 dns 服务器, 利用密钥进行数据更新验证

dhcpd 在分配 IP 地址同时, 把 DNS 更新密钥同时发送给客户, 客户自动向 BIND 服务器进行注册

 

dns 服务器端软件安装

[root@station149 /]# yum install -y bind*

Installed:
  bind.x86_64 32:9.8.2-0.17.rc1.el6_4.6                         bind-chroot.x86_64 32:9.8.2-0.17.rc1.el6_4.6
  bind-devel.x86_64 32:9.8.2-0.17.rc1.el6_4.6                   bind-dyndb-ldap.x86_64 0:2.3-5.el6
  bind-sdb.x86_64 32:9.8.2-0.17.rc1.el6_4.6

Complete!

创建密钥

[root@station149 /]# rndc-confgen -r /dev/urandom -a
wrote key file "/etc/rndc.key"
[root@station149 /]# chown named:named /etc/rndc.key
[root@station149 /]# chown 644 /etc/rndc.key

 

当前密钥文件内容

key "rndckey" {
        algorithm hmac-md5;
        secret "qUGWW02EZVKUNMK/iorkgg==";
};

把密钥内容复制至 bind, dhcp 配置或可选使用 include 进行文件导入方法载入密钥

bind 配置文件定义

vi /var/named/chroot/etc/named.conf

options {
        directory "/var/named";
        forwarders { 8.8.8.8; };
};

key "rndckey" {
        algorithm hmac-md5;
        secret "qUGWW02EZVKUNMK/iorkgg==";
};
#下面 定义只能够通过本机 DHCP 进行 DNS 更新
controls {
        inet 127.0.0.1 allow { 127.0.0.1; } keys { rndckey; };
};

zone "cloud.com." IN {
        type master;
        file "cloud.com.master.zone";
        allow-update { key rndckey; };
};

zone "48.168.192.in-addr.arpa." IN {
        type master;
        file "48.168.192.in-addr.arpa.master.zone";
        allow-update { key rndckey; };
};

正向 zone 配置文件
vi /var/named/chroot/var/named/cloud.com.master.zone

$TTL 86400
@ IN SOA station149.cloud.com. root.station149.cloud.com. (
        2014011510
        1400
        2300
        25000
        86400 )

@       IN              NS      station149.cloud.com.

station149              IN      A       192.168.48.149

 

反向 zone 配置文件

vi /var/named/chroot/var/named/48.168.192.in-addr.arpa.master.zone
$TTL 86400
@ IN SOA station149.cloud.com. root.station149.cloud.com. (
        2014010810
        1400
        2300
        25000
        86400 )

@       IN              NS      station149.cloud.com.

149             IN      PTR     station149.cloud.com.

 

注: 当前只配置正向, 反向配置文件, 其他主机利用 DDNS 方法自动进行注册

 

启动 bind 并验证

[root@station149 /]# chown named:named /var/named/chroot/var/named/*.zone
[root@station149 /]# service named restart
停止 named:                                               [确定]
启动 named:                                               [确定]

 dns 客户端配置

[root@station149 ~]# vi /etc/resolv.conf
search clound.com
nameserver 192.168.48.149

测试

[root@station149 ~]# host station149.cloud.com
station149.cloud.com has address 192.168.48.149
[root@station149 ~]# host 192.168.48.149
149.48.168.192.in-addr.arpa domain name pointer station149.cloud.com.
[root@station149 ~]# host www.google.com.hk
www.google.com.hk is an alias for www-wide.l.google.com.
www-wide.l.google.com has address 74.125.128.199
www-wide.l.google.com has IPv6 address 2404:6800:4005:c00::c7

DHCP 服务器配置

软件安装

[root@station149 ~]# yum install -y dhcp

Installed:
  dhcp.x86_64 12:4.1.1-38.P1.el6.centos

Complete!

vi /etc/dhcp/dhcpd.conf

key "rndckey" {
        algorithm hmac-md5;
        secret "qUGWW02EZVKUNMK/iorkgg==";
};

ddns-domainname "cloud.com.";
ddns-update-style interim;
ddns-rev-domainname "in-addr.arpa.";
ddns-updates on;

authoritative;
#master server for this domain

# Allow only the DHCP server to update DNS
ignore client-updates;
allow unknown-clients;

host pdc {
   hardware ethernet 00:0B:2B:17:2F:00;
   fixed-address 192.168.48.2;
}

zone  48.168.192.in-addr.arpa {
        primary 127.0.0.1;
        key rndckey;
}

zone cloud.com {
        primary 127.0.0.1;
        key rndckey;
}

subnet 192.168.48.0 netmask 255.255.255.0 {
        range                        192.168.48.20 192.168.48.126;
        default-lease-time              86400;
        max-lease-time                172800;
        option subnet-mask             255.255.255.0;
        option broadcast-address        192.168.48.255;
        option routers                 192.168.48.1;
        option domain-name            "cloud.com.";
        option domain-name-servers     192.168.48.149;
}

启动 dhcpd

service dhcpd start

 

需要注意的问题:

观察 dhcp 服务器

[root@station149 etc]# cat /var/lib/dhcpd/dhcpd.leases

# The format of this file is documented in the dhcpd.leases(5) manual page.
# This lease file was written by isc-dhcp-4.1.1-P1

server-duid "\000\001\000\001\032i\023^\000PV\201\350\247";

lease 192.168.48.60 {
  starts 3 2014/01/15 09:38:11;
  ends 4 2014/01/16 09:38:11;
  cltt 3 2014/01/15 09:38:11;
  binding state active;
  next binding state free;
  hardware ethernet 00:50:56:81:72:9d;
  client-hostname "terry";
}

假如无法发现  client-hostname "terry";  信息
则需要配置客户端, 添加 DHCP_HOSTNAME 配置

 

参考客户端配置信息

[root@terry sysconfig]# cat /etc/sysconfig/network
NETWORKING=yes
HOSTNAME=terry
DHCP_HOSTNAME=terry

 

参考更新 bind 服务器的日志

Jan 15 17:40:42 station149 named-sdb[5646]: client 127.0.0.1#46556: signer "rndckey" approved
Jan 15 17:40:42 station149 named-sdb[5646]: client 127.0.0.1#46556: updating zone 'cloud.com/IN': adding an RR at 'terry.cloud.com' A
Jan 15 17:40:42 station149 named-sdb[5646]: client 127.0.0.1#46556: updating zone 'cloud.com/IN': adding an RR at 'terry.cloud.com' TXT
Jan 15 17:40:42 station149 named-sdb[5646]: cloud.com.master.zone.jnl: create: permission denied
Jan 15 17:40:42 station149 named-sdb[5646]: client 127.0.0.1#46556: updating zone 'cloud.com/IN': error: journal open failed: unexpected error
Jan 15 17:40:42 station149 dhcpd: Unable to add forward map from terry.cloud.com. to 192.168.48.60: timed out
Jan 15 17:40:42 station149 dhcpd: DHCPREQUEST for 192.168.48.60 from 00:50:56:81:72:9d (terry) via eth0
Jan 15 17:40:42 station149 dhcpd: DHCPACK on 192.168.48.60 to 00:50:56:81:72:9d (terry) via eth0

 

注意 /var/name/chroot/var/named 目录是否可以被用户  named 读写

 

假设一切正常,  /var/named/chroot/var/named 目录下将会自动产生  jnl 后缀文件

[root@station149 named]# cd /var/named/chroot/var/named/
[root@station149 named]# ls *.jnl
48.168.192.in-addr.arpa.master.zone.jnl  cloud.com.master.zone.jnl

 

最后, 电脑会自动在 DNS 中注册 terry.cloud.com 及对应 IP 地址, 验证:

[root@station149 named]# host terry.cloud.com
terry.cloud.com has address 192.168.48.60
[root@station149 named]# host 192.168.48.60
60.48.168.192.in-addr.arpa domain name pointer terry.cloud.com.

 

 

 

 

时间: 2024-12-03 05:10:19

bind + dhcpd 实现 动态 ddns的相关文章

《DNS与BIND(第5版)》——7.5 日志记录

7.5 日志记录 BIND支持扩展的日志记录(logging),包括将信息写入调试文件和发送至syslog.不过,使用扩展的日志记录是有代价的:在能够有效地控制该子系统前,必须要学习很多知识.如果没有时间来实验日志记录,那么就先使用默认值,等以后有空再来研究这个主题.大部分人并不需要更改日志记录的默认行为. 日志记录有两个主要的概念:通道(channels)和类别(categories).通道用来指定日志数据的流向:syslog.文件.named的标准错误输出或是bit bucket.类别用来指

深入理解Linux操作系统守护进程的意义

Linux服务器在启动时需要启动很多系统服务,它们向本地和网络用户提供了Linux的系统功能接口,直接面向应用程序和用户.提供这些服务的程序是由运行在后台的守护进程(daemons)来执行的.守护进程是生存期长的一种进程.它们独立于控制终端并且周期性的执行某种任务或等待处理某些发生的事件.他们常常在系统引导装入时启动,在系统关闭时终止.linux系统有很多守护进程,大多数服务器都是用守护进程实现的.同时,守护进程完成许多系统任务,比如,作业规划进程crond.打印进程lqd等.有些书籍和资料也把

Linux shell用法和技巧(转)

使用Linux shell是我每天的基本工作,但我经常会忘记一些有用的shell命令和l技巧.当然,命令我能记住,但我不敢说能记得如何用它执行某个特定任务.于是,我开始在一个文本文件里记录这些用法,并放在我的Dropbox里,现在,向大家分享这个文件.这个文件我会不断的更新.需要注意一点的是,有些用法需要在你的Linux系统里安装额外的软件. UPDATE: November 25, 2013 检查远程端口是否对bash开放: echo >/dev/tcp/8.8.8.8/53 &&

jQuery事件绑定方法学习总结(推荐)_jquery

对于jQuery中的事件绑定方法,主要有on().bind().delegate().live()等这几个方法.之前都是之前拿过来用,也知道有这么几个方法,但是不清楚这几个事件绑定方法之间的区别.平时用的最多的是on方法,今天打算整理一下. bind方法 <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <meta http-equiv="X-UA-Compatibl

Linux Shell的一些使用小技巧收集_linux shell

检查远程端口是否对bash开放: 复制代码 代码如下: echo >/dev/tcp/8.8.8.8/53 && echo "open" 让进程转入后台: 复制代码 代码如下: Ctrl + z 将进程转到前台: 复制代码 代码如下: fg 产生随机的十六进制数,其中n是字符数: 复制代码 代码如下: openssl rand -hex n 在当前shell里执行一个文件里的命令: 复制代码 代码如下: source /home/user/file.name 截取

Linux中shell命令的用法和技巧

使用Linux shell是我每天的基本工作,但我经常会忘记一些有用的shell命令和l技巧.当然,命令我能记住,但我不敢说能记得如何用它执行某个特定任务.于是,我开始在一个文本文件里记录这些用法,并放在我的Dropbox里,现在,向大家分享这个文件.这个文件我会不断的更新.需要注意一点的是,有些用法需要在你的Linux系统里安装额外的软件. UPDATE: November 25, 2013 检查远程端口是否对bash开放: echo >/dev/tcp/8.8.8.8/53 &&

linux系统守护进程详解

&http://www.aliyun.com/zixun/aggregation/37954.html">nbsp;Linux服务器在启动时需要启动很多系统服务,它们向本地和网络用户提供了Linux的系统功能接口,直接面向应用程序和用户.提供这些服务的程序是由运行在后台的守护进程(daemons)来执行的.守护进程是生存期长的一种进程.它们独立于控制终端并且周期性的执行某种任务或等待处理某些发生的事件.他们常常在系统引导装入时启动,在系统关闭时终止.linux系统有很多守护进程,大

(转)利用个人电脑搭建网站WEB服务器域名访问

本文转载:http://www.cnblogs.com/fangpage/archive/2011/11/22/prowebserver.html 今天看到有人问我用个人电脑能否可以做网站服务器使用,并让internet通过域名访问吗?答案是肯定可以的,不过我是2M的ADSL+路由,访问的速度着实不是很理想,如果只想尝尝鲜,体验下,或者你的网站又不想备案,你家用的光纤,有足够的带宽,不妨按照我说的步骤玩玩看. 下面的这些工作是用我家的ADSL+路由器+花生壳+方配网站服务器的环境为例来搭建一台网

家庭私有云 DNS-320L评测

第1页 家庭私有云发展趋势 解决内外网数据共享一直是企业网络管理人员的难题,虽然通过为电脑设置共享磁盘可作为内网间数据的共享平台,但外网员工却无法进行共享访问.而传统的架设共享服务器也极易在安全上造成隐患,运营和管理成本也较高,对于类似设计工作室.SOHO级和中小企业来说都得不偿失. 第2页 D-Link DNS-320L家用级NAS存储 随着最近几年云技术的发展普及,D-Link友讯开始部署自己的云产品线,相继推出具有云功能的系列产品.除了我们最常见的云路由系列产品外,云监控以及云存储产品也是