我正在尝试在专用网络中设置 djbdns tinydns
(dnscache
和)。axfrdns
有一个运行 BIND 的辅助服务器应该能够传输由tinydns
(通过axfrdns
)管理的区域。
axfrdns
当我请求区域转移时,我在日志中收到此错误消息:
axfrdns: fatal: unable to read data.cdb: format error
但实际上,该data.cdb
文件是由 使用的tinydns
,它是由tinydns-data
: 生成的,没有明显的问题。
如果我使用 手动执行传输请求dig -t AXFR my_zone.com @172.16.2.200
,我会收到响应,但仅包含文件中的前 20 个条目data
(以相同的顺序:SOA
、NS
、MX
、A
、 ...),并以以下消息结尾:
;; communications error to 172.16.2.200#53: end of file
显然,这不是文件的结尾。
完整回复(出于隐私目的,名称略有更改):
$ dig -t AXFR my_zone.com @172.16.2.200
; <<>> DiG 9.11.5-P4-5.1+deb10u2-Debian <<>> -t AXFR my_zone.com @172.16.2.200
;; global options: +cmd
my_zone.com. 2560 IN SOA srv-10.my_zone.com. hostmaster.my_zone.com. 1603886087 16384 2048 1048576 2560
my_zone.com. 259200 IN NS srv-10.my_zone.com.
srv-10.my_zone.com. 259200 IN A 172.16.2.199
my_zone.com. 259200 IN NS vm01.my_zone.com.
vm01.my_zone.com. 259200 IN A 172.16.2.201
my_zone.com. 259200 IN NS vm02.my_zone.com.
vm02.my_zone.com. 259200 IN A 172.16.2.202
my_zone.com. 86400 IN MX 0 my_zone.mail.protection.outlook.com.
aaa.my_zone.com. 86400 IN A 78.40.125.202
bbb.my_zone.com. 86400 IN A 193.186.8.180
ccc.my_zone.com. 86400 IN A 78.40.125.106
ddd.my_zone.com. 86400 IN A 78.40.125.202
eee.my_zone.com. 86400 IN A 193.186.8.34
fff.my_zone.com. 86400 IN A 35.204.32.245
ggg.my_zone.com. 86400 IN A 192.168.10.81
hhh.my_zone.com. 86400 IN A 13.69.156.71
iii.my_zone.com. 86400 IN A 13.69.156.71
jjj.my_zone.com. 86400 IN A 13.69.156.71
my_zone.com. 86400 IN A 172.16.2.172
lll.my_zone.com. 86400 IN A 172.16.2.186
mmm.my_zone.com. 86400 IN A 172.16.2.187
nnn.my_zone.com. 86400 IN A 172.16.2.170
ooo.my_zone.com. 86400 IN A 172.16.2.171
;; communications error to 172.16.2.200#53: end of file
我tcpdump
编辑了 axfrdns 客户端 ( 172.16.2.170
) 和服务器 ( 172.16.2.200
) 之间的通信:我看不出其中有明显问题,除非在某些时候,服务器关闭了连接(数据包 #22)。
我认为这可能是data
文件中的某些内容,但是切换它停止响应的条目(在上面的示例中ooo.my_zone.com
)和之后的条目(例如ppp.my_zone.com
)并没有帮助。它现在停在ppp.my_zone.com
(即在同一个位置,不是同一个条目)。
tcpdump 中的每个查询响应包都包含多个 DNS 响应。
如何使用 转移我的整个区域(约 340 个条目)axfrdns
?或者如何进一步调试?
在操作系统升级和重新编译之后,我也遇到了这个神秘的问题。原来我只需要增加 /etc/axfrdns/run 中的软限制(从 300000 到 3000000)。
我已经使用 djbdns 多年了,而且 OMFG 非常棒,除非它只是这样的东西。就上下文而言,我的 VPS 正在从包含我多年来一直使用的 IP 的子网过渡,这很好,但试图让 tinydns 处理它充其量是令人困惑的,最坏的情况是令人愤怒。服务器正在满足一个请求,然后在上述修复之前挂起。但至少它不是 BIND。