《DNS与BIND(第5版)》——10.4 增量区域传输(IXFR)

本文涉及的产品
公共DNS(含HTTPDNS解析),每月1000万次HTTP解析
全局流量管理 GTM,标准版 1个月
云解析 DNS,旗舰版 1个月
简介:

本节书摘来自异步社区《DNS与BIND(第5版)》一书中的第10章,第10.4节,作者: 【美】Joseph Davies 更多章节内容可以访问云栖社区“异步社区”公众号查看。

10.4 增量区域传输(IXFR)

有了动态更新和NOTIFY功能,就可以随着网络状态的改变而更新区域数据,并且这些变动可以迅速传送至区域的所有权威名称服务器。看起来很完美,不是吗?

其实不尽然。在一个大型区域中,动态更新的频率是非常惊人的。不难想象:存在这样一个大型区域,其中包含上千个客户端,可是某天管理者突然决定使用Active Directory和DHCP。现在每个客户端都要更新自己在区域中的地址记录,并且域控制器(Domain Controllers)也会更新一些记录以便通知客户端它们提供了哪些服务。(第17章会对Active Directory做进一步介绍。)

每当primary名称服务器接收一条更新并增加区域的序号时,便会向它的slave发送NOTIFY通告。每当接收到NOTIFY通告时,这些slave就会向其master服务器查询区域的序号,并且有可能进行区域资料传输。如果该区域很大,则传输会花些时间;在此期间,可能又接收到一条更新。slave可能永远都在进行区域数据传输!另外,即便区域的变动可能非常小(例如,增加一条客户端地址记录),名称服务器却仍要浪费许多时间来传输整个区域的数据。

增量区域传输(Incremental zone transfer,IXFR)可以解决该问题。slave名称服务器可以告诉它们的master服务器,自己目前所持有的区域数据是哪个版本,而只要求发送该版本和当前版本之间有变动的部分即可。这样就可以大幅降低区域数据传输的大小和时间。

增量区域传输请求所使用的查询类型是IXFR而非AXFR(这个查询类型会启动整个区域数据的传输),并且消息的authority字段包含slave当前的区域SOA记录。当master名称服务器接收到增量区域传输请求时,它会查找slave和master所持有的区域数据版本之间发生改变的记录。如果该记录丢失,则master会发送完整的区域数据。否则,它只发送区域数据版本之间有差异的部分。

10.4.1 IXFR的局限性
听起来不错,不是吗?但是IXFR也存在一些局限性。首先,IXFR不能很好地运行在BIND 之前的版本上。不过所有BIND 9名称服务器都支持IXFR并且运行得很好,同时还可以跟BIND 8.2.3进行交互操作。

其次,IXFR适合工作在使用动态更新来修改区域数据的情况下,而不适用于手动更新。动态更新会记录下对区域数据及序号所作的变更,而这正是master名称服务器要向请求IXFR的slave发送的信息。但是重载整个区域数据文件的名称服务器,必须找出该区域和上个区域之间的差别,例如,对这两个版本执行diff。这意味着,如果想最大程度地发挥IXFR的作用,那么只能使用动态更新来修改区域数据,而绝不能手动编辑区域数据文件。

10.4.2 从差异中确定IXFR
BIND 开始支持通过比较区域数据文件和其在内存中的版本差别,来确定IXFR应答。这意味着现在(又)可以手动编辑区域数据文件了。然而必须采取预防措施,确保所编辑的区域数据文件是最新版本,并且在编辑期间拒绝动态更新。(动态更新会改变内存中的区域数据,从而导致区域数据文件不能反映实际状态。)

要开启这项功能,可以在options或zone语句中使用ixfr-from-differences子语句。下面的配置会对所有区域开启此项功能:


40e68d0c4207efa001e1db27ad51f778b39c333a

要强制名称服务器保存新版本的区域数据文件并且暂时停止该区域的动态更新,可以使用rndc的新命令freeze:


c4e5ffb9dd9d12df6e25aef0a19c76e35dc63923

要通知名称服务器重载区域数据文件并且恢复区域的动态更新,可以使用rndc的thaw命令:


<a href=https://yqfile.alicdn.com/15b6c6366e2a4035032073ef5723ffa54c4cbfc1.png" >

不应该长时间冻结区域数据的更新,尤其是在可能漏掉重要的更新时。
**
10.4.3 IXFR相关文件**
除了动态更新日志文件,BIND 8名称服务器还会维护IXFR日志,用以记录对区域数据的改变。如同动态更新日志文件,名称服务器每收到一条更新,就会更新IXFR日志文件。和动态更新日志文件不同的是,IXFR日志文件永远不会被删除,不过可以配置名称服务器对超出指定大小的日志文件进行削减(trim)。BIND 8的IXFR日志文件名,默认由区域数据文件名加上.ixfr组成。

BIND 9名称服务器使用动态更新日志文件(logfile或称为journal file),来收集IXFR应答并维护区域数据的完整性。由于primary名称服务器根本不知道何时会用到这条区域变更记录,所以该日志文件不会被删除。BIND 9的slave会保存日志文件,即便它接收到的是区域的AXFR,因为它还可能是一个或多个slave的master名称服务器。

10.4.4 BIND 8的IXFR配置
在BIND 8中,配置IXFR相当简单。首先,在master名称服务器上,需要使用名为maintain-ixfr-base的options子语句,以便让其维护整个区域的IXFR日志文件,甚至包括以该名称服务器为slave的区域,因为这些区域可能有slave需要IXFR服务:


a59dd0474d59b05016449375b5f94bf533245fd2

其次,需要告知slaves去向它们的master名称服务器请求IXFR服务。方法是使用一条新的server子语句support-ixfr:


<a href=https://yqfile.alicdn.com/e50ba71de1a7fc2370bb94797c78aa630269f43f.png" >

这样就完成了,除非想重命名master上的IXFR日志文件。这要使用一条新的zone子语句ixfr-base:


<a href=https://yqfile.alicdn.com/375d79d4c3082494feea7493f403758283dab464.png" >

还可以在名称服务器上配置,当IXFR日志文件超出指定大小时进行削减1:


49d55781628e97a17b80fddb500946e4ea3b907c

一旦IXFR日志文件超过指定值100KB,名称服务器就会将其削减到指定大小。这100KB的弹性空间用来避免当日志文件达到极限值时,接下来的每条更新都会导致其被削减回指定大小。

使用many-answers区域传输格式可以使区域数据的传输更有效率。有关many-answers区域传输本章稍后会加以说明。

10.4.5 BIND 9的IXFR配置
在BIND 9的master名称服务器中,配置IXFR甚至更简单,因为不必做任何事情:该功能是默认开启的。如果想针对特定的slave服务器关闭该功能(应该不会想这么做,因为slave必定会请求进行增量数据传输),可以使用server的子语句provide-ixfr,其默认值是yes:


5b293f1f38b283efb76a9d55366f078bcbbe1b27

还可以将provide-ixfr作为options的子语句,在此所做的配置会应用到所有的slave(只要该slave没有在自己的server语句中明确配置provide-ixfr子语句)。

因为BIND 9的master名称服务器默认采用many-answers区域传输格式,所以不必专门配置transfer-format。

比较有用的是request-ixfr子语句,它可以被用在options或server语句中。如果混合使用了支持IXFR(IXFR-capable)和不支持IXFR(IXFR-impaired)的master,可以将slave的区域传输请求改为发送给支持IXFR的master:


6149b63cdb50ad73694b97d08654698d01f8a886

从BIND 开始,BIND 9名称服务器支持使用options的子语句max-journal-size配置日志文件(journal file)的最大尺寸。
相关文章
|
2月前
|
网络协议 网络安全 网络虚拟化
本文介绍了十个重要的网络技术术语,包括IP地址、子网掩码、域名系统(DNS)、防火墙、虚拟专用网络(VPN)、路由器、交换机、超文本传输协议(HTTP)、传输控制协议/网际协议(TCP/IP)和云计算
本文介绍了十个重要的网络技术术语,包括IP地址、子网掩码、域名系统(DNS)、防火墙、虚拟专用网络(VPN)、路由器、交换机、超文本传输协议(HTTP)、传输控制协议/网际协议(TCP/IP)和云计算。通过这些术语的详细解释,帮助读者更好地理解和应用网络技术,应对数字化时代的挑战和机遇。
119 3
|
3月前
|
数据处理 Python
Python在音频传输中的应用实例解析
Python在音频传输中的应用实例解析
38 1
|
4月前
|
网络协议 网络安全
基于bind软件部署DNS服务器
关于如何使用bind软件部署DNS服务器的教程,包括DNS服务器的类型、基于bind软件的部署步骤、验证DNS服务器可用性的指导,以及如何进行DNS正向解析的实现。
130 2
|
5月前
|
网络协议 安全 网络安全
DNS服务器加密传输
【8月更文挑战第18天】
479 15
|
5月前
|
安全 Nacos 数据安全/隐私保护
【技术干货】破解Nacos安全隐患:连接用户名与密码明文传输!掌握HTTPS、JWT与OAuth2.0加密秘籍,打造坚不可摧的微服务注册与配置中心!从原理到实践,全方位解析如何构建安全防护体系,让您从此告别数据泄露风险!
【8月更文挑战第15天】Nacos是一款广受好评的微服务注册与配置中心,但其连接用户名和密码的明文传输成为安全隐患。本文探讨加密策略提升安全性。首先介绍明文传输风险,随后对比三种加密方案:HTTPS简化数据保护;JWT令牌减少凭证传输,适配分布式环境;OAuth2.0增强安全,支持多授权模式。每种方案各有千秋,开发者需根据具体需求选择最佳实践,确保服务安全稳定运行。
450 0
|
5月前
|
JavaScript 前端开发
bind原理深度解析
【8月更文挑战第1天】bind原理深度解析
48 0
|
7月前
|
物联网 开发者 智能硬件
无线模块透明传输原理及过程解析
透明传输是无线模块中一种保持数据原样的传输技术,它使数据在发送和接收时不经过任何处理,确保内容一致。该过程包括配置模块为透明模式、数据通过串口发送、模块封装帧格式并通过无线信道传输,以及接收端解封装并传递给应用。这种传输方式简化开发、保证数据完整性、提高通信效率且灵活性高,常用于物联网和智能家居等领域的无线通信。
105 2
|
7月前
|
SQL DataWorks Oracle
DataWorks产品使用合集之datax解析oracle增量log日志该如何操作
DataWorks作为一站式的数据开发与治理平台,提供了从数据采集、清洗、开发、调度、服务化、质量监控到安全管理的全套解决方案,帮助企业构建高效、规范、安全的大数据处理体系。以下是对DataWorks产品使用合集的概述,涵盖数据处理的各个环节。
68 0
|
8月前
|
Linux 调度 数据库
|
7月前
|
运维 内存技术
计算机网络:物理层中的数字传输系统全景概览解析
计算机网络:物理层中的数字传输系统全景概览解析
112 0

相关产品

  • 云解析DNS
  • 推荐镜像

    更多