一次powerdns上某个zone传输失败的问题的解决过程
缘起
我司用 PowerDNS 来维护域名,某天否然发现有纪录在 PowerDNS 已经更新了,但是客户端查询解析结果却迟迟没有更新。
排查问题
请求传输数据的一端
在用做 dns 查询用的服务器上(也是 PowerDNS),执行:
1 | pdns_control reload; |
然后在 log 里看到有错误输出:
Unable to AXFR zone ‘in-addr.arpa’ from remote ‘1.1.1.1’ (resolver): Remote nameserver closed TCP connection
(1.1.1.1 是主 DNS 服务器)
看了些文档,说有可能是数据文件太大导致传输失败,于是有直接测试了一下传输 zone:
1 | dig in-addr.arpa @1.1.1.1 AXFR; |
结果发现还是未能得到整个 zone 的数据,于是怀疑服务器端可能有问题。
在传输数据的一端
在主 DNS 服务器上(这里应该是 1.1.1.1),查看 log,发现有报错误:
Exception: All data was not consumed
TCP Connection Thread died because of STL error: All data was not consumed
仔细看了下文档,说有可能是待传输的 zone 的数据文件有问题,于是我又做了下检测:
1 | pdnsutil check-zone in-addr.arpa; |
发现一堆的数据(解析纪录)显然有问题,都备份好,然后删除之。
然后一一回头测试,这回都正常了。
问题根源
肯定是大家瞎改反向解析(in-addr.arpa)的数据记录导致的。