构建企业级DNS系统(六)DNS动态更新

什么是DNS动态更新

RFC 2136描述了这样一种机制:它允许通过授权的更新者updater对权威DNS服务器的区数据动态的增加、删除资源记录。它给DNS系统日常运维带来了一种更加方便的变更区数据手段,管理员不再通过手工修改配置文件的方式变更数据。同时,它也提供了DHCP服务器分配IP地址后可通过DNS动态更新的机制自动在DNS权威区中添加IP与域名的对应记录(DDNS)的手段。

DNS动态更新与BIND软件的关系

BIND8和BIND9都支持RFC 2136所描述的DNS动态更新功能,但不是BIND软件独有,Windows Server作为DNS服务器时也是支持这个机制的。

如何使用DNS动态更新

  1. 一些程序内部已经具备此功能的函数调用,例如dhcpd这个软件它会通过ns_update()创建更新消息。
  2. 命令行工具nsupdate(此程序已经包含在BIND软件包中,安装后在bin目录下)可实现手动通过nsupdate命令创建更新消息,这个在DNS系统运维的时候比较常用。在对DNS系统的二次开发时可调用包装这个工具。

bind9环境nsupdate工具动态更新权威区数据举例

nsupdate入门

nsupdate工具是一个交互式的命令工具,在服务器上执行nsupdate然后Enter进入,先尝试一下如下:

[root@localhost ~]# nsupdate
> server 127.0.0.1
> update add xxx.test.com 300 A 3.3.3.3
> send
update failed: REFUSED
>quit

上面执行结果显然是失败了,但通过这些命令我们可以看到大概使用的思路:通过server制定DNS服务器的IP地址、通过update add命令向test.com区新增一个域名xxx.test.com、通过send命令提交、通过quit命令退出。
当然,这个失败的原因是named.conf文件中没有开启update,需要在对应的区配置部分显示的配置allow-update语句,简单的举例如下:

zone "test.com" {
	type master;
	allow-update { any; };
	file "test.com.zone";
};

重新测试一遍上面失败的nsupdate命令,没有报错。

[root@localhost ~]# nsupdate 
> server 127.0.0.1
> update add xxx.test.com 300 A 3.3.3.3
> send
> quit

bind的相关日志打印如下:
19-Jun-2020 22:09:51.370 update: info: client @0x7f22a400a2b0 127.0.0.1#26718: updating zone 'test.com/IN': adding an RR at 'xxx.test.com' A 3.3.3.3
使用dig命令测试解析正常。

[root@localhost bind]# dig @192.168.3.160 xxx.test.com +short
3.3.3.3

查看test.com.zone文件内容发现没有这个xxx.test.com域名。

[root@localhost run]# cat test.com.zone
$TTL 3h

@	IN SOA dns1.test.com. manager.test.com. (
		1	;Serial
		3h	;Refresh after 3 hours
		1h	;Retry after 1 hour
		1w	;Expire after 1 week
		1h)	;Negative caching TTL of 1 hour
;
@	IN NS dns1.test.com.
@	IN NS dns2.test.com.

;server domain
;
dns1	3600	IN	A	111.10.10.10
dns2	3600	IN	A	111.10.10.20
www	300 	IN	A	101.10.10.10
hello	20  	IN	A	101.10.10.20
a	20  	IN	CNAME	hello
mail	300 	IN	A	101.10.10.30
time		IN 	A	2.2.2.2

而存放zone文件的目录下多了一个test.com.zone.jnl 的文件,文件内容是乱码,无法查看。
综上,nsupdate的入门使用貌似不难,但有一些现象和配置我们还是没有根本了解,下面我们就来详细的说说这些细节。

nsupdate使用细节
  • 关于jnl文件的细节
    动态更新的区变化会保持在jnl文件中,此文件是二进制格式,不能手动编辑。更新的数据会定期的从jnl文件转存到zone文件中,但这个转存不是更新后立即执行,因为如果是立即执行那么一个大的区在频繁更新时候会导致服务器变动很慢。经测试,bind9这个转存的默认时间是15分钟,转存过程中可能还能临时看到jnw和jbk文件,但这些都不需要我们关注。
    在上面的test.com例子中,如果我们希望将目前jnl文件中的数据先转存到zone文件中,可以执行rndc sync test.com命令,此时会立即转存。
    - 转存后zone文件的格式会变
    动态更新成功且jnl配置转存成功后,我们再查看原来的zone文件会发现文件的内容格式变了,貌似给我们大扫除了一遍。真是让人激动,上面test.com的例子中转存后的zone文件内容如下,大家可自己对比看看。
[root@localhost run]# cat test.com.zone
$ORIGIN .
$TTL 10800	; 3 hours
test.com		IN SOA	dns1.test.com. manager.test.com. (
   			3          ; serial
   			10800      ; refresh (3 hours)
   			3600       ; retry (1 hour)
   			604800     ; expire (1 week)
   			3600       ; minimum (1 hour)
   			)
   		NS	dns1.test.com.
   		NS	dns2.test.com.
$TTL 3600	; 1 hour
   		MX	10 mail.test.com.
$ORIGIN test.com.
$TTL 20	; 20 seconds
a			CNAME	hello
$TTL 50	; 50 seconds
b			A	1.1.1.1
$TTL 3600	; 1 hour
dns1			A	111.10.10.10
dns2			A	111.10.10.20
$TTL 20	; 20 seconds
hello			A	101.10.10.20
$TTL 300	; 5 minutes
mail			A	101.10.10.30
$TTL 10800	; 3 hours
time			A	2.2.2.2
$TTL 300	; 5 minutes
www			A	101.10.10.10
xxx			A	3.3.3.3

- nsupdate命令参考
nsupdate命令有很多,它还具备判断类命令,例如先判断这个要添加的域名是不是存在,如果不存在则添加。

命令功能介绍
prereq nxdomain domain name执行更新前,必须满足指定的domain name不存在
prereq yxdomain domain name执行更新前,指定的domain name必须存在
prereq nxrrset domain name type执行更新前,指定的domain name的type类型的记录(RRset)必须不存在
prereq yxrrset domain name type [rdata]执行更新前,指定的domain name的type类型的记录(RRset)必须存在,如果指定了rdata,那么也必须存在。
update add domain name ttl [class] type rdata在区域中增加指定的记录,处理type和rdata之外还必须包含ttl,class类是可选的默认是IN
update delete domain name [type] [rdata]删除指定的域名,例如update delete test.com MX
实现基于TSIG的DNS动态更新

上面test.com区数据动态更新举例时配置文件有allow-update { any; };这个配置,这any肯定是不安全的。虽然allow-update这里也可以添加基于IP的ACL来实现动态更新源地址的控制,但还是不够安全,因为这种基于UDP的更新很容易伪装源IP造成系统风险。所以BIND建议通过事物签名(TSIG)来加密和认证所进行的更新。举例说明如下。
首先,bind安装完毕后,在sbin目录下有tsig-keygen命令,通过这个命令对一个密钥名称进行计算得到共享密钥,如下:

[root@localhost sbin]# ./tsig-keygen --help
tsig-keygen: invalid argument --
Usage:
 tsig-keygen [-a alg] [keyname]
  -a alg:        algorithm (default hmac-sha256)
[root@localhost sbin]# ./tsig-keygen -a hmac-md5 mytest > mytest.key
[root@localhost sbin]# cat mytest.key 
key "mytest" {
	algorithm hmac-md5;
	secret "7fDlWke7zAvqD+I6ubgXwA==";
};

将上面生成的密钥信息配置到named.conf文件中

key "mytest" {
	algorithm hmac-md5;
	secret "7fDlWke7zAvqD+I6ubgXwA==";
};
zone "test.com" {
	type master;
	allow-update { key mytest; };
	file "test.com.zone";
};

再使用nsupdate工具举例如下:

[root@localhost etc]# nsupdate -y mytest:7fDlWke7zAvqD+I6ubgXwA==
> server 127.0.0.1
> zone test.com
> update add xxx3.test.com 3000 A 6.6.6.6
> send
> quit
[root@localhost etc]# dig @192.168.3.160 xxx3.test.com
; <<>> DiG 9.11.4-P2-RedHat-9.11.4-16.P2.el7_8.6 <<>> @192.168.3.160 xxx3.test.com
; (1 server found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 37724
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;xxx3.test.com.			IN	A
;; ANSWER SECTION:
xxx3.test.com.		3000	IN	A	6.6.6.6

;; Query time: 0 msec
;; SERVER: 192.168.3.160#53(192.168.3.160)
;; WHEN: Fri Jun 19 23:13:34 EDT 2020
;; MSG SIZE  rcvd: 58

19-Jun-2020 23:13:16.323 update: info: client @0x7ff39000eef0 127.0.0.1#51058/key mytest: updating zone 'test.com/IN': adding an RR at 'xxx3.test.com' A 6.6.6.6
nsupdate工具实现DNS动态更新本文就介绍到这,实际系统运维过程中面对集群架构的DNS系统还是要涉及一些细节,这个我们后面再针对性的介绍。

  • 4
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 7
    评论
企业内部的DNS办事器构建 一、关于DNS 什么是DNS      DNS( Domain Name System)是"域名系统"的英文缩写,是一种组织成域条理结构的盘算机和网络办事命名系统,它用于TCP/IP网络,它主要是用来通过用户亲切而友好的名称取代枯燥而难记的IP地点以定位相应的盘算机和相应办事。因此,要想让亲切而友好的名称能被网络所认识,则需要在名称和IP地点之间有一位"翻译官",它能将相关的域名翻译成网络能担当的相应IP地点。DNS就是这样的一位"翻译官",它的事情原理可用图1来表现。      DNS的原理   DNS办事器在互联网的作用是:把域名转换成为网络可以识别的IP地点。首先,要知道互联网的网站都是一台一台办事器的形式存在的,但是我们怎么去到要访问的网站办事器呢?这就需要给每台办事器分派IP地点,互联网上的网站无穷多,我们不可能记着每个网站的IP地点,这就产生了方便影象的域名治理系统DNS,他可以把我们输入的好记的域名转换为要访问的办事器的IP地点.   也就是为了方便我们浏览互联网上的网站而不消去刻意记着每个主机的IP地点,DNS办事器就应运而生,提供将域名解析为IP的办事,从而使我们上网的时候能够用简短而好记的域名来访问互联网上的静态IP的主机。 企业内部的DNS服务器构建(1)全文共7页,当前为第1页。 如何使用DNS办事器的域名解析办事? 企业内部的DNS服务器构建(1)全文共7页,当前为第1页。   拥有自己的域名后,您需要DNS办事器来解析您的域名。解析的作用就是见告访问者,网站是处于在哪个IP的主机上。   DNS办事器是由域名注册公司来提供的,如果在某公司注册域名,就由该公司来提供,不需要做任何设置,只需保持默认选项即可。   可以随时变动域名的设置,好比可以让它指到差别的IP。当变动了域名的设置时,全世界的DNS办事器也将会一一被通知到。这样,全世界的互联网用户也将一一被引导到新的主机。 二、网络具体配置步调 步调1 启动"添加/删除步伐",之后出现"添加/删除步伐"对话框 步调2 单击"添加/删除 Windows 组件",出现 "windows 组件向导"单击下一步"出现 "Windows组件" 对话框从列表中选择"网络办事"如图 企业内部的DNS服务器构建(1)全文共7页,当前为第2页。步调3 单击"详细内容",从列表中选取"域名办事系统 (DNS)", 如图, 单击"确定" 步调4 单击"下一步"输入到 Windows2000 Server 的安装源文件的路径,单击"确定"开始安装 DNS 办事 步调5 单击"完成",当回到"添加/删除步伐"对话框后,单击"封闭"按钮 步调6 封闭"添加/删除步伐"窗口。   安装完毕后在治理东西中多了一个 "DNS" 控制台(安装结束后不消重新启动盘算机)   在安装 Active Directory 的同时也安装和配置了 DNS 办事器,所以就不消在重复上述的安装历程了,具内容详见 Active Directory 的安装于配置。 企业内部的DNS服务器构建(1)全文共7页,当前为第2页。 三、治理DNS办事器 安装好DNS办事器后,你可以点击治理东西下的DNS大概运行dnsmgmt.msc命令来打开DNS治理控制台,如下图所示: 企业内部的DNS服务器构建(1)全文共7页,当前为第3页。 企业内部的DNS服务器构建(1)全文共7页,当前为第3页。 在进行任何摆设之前,都发起你预先配置DNS办事器的属性,右击DNS办事器名选择属性; 如下图所示,普通的DNS办事器总共具有接口、转发器、高级、根提示、调试日志、事件日志、监督七个标签; 企业内部的DNS服务器构建(1)全文共7页,当前为第4页。如果DNS办事器是在域控制器安装,则具有第八个标签:宁静,如下图所示,它用于控制用户对DNS办事器的访问。 企业内部的DNS服务器构建(1)全文共7页,当前为第4页。 四、调试历程中出现的问题及相应解决措施 出现的问题 尽管DNS允许在不改变友好名称的情况下变动IP地点,但是DNS办事器总难免有难以获取更新的时候,或仅仅是更新晚了。另外,可能你当地系统使用的是一个被缓存的解析。当这样的情况产生时,你需要确认你的DNS办事器可以正确的进行相关解析,而这正是我们用nslookup要做的事情。       企业内部的DNS服务器构建(1)全文共7页,当前为第5页。 调试配置      DNS办事器配置完以后,如何检测它是否配置正确呢?可以用一个称作"Nslookup"的诊断步伐来进行检测。下面我们就用这个命令对"guanli.sjsgz.net"DNS办事器进行测试。      (1)在命令提示符下输入:Nslookup,启动该步伐。此时系统会响应它当前翻译名字
企业内部的DNS服务器构建 一、关于DNS 什么是DNS      DNS( Domain Name System)是"域名系统"的英文缩写,是一种组织成域层次结构的计算机和网络服务命名系统,它用于TCP/IP网络,它主要是用来通过用户亲切而友好的名称代替枯燥而难记的IP地址以定位相应的计算机和相应服务。因此,要想让亲切而友好的名称能被网络所认识,则需要在名称和IP地址之间有一位"翻译官",它能将相关的域名翻译成网络能接受的相应IP地址。DNS就是这样的一位"翻译官",它的工作原理可用图1来表示。      DNS的原理   DNS服务器在互联网的作用是:把域名转换成为网络可以识别的IP地址。首先,要知道互联网的网站都是一台一台服务器的形式存在的,但是我们怎么去到要访问的网站服务器呢?这就需要给每台服务器分配IP地址,互联网上的网站无穷多,我们不可能记住每个网站的IP地址,这就产生了方便记忆的域名管理系统DNS,他可以把我们输入的好记的域名转换为要访问的服务器的IP地址.   也就是为了方便我们浏览互联网上的网站而不用去刻意记住每个主机的IP地址,DNS服务器就应运而生,提供将域名解析为IP的服务,从而使我们上网的时候能够用简短而好记的域名来访问互联网上的静态IP的主机。 企业内部的DNS服务器构建全文共7页,当前为第1页。 如何使用DNS服务器的域名解析服务? 企业内部的DNS服务器构建全文共7页,当前为第1页。   拥有自己的域名后,您需要DNS服务器来解析您的域名。解析的作用就是告知访问者,网站是处于在哪个IP的主机上。   DNS服务器是由域名注册公司来提供的,如果在某公司注册域名,就由该公司来提供,不需要做任何设置,只需保持默认选项即可。   可以随时更改域名的设置,比如可以让它指到不同的IP。当更改了域名的设置时,全世界的DNS服务器也将会一一被通知到。这样,全世界的互联网用户也将一一被引导到新的主机。 二、网络具体配置步骤 步骤1 启动"添加/删除程序",之后出现"添加/删除程序"对话框 步骤2 单击"添加/删除 Windows 组件",出现 "windows 组件向导"单击下一步"出现 "Windows组件" 对话框从列表中选择"网络服务"如图 企业内部的DNS服务器构建全文共7页,当前为第2页。步骤3 单击"详细内容",从列表中选取"域名服务系统 (DNS)", 如图, 单击"确定" 步骤4 单击"下一步"输入到 Windows2000 Server 的安装源文件的路径,单击"确定"开始安装 DNS 服务 步骤5 单击"完成",当回到"添加/删除程序"对话框后,单击"关闭"按钮 步骤6 关闭"添加/删除程序"窗口。   安装完毕后在管理工具中多 一个 "DNS" 控制台(安装结束后不用重新启动计算机)   在安装 Active Directory 的同时也安装和配置了 DNS 服务器,所以就不用在重复上述的安装过程了,具内容详见 Active Directory 的安装于配置。 企业内部的DNS服务器构建全文共7页,当前为第2页。 三、管理DNS服务器 安装好DNS服务器后,你可以点击管理工具下的DNS或者运行dnsmgmt.msc命令来打开DNS管理控制台,如下图所示: 企业内部的DNS服务器构建全文共7页,当前为第3页。 企业内部的DNS服务器构建全文共7页,当前为第3页。 在进行任何部署之前,都建议你预先配置DNS服务器的属性,右击DNS服务器名选择属性; 如下图所示,普通的DNS服务器总共具有接口、转发器、高级、根提示、调试日志、事件日志、监视七个标签; 企业内部的DNS服务器构建全文共7页,当前为第4页。如果DNS服务器是在域控制器安装,则具有第八个标签:安全,如下图所示,它用于控制用户对DNS服务器的访问。 企业内部的DNS服务器构建全文共7页,当前为第4页。 四、调试过程中出现的问题及相应解决办法 出现的问题 尽管DNS允许在不改变友好名称的情况下更改IP地址,但是DNS服务器总难免有难以获取更新的时候,或仅仅是更新晚了。另外,可能你本地系统使用的是一个被缓存的解析。当这样的情况发生时,你需要确认你的DNS服务器可以正确的进行相关解析,而这正是我们用nslookup要做的事情。       企业内部的DNS服务器构建全文共7页,当前为第5页。 调试配置      DNS服务器配置完以后,如何检测它是否配置正确呢?可以用一个称作"Nslookup"的诊断程序来进行检测。下面我们就用这个命令对"guanli.sjsgz.net"DNS服务器进行测试。      (1)在命令提示符下输入:Nslookup,启动该程序。此时系统会响应它当前翻译名字所使用的DNS服务器的IP地址。   (2)然后在命令提

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值