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

Rocky Linux 8虚拟机间DNS解析失败问题求助

Rocky Linux 8虚拟机间DNS解析失败问题求助

我来帮你捋捋这个问题,咱们一步步排查可能的原因和对应的解决办法:

可能的原因及修复步骤

1. VM1上的Bind服务限制了VM3的查询请求

Bind默认可能只允许本地或者特定子网发起DNS查询,你得检查下它的配置:

  • 打开/etc/named.conf或者对应的区域配置文件,找到*allow-query*这个核心选项
    • 如果它被设置成localhost或者仅包含VM1、VM2所在的子网,那VM3的请求直接会被拒绝
    • 测试阶段可以改成allow-query { any; };,后续再根据实际安全需求限制为具体子网(比如allow-query { 192.168.0.0/24; 10.1.1.0/24; };,替换成你的真实子网段)
  • 修改完配置后,先检查语法是否正确:named-checkconf /etc/named.conf,如果没输出就是没问题
  • 最后重启Bind服务生效:systemctl restart named

2. 网络路径上的防火墙挡住了DNS流量

虽然IP ping通说明三层连通没问题,但DNS用的是UDP 53端口(大查询会用TCP 53),这条路径上的防火墙可能没放行对应的端口:

  • 检查VM1的firewalld:
    • 先看看当前允许的服务列表:firewall-cmd --list-services
    • 如果没看到dns服务,立刻添加并永久生效:firewall-cmd --add-service=dns --permanent,然后重载防火墙:firewall-cmd --reload
  • 检查VM2的firewalld:
    • 因为VM3要通过VM2才能连到VM1,VM2的防火墙可能拦截了DNS流量的转发
    • 先确认VM2的IP转发是开启的(你说ping正常应该是开了,但可以再确认:sysctl net.ipv4.ip_forward,输出为1就是正常;如果是0,执行sysctl -w net.ipv4.ip_forward=1,再把net.ipv4.ip_forward=1写入/etc/sysctl.conf实现永久生效)
    • 然后添加DNS服务的转发规则:firewall-cmd --add-service=dns --permanent --zone=public(根据你的实际网络区域调整zone参数),最后重载防火墙:firewall-cmd --reload

3. VM3的/etc/resolv.conf配置被自动覆盖了

Rocky Linux 8里的NetworkManager会自动接管/etc/resolv.conf,你手动修改的内容可能被后台自动覆盖了:

  • 先确认NetworkManager的运行状态:systemctl status NetworkManager
  • 如果它在运行,建议通过NetworkManager来配置DNS,而不是直接修改文件:
    • 先列出当前的网络连接:nmcli con show,找到VM3对应的连接名称
    • 设置DNS服务器:nmcli con mod "你的连接名" ipv4.dns "VM1的IP地址"
    • 重启连接让配置生效:nmcli con up "你的连接名"
  • 要是你想手动管理resolv.conf,可以临时禁用NetworkManager的DNS管理功能:在/etc/NetworkManager/NetworkManager.conf的[main]段下添加dns=none,然后重启NetworkManager:systemctl restart NetworkManager,之后手动修改/etc/resolv.conf就不会被覆盖了

4. 区域配置文件存在遗漏(概率较低)

虽然VM1和VM2之间能正常解析,但还是可以确认下Bind的区域配置:

  • 打开正向区域文件(比如/var/named/your-domain.zone),确认里面有VM1和VM2的A记录
  • 用named-checkzone your-domain.com /var/named/your-domain.zone检查区域文件的语法,确保没有错误

快速验证工具

在VM3上用dig命令可以获取更详细的错误信息,帮你定位问题:

  • 测试解析VM1的域名:dig @VM1的IP地址 VM1的域名
    • 如果输出里status: REFUSED,那肯定是Bind的allow-query配置限制了请求
    • 如果出现超时,那大概率是防火墙或者端口转发的问题

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.15 11:42:59