报错axfr-get: fatal: unable to parse AXFR results: protocol error
时间:2019-11-20 08:53:55 来源:igfitidea点击:
问题
执行$ tcpclient -v ns1.example.com 53 axfr-get example.com fn fn.tmp时,报错
>axfr-get: fatal: unable to parse AXFR results: protocol error
axfr-get:致命:无法解析AXFR结果:协议错误
解决方法
确保axfrdns已配置并正在运行
axfrdns是djbdns提供的DNS区域传输服务器。
它从其标准输入读取DNS-over-TCP格式的区域传输请求,并以本地配置的信息作为响应。
使用netstat命令或sockstat命令查看当前端口状态:
# netstat -tulpn | grep :53
或者
# sockstat -4 -p 53
确认防火墙开放了TCP端口53
确保防火墙没有阻止tcp端口53。使用iptables命令列出当前的防火墙规则:
# iptables -L -n # iptables -L -n | less # iptables -L -n | grep 53
可以使用以下命令列出PF防火墙规则:
# pfctl -sr # pfctl -sr | grep "port = domain"
如何在Linux Iptables防火墙下打开TCP端口53?
axfrdns服务器地址是10.3.72.22
$IPT -A INPUT -i eth0 -s 0/0 -d 10.3.72.22 -p udp --dport 53 -j ACCEPT $IPT -A INPUT -i eth0 -s 0/0 -d 10.3.72.22 -p tcp --dport 53 -j ACCEPT
如何在BSD PF防火墙下打开TCP端口53?
pass in on $ext_if inet proto udp from any to 10.3.72.22 port domain pass in on $ext_if inet proto tcp from any to 10.3.72.22 port domain flags S/SA synproxy state
确保为axfrdns正确设置了TCPRULES
tcp文件定义了AXFR的规则。(tcp文件位于/etc/axfardns或/var/axfardns目录中)
以下内容将仅允许AXFR进入ns2.example.com,但不允许进入其他地方:
ns2.example.com:allow,AXFR="example.com" :allow,AXFR=""
保存并关闭文件。运行make更新更改:
# make
仅ns2.example.com允许传输区域,其他人只能连接到TCP端口53。
故障排除技巧使用Dig和tcpclient命令
尝试tcpclient命令,如下所示:
$ tcpclient -v ns1.example.com 53 axfr-get example.com fn fn.tmp
尝试将客户端IP传递到ns1.example.com:
$ tcpclient -i ns2.example.com -v ns1.example.com 53 axfr-get oxdba.net fn fn.tmp
尝试使用dig命令,如下所示:
$ dig @ns1.example.com example.com A +tcp $ dig @ns1.example.com example.com AXFR +tcp