我正在尝试在私有网络中设置 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
我检查了 axfrdns 客户端 ( ) 和服务器 ( )tcpdump
之间的通信:我看不出其中有什么明显的问题,除了在某个时候,服务器关闭了连接(数据包#22)。172.16.2.170
172.16.2.200
我认为文件中可能有问题data
,但切换停止响应的条目(在上面的例子中是ooo.my_zone.com
)和停止响应后的条目(例如ppp.my_zone.com
)没有帮助。它现在停止在ppp.my_zone.com
(即在相同的位置,而不是相同的条目)。
tcpdump 中的每个查询响应包包含多个 DNS 响应。
我怎样才能转移我的整个区域(约 340 个条目)axfrdns
?或者如何进一步调试?
答案1
我在操作系统升级和重新编译后也遇到了这个神秘的问题。结果我只需要增加 /etc/axfrdns/run 中的软限制(从 300000 增加到 3000000)。
答案2
我已经使用 djbdns 很多年了,天哪,除了遇到这种事情之外,它真的很棒。就上下文而言,我的 VPS 正在从一个包含我多年来一直使用的 IP 的子网转换出去,这很好,但尝试让 tinydns 处理它,充其量是令人困惑的,最坏的情况是令人愤怒的。服务器正在满足一个请求,然后在上述修复之前挂起。但至少它不是 BIND。