运行dig命令查询域名ANY记录时53端口连接被拒,求故障原因
你遇到的这个connection refused错误,说明你的机器根本连不上指定的DNS服务器(172.16.137.2)的53端口,多个域名都出现同样问题,基本可以排除单个域名的异常,大概率是DNS服务器本身、网络或者防火墙层面的问题,我给你梳理几个常见的排查方向:
DNS服务未运行或未监听53端口
首先得确认172.16.137.2这台机器上的DNS服务(比如Bind、dnsmasq这类)是否正常运行。你可以登录到该服务器,用systemctl status named(如果是Bind服务)或者systemctl status dnsmasq查看服务状态,如果显示inactive或failed,那就是服务没启动,先把服务启动再说。另外还要检查53端口是否被监听——用ss -tulpn | grep :53命令,看看输出里有没有对应的DNS服务进程,UDP和TCP端口都要留意,毕竟ANY类型的查询有时会用到TCP。如果端口没被监听,要么是服务配置有误,要么就是服务没正常启动。防火墙/安全组拦截了53端口流量
不管是你的本地机器,还是DNS服务器172.16.137.2上的防火墙,都可能挡住了53端口的请求。比如服务器用的是firewalld,可以先临时关闭试试:systemctl stop firewalld,之后再执行dig命令测试。如果关闭后能正常查询,那就是防火墙规则的问题,需要添加允许DNS流量的规则(比如firewall-cmd --add-service=dns --permanent后重载规则)。要是用的是iptables,就得检查是否存在允许53端口入站的规则。DNS服务器配置了访问限制
有些DNS服务会配置只允许特定IP段访问,或者仅监听某个特定IP,导致你的机器无法连接。比如Bind的配置文件named.conf里的listen-on指令,如果只写了服务器自身的内网IP,没设置any,那其他机器就访问不了。你可以检查配置文件里的监听设置,改成listen-on { any; };(如果允许所有IP访问的话),然后重启DNS服务试试。底层网络连通性异常
先试试ping 172.16.137.2,看能不能通。如果ping不通,那就是路由、子网或者网络设备的问题,比如你的机器和DNS服务器不在同一网段,或者中间路由器没开启转发,得先解决网络连通的基础问题。如果ping通了但dig连不上,可以用nc -zv 172.16.137.2 53测试端口是否可达,这个命令能直接告诉你53端口是否开放。本地DNS配置问题(可能性相对小,但可排查)
检查你本地机器的/etc/resolv.conf文件,看看nameserver是不是真的设置为172.16.137.2?有没有可能配置了多个DNS,但第一个就是这个不可用的?不过你说多个域名都失败,这个可能性不大,但确认一下更稳妥。
内容的提问来源于stack exchange,提问作者Omar

