You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

DNS服务器仅自身可解析内部域名,其他主机无法解析

DNS服务器仅自身可解析内部域名,其他主机无法解析

遇到这种本地能正常解析,但局域网其他机器访问DNS服务器查不到内部域名的情况,我帮你梳理几个最可能的排查方向:

  • 检查内部区域的查询权限配置
    你用的是named(Bind)服务,默认情况下很多配置会限制只有本地主机能查询内部私有区域。打开你的DNS配置文件(通常是/etc/named.conf或者/etc/named/zones/下的区域配置文件),找到对应internal.site的zone块,看看有没有allow-query选项。如果它只设置了localhost或者127.0.0.1,那其他机器肯定查不了。建议改成允许整个局域网段访问,比如:

    zone "internal.site" IN {
        type master;
        file "internal.site.db";
        allow-query { 127.0.0.1; 192.168.1.0/24; };
    };
    

    修改后记得重启named服务生效,比如systemctl restart named。

  • 排查服务器防火墙规则
    虽然netstat显示端口在监听,但服务器上的防火墙很可能没放行DNS的流量(DNS主要用UDP协议,部分场景会用到TCP)。比如用firewalld的话,执行这两条命令开放DNS服务并生效:

    firewall-cmd --add-service=dns --permanent
    firewall-cmd --reload
    

    如果是iptables,就添加针对局域网段的放行规则:

    iptables -A INPUT -p udp --dport 53 -s 192.168.1.0/24 -j ACCEPT
    iptables -A INPUT -p tcp --dport 53 -s 192.168.1.0/24 -j ACCEPT
    

    别忘了保存iptables规则,避免重启后失效。

  • 确认named的监听配置
    再核对下named.conf里的listen-on配置,确保它包含了服务器的局域网IP(192.168.1.10),而不是只监听127.0.0.1。正常的配置应该类似:

    listen-on port 53 { 127.0.0.1; 192.168.1.10; };
    

    虽然你的netstat显示已经在监听这个IP,但偶尔也会出现配置和实际监听不一致的情况,确认下更稳妥。

  • 验证客户端请求是否到达服务器
    可以在DNS服务器上用tcpdump抓包,看看客户端的请求有没有过来:

    tcpdump udp port 53
    

    然后在客户端执行nslookup internal.site 192.168.1.10,如果服务器端没抓到包,那问题可能出在局域网路由或者客户端的防火墙;如果抓到了但没有响应,那还是回到服务器的权限配置上排查。

备注:内容来源于stack exchange,提问作者kit

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.17 11:39:34