问题描述
在 VMware NSX 环境中,位于 NSX 覆盖网络上的虚拟机可能会遇到以下问题:
- 无法解析 DNS 名称,
nslookup命令返回 “Server not found” 错误 - 无法 ping DNS 服务器 IP 地址,显示 ICMP 超时
- 当流量必须通过 Tier-1 和 Tier-0 网关到达基础架构服务时,此问题最为典型
- Name: 为规则提供一个有意义的名称,如 “Allow DNS and ICMP to Infrastructure”
- Source: 选择包含受影响虚拟机的安全组
- Destination: 选择包含 DNS 服务器的安全组
- Services: 选择以下服务:
- DNS(UDP 53)
- ICMP V4(或 ICMP V6,如果使用 IPv6)
- Action: 设置为 “Allow”
- 如果规则配置正确,应该会看到数据包到达目的地的完整路径
- 如果仍有问题,会显示数据包被丢弃的位置和原因
根本原因分析
根据 VMware KB 429261,问题的根本原因与 NSX 网关防火墙策略有关:
1. 默认防火墙行为:在 NSX 中,如果数据包不匹配任何用户定义的规则,它会由默认允许规则(Rule 1002)处理,除非环境中更改了设置
2. 默认规则修改:如果默认规则被修改为“丢弃”(Drop)操作,DNS 和 ICMP 流量将无法通过
3. 需要显式允许规则:必须为 DNS(UDP 53)和 ICMP 流量创建显式的允许规则,以便它们能够在 T1 和 T0 网关之间流动
解决方案
步骤 1:登录到 NSX Manager UI
1. 打开浏览器并导航到 NSX Manager UI 的地址
2. 使用具有适当权限的账户登录(通常需要管理员权限)
步骤 2:导航到网关防火墙配置
1. 在左侧导航栏中,选择 Security > Gateway Firewall
2. 选择 Gateway Specific 选项卡
3. 从下拉菜单中选择受影响的网关(Tier-0 或 Tier-1 网关)
步骤 3:创建或更新防火墙规则
#### 创建新规则(推荐)
1. 点击 Add Rule 按钮创建新的防火墙规则
2. 配置以下规则属性:
#### 更新现有规则
如果已经有适用于基础架构服务的规则,可以修改它以包含 DNS 和 ICMP 服务。
步骤 4:应用更改
1. 点击 Publish 按钮应用防火墙策略更改
2. 等待策略发布完成(可能需要几分钟时间)
步骤 5:对 Tier-1 网关重复上述操作
如果流量在 Tier-1 网关级别被丢弃,需要对 Tier-1 网关执行相同的操作。
验证与测试
使用 NSX Traceflow 工具
1. 在 NSX Manager UI 中,打开 Diagnostics > Traceflow
2. 配置跟踪流以模拟受影响 VM 和 DNS 服务器之间的流量
3. 运行跟踪流并检查结果:
在虚拟机上验证
在受影响的虚拟机上运行以下测试以验证修复是否成功:
1. 测试 DNS 解析:
nslookup vmware.com
2. 测试 ping 连通性:
ping 8.8.8.8
3. 如果是 Linux 虚拟机,可以测试其他 DNS 服务器:
nslookup vmware.com 1.1.1.1
故障排查步骤
检查防火墙规则配置
1. 在 NSX Manager UI 中,仔细检查创建的规则配置
2. 确认源和目标安全组是否包含正确的虚拟机和 DNS 服务器
3. 检查服务是否正确配置(UDP 53 和 ICMP)
4. 确认规则的操作是 “Allow” 而不是 “Drop”
检查安全组成员
1. 检查包含受影响虚拟机的安全组
2. 确认虚拟机是否正确添加到安全组中
3. 同样检查包含 DNS 服务器的安全组配置
检查路由配置
1. 确认受影响网络和 DNS 服务器网络之间的路由是正确的
2. 在 NSX 中检查 T0 和 T1 网关的路由表
3. 验证是否有到 DNS 服务器网络的正确下一跳
预防措施
为了避免未来遇到类似问题,建议:
1. 定期审计防火墙策略:定期检查网关防火墙策略,确保基础架构服务流量被正确允许
2. 避免修改默认规则:除非有明确的安全需求,否则不要修改默认的允许规则(Rule 1002)
3. 文档化策略更改:对防火墙策略的任何更改都要进行详细文档化
4. 测试策略变更:在生产环境中部署防火墙策略变更前,先在测试环境中进行充分测试
5. 监控 DNS 解析:设置监控以跟踪 DNS 解析失败,并在问题发生时及时发出警报
相关资源
1. [VMware KB 429261](https://knowledge.broadcom.com/external/article?articleNumber=429261)
2. [NSX 网关防火墙文档](https://docs.vmware.com/en/VMware-NSX/4.1/administration/GUID-09A57B6F-1B7B-4B9A-8C5F-6D6B4F5F5F5F.html)
3. [NSX Traceflow 文档](https://docs.vmware.com/en/VMware-NSX/4.1/troubleshooting/GUID-1B6B7C8D-7C6A-4E6F-8D6A-7B8D8B7C6A4E.html)
通过按照本文中的步骤进行操作,您可以解决 NSX 覆盖网络上的虚拟机无法 ping DNS 服务器和解析名称的问题。
Reference: VMware KB 429261







