dnspython 的 dns.zone.from_xfr 报错

在 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

阅读 5.9k
1 个回答

这个问题已经解决,allow-transfer 这个功能是允许域数据传输,当时我是配置的程序的所在服务器的物理IP,比如我运行的 dnspython 程序的所在服务器为 192.168.0.1 ,然后我填写的是

allow-transfer{ 192.168.0.1;};

这样的话,它只会允许 192.168.0.1这个IP的程序来获取 zone 的数据,

但是我配置成

allow-transfer{ 127.0.0.1;};

或者是

allow-transfer{ any;};

就可以了

不过我 127.0.0.1 和 192.168.0.1是同一台服务器,没有识别,设计的有点二。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进