0
点赞
收藏
分享

微信扫一扫

如何在底层清除 NSX 防火墙规则

通常情况下 NSX 防火墙仅用于业务负载,但在配置上并不会限制用户将防火墙规则配置给 vCenter、NSX Manager 等管理型的 VM。如果用户将 vCenter 以及 NSX Manager 等组件加入 NSX 防火墙管理域中,假如规则设置错误则可能导致用户无法访问 vCenter 及 NSX,这时候就需要在 ESXi 底层进行修复。

本文介绍如何在 ESXi 底层清除相关 VM 上的规则。

清除原理介绍

在 NSX 防火墙架构下,每个 VM 的网卡都可以有自己的防火墙规则,这种架构可以非常精细的控制每个 VM 的流入流出流量。在 ESXi 底层,每个 VM 的网卡都会有一个 dvfilter,在此 filter 中会记录此 VM 上生效的防火墙规则。所以清除的办法是先找到对应 VM 的网卡 ID,然后再通过命令覆写该网卡上的规则,为了避免规则被 NSX 组件刷掉,需要预先停止 ESXi 和 NSX Manager 之间的通信。


恢复方式

停止 ESXi 和 NSX Manager 间的通信

找到相关 ESXi 主机。开启 SSH 服务,通过 SSH 登陆。

通过下列命令查看ESXi和NSX Manager的通信:

esxcli network ip connection list | grep 1234

如何在底层清除 NSX 防火墙规则_NSX-T

检查nsx-proxy 为running状态:

/etc/init.d/nsx-proxy status

如何在底层清除 NSX 防火墙规则_网络虚拟化_02

停止nsx-proxy服务:​

/etc/init.d/nsx-proxy stop

如何在底层清除 NSX 防火墙规则_网络虚拟化_03


再次检查连接,发现1234断开或TIME_WAIT

esxcli network ip connection list | grep 1234

如何在底层清除 NSX 防火墙规则_网络虚拟化_04

如何在底层清除 NSX 防火墙规则_VMware_05


查找相应 VM 的 ID 并清除规则

查找故障 VM 对应的 name 和 vmx 名称(一般 VM 名称和 vmx 等同,但如果用户后期改过 VM 名称,则两者会不一致,通常vmx 名称相对准确):

esxcli vm process list

如何在底层清除 NSX 防火墙规则_VMware_06


通过下列命令获取相应虚拟机的 vNIC name(napp-automation 为 vmx 名称前缀):

summarize-dvfilter | grep -A3 napp-automation

记录红色标记的值:

如何在底层清除 NSX 防火墙规则_SDN_07

通过下列命令查看网卡上的防火墙规则:

vsipioctl getrules -f nic-26729301-eth0-vmware-sfw.2

一般第一个ruleset 名为mainrs,记录此名称

如何在底层清除 NSX 防火墙规则_VMware_08

通过下列命令清除网卡上的防火墙规则:

vsipioctl vsipfwcli -Override -f nic-26729301-eth0-vmware-sfw.2 -c "create ruleset mainrs;"

如何在底层清除 NSX 防火墙规则_NSX-T_09

清除完毕后,再次检查网卡上的防火墙规则,发现 mainrs 下已经为空:

vsipioctl getrules -f nic-26729301-eth0-vmware-sfw.2

如何在底层清除 NSX 防火墙规则_SDN_10

修正 NSX 防火墙规则

清理完毕后,回到 NSX Manager界 面,修正相关的防火墙规则,然后在 ESXi 上启动 nsx-proxy 服务:​

/etc/init.d/nsx-proxy start

如何在底层清除 NSX 防火墙规则_SDN_11



举报

相关推荐

0 条评论