一次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)的数据记录导致的。