我的所有 DNS 区域均未出现在辅助 DNS 区域上,这是哪里出了问题?

我的所有 DNS 区域均未出现在辅助 DNS 区域上,这是哪里出了问题?

总结您可能希望快速跳到答案来了解发生了什么,而不是花时间阅读整个问题。


我有一个工具(管理控制台)来生成我的区域(我必须管理大约 35 个区域,这样就更容易了)。所有区域的生成方式都相同,但所有区域行为不当辅助 DNS 服务器永远得不到区域的副本。它以某种方式拒绝该副本。

重要的提示:以前一切都运转正常。只是不知为何,它决定在 3 月 22 日停止工作……

主 DNS(掌握)

日志

主服务器上主区域(使用 ns1/ns2 IP)的加载日志:

25-Mar-2023 01:27:28.745 zoneload: debug 1: zone m2osw.com/IN: starting load
25-Mar-2023 01:27:28.745 general: debug 1: zone_startload: zone m2osw.com/IN: enter
25-Mar-2023 01:27:28.745 zoneload: debug 1: zone m2osw.com/IN: journal rollforward completed successfully: no journal
25-Mar-2023 01:27:28.745 zoneload: debug 1: zone m2osw.com/IN: loaded; checking validity
25-Mar-2023 01:27:28.745 general: debug 1: dns_zone_verifydb: zone m2osw.com/IN: enter
25-Mar-2023 01:27:28.745 general: debug 1: zone_settimer: zone m2osw.com/IN: enter
25-Mar-2023 01:27:28.745 zoneload: info: zone m2osw.com/IN: loaded serial 248
25-Mar-2023 01:27:28.749 general: debug 1: dns_zone_maintenance: zone m2osw.com/IN: enter
25-Mar-2023 01:27:28.749 general: debug 1: zone_settimer: zone m2osw.com/IN: enter
25-Mar-2023 01:27:28.757 notify: info: zone m2osw.com/IN: sending notifies (serial 248)

初级片状区域的负载看起来相同:
(注意:我现在确定所有区域都是“不稳定的”,因为它们不会传输,所以所有日志看起来都一样是有道理的。)

25-Mar-2023 01:27:28.745 zoneload: debug 1: zone best-gamblers.games/IN: starting load
25-Mar-2023 01:27:28.745 general: debug 1: zone_startload: zone best-gamblers.games/IN: enter
25-Mar-2023 01:27:28.745 zoneload: debug 1: zone best-gamblers.games/IN: journal rollforward completed successfully: no journal
25-Mar-2023 01:27:28.745 zoneload: debug 1: zone best-gamblers.games/IN: loaded; checking validity
25-Mar-2023 01:27:28.745 general: debug 1: dns_zone_verifydb: zone best-gamblers.games/IN: enter
25-Mar-2023 01:27:28.745 general: debug 1: zone_settimer: zone best-gamblers.games/IN: enter
25-Mar-2023 01:27:28.745 zoneload: info: zone best-gamblers.games/IN: loaded serial 233
25-Mar-2023 01:27:28.749 general: debug 1: dns_zone_maintenance: zone best-gamblers.games/IN: enter
25-Mar-2023 01:27:28.749 general: debug 1: zone_settimer: zone best-gamblers.games/IN: enter
25-Mar-2023 01:27:28.753 notify: info: zone best-gamblers.games/IN: sending notifies (serial 233)

我在任何区域的主日志中均未看到任何错误。

区域文件

主区域有 ns1 和 ns2 定义等等:

$ORIGIN .
$TTL 3600
m2osw.com IN SOA ns1.m2osw.com. hostmaster.m2osw.com. (248 10800 180 1209600 300)
        NS ns1.m2osw.com.
        NS ns2.m2osw.com.
        MX 10   mail.m2osw.com.
        A       165.232.146.181
$ORIGIN m2osw.com.
mail    A       165.232.146.181
ns1     A       165.232.146.181
ns2     A       96.67.192.225
www     A       165.232.146.181
... more TXT / A records ...

以下是失败的例子:

$ORIGIN .
$TTL 3600
best-gamblers.games IN SOA ns1.m2osw.com. hostmaster.m2osw.com. (233 10800 180 1209600 300)
        NS ns1.m2osw.com.
        NS ns2.m2osw.com.
        A       165.232.146.181
$ORIGIN best-gamblers.games.
www     A       165.232.146.181

包括named.conf一个文件,其中包含:

zone "m2osw.com" {
  type primary;
  file "/var/lib/bind/m2osw.com.zone";
  allow-transfer { trusted-servers; };
  check-names warn;
  max-journal-size 2M;
};

故障区域定义如下:

zone "best-gamblers.games" {
  type primary;
  file "/var/lib/bind/best-gamblers.games.zone";
  allow-transfer { trusted-servers; };
  check-names warn;
  max-journal-size 2M;
};

辅助 DNS(奴隶)

区域设置

辅助服务器有一个带有区域引用的文件,如下所示:

zone "m2osw.com" {
  type secondary;
  primaries { list-of-primaries; };
  allow-transfer { none; };
  file "/var/cache/bind/m2osw.com.zone";
};
zone "best-gamblers.games" {
  type secondary;
  primaries { list-of-primaries; };
  allow-transfer { none; };
  file "/var/cache/bind/best-gamblers.games.zone";
};

"/var/cache/bind/m2osw.com.zone"文件(以及大约 20 个其他文件)按预期创建。所有这些都运行良好。正如我上面提到的,我使用一个工具来创建所有文件,因此除了区域名称和相应的文件外,它们并没有什么不同……其余的都是一样的,正如我们上面看到的,我呈现的两个区域完全相同!

确实"/var/cache/bind/best-gamblers.games.zone"不是根本无法创建。在测试时,我尝试删除文件名中的“-”,但这毫无帮助。

日志

就像主日志一样,我在辅助日志中找不到任何错误,并且它们对于主域来说看起来很相似(可以工作):

24-Mar-2023 18:47:29.074 general: debug 1: zone m2osw.com/IN: starting load
24-Mar-2023 18:47:29.075 general: debug 1: zone m2osw.com/IN: journal rollforward completed successfully: no journal
24-Mar-2023 18:47:29.075 general: debug 1: zone m2osw.com/IN: loaded; checking validity
24-Mar-2023 18:47:29.075 general: debug 1: zone_settimer: zone m2osw.com/IN: enter
24-Mar-2023 18:47:29.075 general: info: zone m2osw.com/IN: loaded serial 241
24-Mar-2023 18:47:29.077 general: debug 1: dns_zone_maintenance: zone m2osw.com/IN: enter
24-Mar-2023 18:47:29.077 general: debug 1: zone_settimer: zone m2osw.com/IN: enter
24-Mar-2023 18:47:29.086 notify: info: zone m2osw.com/IN: sending notifies (serial 241)
24-Mar-2023 18:52:22.075 general: debug 1: zone_timer: zone m2osw.com/IN: enter
24-Mar-2023 18:52:22.075 general: debug 1: zone_maintenance: zone m2osw.com/IN: enter
24-Mar-2023 18:52:22.075 general: debug 1: queue_soa_query: zone m2osw.com/IN: enter
24-Mar-2023 18:52:22.075 general: debug 1: zone_settimer: zone m2osw.com/IN: enter
24-Mar-2023 18:52:22.075 general: debug 1: soa_query: zone m2osw.com/IN: enter
24-Mar-2023 18:52:22.095 general: debug 1: refresh_callback: zone m2osw.com/IN: enter
24-Mar-2023 18:52:22.095 general: info: zone m2osw.com/IN: refresh: non-authoritative answer from master 165.232.146.181#53 (source 0.0.0.0#0)
24-Mar-2023 18:52:22.095 general: debug 1: queue_soa_query: zone m2osw.com/IN: enter
24-Mar-2023 18:52:22.575 general: debug 1: soa_query: zone m2osw.com/IN: enter
24-Mar-2023 18:52:22.575 general: debug 1: cancel_refresh: zone m2osw.com/IN: enter
24-Mar-2023 18:52:22.576 general: debug 1: zone_settimer: zone m2osw.com/IN: enter

以及另一个域(失败):

24-Mar-2023 18:47:29.075 general: debug 1: zone best-gamblers.games/IN: no master file
24-Mar-2023 18:47:29.075 general: debug 1: zone_settimer: zone best-gamblers.games/IN: enter
24-Mar-2023 18:47:29.076 general: debug 1: dns_zone_maintenance: zone best-gamblers.games/IN: enter
24-Mar-2023 18:47:29.076 general: debug 1: zone_settimer: zone best-gamblers.games/IN: enter
24-Mar-2023 18:47:29.083 general: debug 1: zone_timer: zone best-gamblers.games/IN: enter
24-Mar-2023 18:47:29.083 general: debug 1: zone_maintenance: zone best-gamblers.games/IN: enter
24-Mar-2023 18:47:29.083 general: debug 1: queue_soa_query: zone best-gamblers.games/IN: enter
24-Mar-2023 18:47:29.084 general: debug 1: zone_settimer: zone best-gamblers.games/IN: enter
24-Mar-2023 18:47:29.089 general: debug 1: soa_query: zone best-gamblers.games/IN: enter
24-Mar-2023 18:47:29.116 general: debug 1: refresh_callback: zone best-gamblers.games/IN: enter
24-Mar-2023 18:47:29.116 general: info: zone best-gamblers.games/IN: refresh: non-authoritative answer from master 165.232.146.181#53 (source 0.0.0.0#0)
24-Mar-2023 18:47:29.116 general: debug 1: queue_soa_query: zone best-gamblers.games/IN: enter
24-Mar-2023 18:47:29.583 general: debug 1: soa_query: zone best-gamblers.games/IN: enter
24-Mar-2023 18:47:29.583 general: debug 1: cancel_refresh: zone best-gamblers.games/IN: enter
24-Mar-2023 18:47:29.583 general: debug 1: zone_settimer: zone best-gamblers.games/IN: enter

问题

如上所述,该文件夹best-gamblers.games.zone中永远不会被创建/var/cache/bind

cancel_refresh听起来似乎是这样做的一个很好的理由,但如果是这样的话,那么它应该是错误,而不是调试消息。而且这两个区域的消息是相同的。

但是,看起来区域 m2osw.com 未在辅助 DNS 上更新,因为它显示它加载了版本 241,而主 DNS 为版本 248。为了证明这一点,我更新了主区域以包含它volcan.m2osw.com,果然,经过必要的时间后,我可以在 NS1 上找到新名称,而 NS2 表示它不知道它。所以 NS2 没有更新任何内容。当然,我多次重新启动了 bind9 服务。这根本没有帮助。

因此,我认为主要问题是当我从辅助 DNS 查询时,我的主 DNS 没有设置“aa”标志。我尝试从我可以访问的另一台服务器查询,它确实在主 DNS 和辅助 DNS 上都显示了“aa”标志。所以我认为我在这方面做得不错。

还有什么可以阻止第二个服务器接受这些条目?“aa”是问题吗?如果是,我该如何在第二个辅助服务器上修复它?


dig从辅助 DNS 服务器到主 DNS 服务器的示例,没有“aa”标志:

$ dig @ns1.m2osw.com m2osw.com

; <<>> DiG 9.11.3-1ubuntu1.18-Ubuntu <<>> @ns1.m2osw.com m2osw.com
; (1 server found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 50582
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 512
;; QUESTION SECTION:
;m2osw.com.         IN  A

;; ANSWER SECTION:
m2osw.com.      3600    IN  A   165.232.146.181

;; Query time: 24 msec
;; SERVER: 165.232.146.181#53(165.232.146.181)
;; WHEN: Wed Mar 22 17:30:34 PDT 2023
;; MSG SIZE  rcvd: 54

这是dig来自我的第三台服务器(未安装 BIND)的相同命令,存在“​​aa”标志:

$ dig @ns1.m2osw.com m2osw.com

; <<>> DiG 9.11.3-1ubuntu1.18-Ubuntu <<>> @ns1.m2osw.com m2osw.com
; (1 server found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 40081
;; flags: qr aa rd; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1
;; WARNING: recursion requested but not available

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
; COOKIE: 913b39f9d8226a8901000000641e51000a3e9c772af12db9 (good)
;; QUESTION SECTION:
;m2osw.com.         IN  A

;; ANSWER SECTION:
m2osw.com.      3600    IN  A   165.232.146.181

;; Query time: 1 msec
;; SERVER: 165.232.146.181#53(165.232.146.181)
;; WHEN: Sat Mar 25 01:40:16 UTC 2023
;; MSG SIZE  rcvd: 82

请注意,由于我在辅助缓存中拥有有效的 DNS 文件,我认为它之前运行良好。我不记得对设置进行了任何更改,所以我真的不明白为什么它会突然停止工作......


更新

因为感觉其他域没有发生更新,所以我在停止绑定后隐藏了现有缓存:

$ sudo systemctl stop bind9
$ sudo mv /var/cache/bind /var/cache/bind-hidden

然后我再次创建了缓存文件夹:

$ sudo mkdir /var/cache/bind
$ sudo chgrp bind /var/cache/bind
$ sudo 775 /var/cache/bind

我重新启动了绑定:

$ sudo systemctl start bind9

并查看了文件夹:

$ ls /var/cache/bind-empty
managed-keys.bind  managed-keys.bind.jnl

我们可以看到它创建了两个文件。因此不存在读/写权限问题(是的,原始文件夹也是 root:bind 和 775)。我可以在日志中看到传输信号(如上所示),所以我确信应该出现了新的区域文件,但什么都没有出现。

这清楚地证明了辅助服务器拒绝了来自主服务器的所有文件。可能是因为它认为主服务器不具有权威性?

dig AXFR ...输出

我从辅助服务器运行了以下命令:

$ dig afxr @ns1.m2osw.com best-gamblers.games

; <<>> DiG 9.11.3-1ubuntu1.18-Ubuntu <<>> afxr @ns1.m2osw.com best-gamblers.games
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 60945
;; flags: qr rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 0, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;afxr.              IN  A

;; Query time: 5 msec
;; SERVER: 165.232.146.181#53(165.232.146.181)
;; WHEN: Mon Mar 27 21:05:04 PDT 2023
;; MSG SIZE  rcvd: 33

;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 31521
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 65494
;; QUESTION SECTION:
;best-gamblers.games.       IN  A

;; ANSWER SECTION:
best-gamblers.games.    3600    IN  A   165.232.146.181

;; Query time: 57 msec
;; SERVER: 127.0.0.53#53(127.0.0.53)
;; WHEN: Mon Mar 27 21:05:04 PDT 2023
;; MSG SIZE  rcvd: 64

不确定这是否成功,但它看起来与第三方服务器完全相同,所以我认为即使域名出现在答案部分,它也是失败的。

我直接在主服务器上重复了该操作,它显示了一个权限部分:

$ dig axfr @ns1.m2osw.com best-gamblers.games

; <<>> DiG 9.18.12-0ubuntu0.22.04.1-Ubuntu <<>> axfr @ns1.m2osw.com best-gamblers.games
; (1 server found)
;; global options: +cmd
; Transfer failed.

答案1

设置很好。

问题出在我家服务器前面的 Comcast 新防火墙上。Comcast 承认了这一点其商业服务客户条款和条件第 30.4 条 V.41

客户使用 TCP/UDP 端口 53 的非康卡斯特应用程序和服务 (i) 可能与 SecurityEdge 服务不兼容,这可能导致此类非康卡斯特应用程序和服务无法正常运行,并且 (ii) 可能影响某些康卡斯特服务(包括商业互联网)

我最终决定用 DigitalOcean 创建一个小型 Droplet(目前最小的只需 4 美元/月),并且在我修复防火墙/设置以允许新计算机作为辅助计算机(即在这里和那里更改 IP 地址)后,它就可以工作。

就是这样。

相关内容