在 bind9 的 named.conf 配置文件中配置了allow-transfer 这个选项的话,使用dnspython 的 dns.zone.from_xfr 查询 zone 的记录,就会报错,报错如下
zone = dns.zone.from_xfr(dns.query.xfr(hostname, zone_name, keyring=keyring))
File "/usr/local/lib/python2.7/site-packages/dns/zone.py", line 1001, in from_xfr
for r in xfr:
File "/usr/local/lib/python2.7/site-packages/dns/query.py", line 446, in xfr
raise dns.exception.FormError("No answer or RRset not for qname")
dns.exception.FormError: No answer or RRset not for qname
这个问题已经解决,allow-transfer 这个功能是允许域数据传输,当时我是配置的程序的所在服务器的物理IP,比如我运行的 dnspython 程序的所在服务器为 192.168.0.1 ,然后我填写的是
这样的话,它只会允许 192.168.0.1这个IP的程序来获取 zone 的数据,
但是我配置成
或者是
就可以了
不过我 127.0.0.1 和 192.168.0.1是同一台服务器,没有识别,设计的有点二。