BIND 服务器区域不会“通知”,直到序列号发生更改

BIND 服务器区域不会“通知”,直到序列号发生更改

我感觉我遇到的问题最终会是一个简单的问题,但我没有看到明显的问题。

首先,这里有一个示例流程,以便更好地理解事情是如何按顺序发生的——请注意,这是已经到位的基础设施,操作顺序需要保持完整:

  1. 注册域名 IE GoDaddy
  2. 将域名指向我们的名称服务器
  3. 创建名称服务器记录并重新加载绑定

现在..在步骤 1 和步骤 2 之间我们开始看到这一点(显然是因为该域名尚未在我们的系统中):

Jun 12 15:32:40 DNSSERVER named[25262]: client 230..xxx.xxx.xx#61333 (example.com): query (cache) 'example.com/SOA/IN' denied

接下来我创建区域文件/var/lib/bind/example.com.hosts

$ttl 38400
example.com.                       IN          SOA      ns1.ourdnsserver.com. some.email.com. (
                            1494611262
                            10800
                            3600
                            604800
                            38400 )
example.com.                       IN       NS      ns1.ourdnsserver.com.
example.com.                       IN       A       40.xx.xx.xx
www.example.com.                   IN       A       40.xx.xx.xx
mail.example.com.                  IN       A       173.xx.xx.xx
webmail.example.com.               IN       A       173.xx.xx.xx
example.com.                       IN       MX      10 mx1.server.com.
example.com.                       IN       MX      20 mx2.server.com.

此后,我将区域插入到配置中/etc/bind/named.conf.local

zone "example.com" {
     type master;
     file "/var/lib/bind/example.com.hosts";
     };

然后我重新启动sudo service bind9 restart

在此之后,我仍然得到

Jun 12 15:32:40 DNSSERVER named[25262]: client 230..xxx.xxx.xx#61333 (example.com): query (cache) 'example.com/SOA/IN' denied

我要做的就是解决这个问题编辑我的文件/var/lib/bind/example.com.hosts -- 使用新的 unix 时间戳更新序列 -- 重新保存并重新启动 Bind。然后,通知程序就会发出区域已更新的信息。

编辑

然后我在日志中得到以下内容

8377:Jun 12 14:12:57 OURSND named[25262]: zone example.com/IN: sending notifies (serial 1494611231)

结束编辑

问题是,为什么我创建区域并重新启动 Bind 时没有发出通知?为什么我必须返回、编辑、重新保存并重新启动 Bind 才能使区域显示为“已更新”?我希望每次都能在第一次就发生这种情况。我没看到什么?

答案1

将序列号视为版本号。您(重新)启动绑定,它会检查其数据缓存中的版本号与配置中的版本号(序列号)。如果版本相同,为什么要重新处理所有内容,为什么要浪费网络带宽告诉辅助服务器您有区域要传输...

始终更新您的序列号。唯一的规则是必须更新。使用 unix 时间戳是好的,或者使用 YYYYMMDDNN 之类的格式,其中 NN 是当天的修订号(您是否需要每天更改它超过 99 次?)。

正如您所发现的,问题在于编辑文件时记得更新序列号。使用一些模板文件、数据文件和 shell 脚本来创建一个“构建”过程,您可以在其中编辑数据,然后告诉它重新生成区域文件(其中一部分包括输出新序列号),甚至可以转到(过度)基于 Web 的前端,使用“服务提供商”控制面板(如 ISPConfig),其中所有数据都将位于 sql 数据库中,ispconfig 软件将自动创建区域文件。

相关内容