清除原理介绍 在 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 1.
检查nsx-proxy 为running状态:
/etc/init.d/nsx-proxy status 1.
停止nsx-proxy服务:
/etc/init.d/nsx-proxy stop 1.
再次检查连接,发现1234断开或TIME_WAIT
esxcli network ip connection list | grep 1234 1.
查找相应 VM 的 ID 并清除规则 查找故障 VM 对应的 name 和 vmx 名称(一般 VM 名称和 vmx 等同,但如果用户后期改过 VM 名称,则两者会不一致,通常vmx 名称相对准确):
esxcli vm process list 1.
通过下列命令获取相应虚拟机的 vNIC name(napp-automation 为 vmx 名称前缀):
summarize-dvfilter | grep -A3 napp-automation 1. 记录红色标记的值:
通过下列命令查看网卡上的防火墙规则:
vsipioctl getrules -f nic-26729301-eth0-vmware-sfw.2 1. 一般第一个ruleset 名为mainrs,记录此名称
通过下列命令清除网卡上的防火墙规则:
vsipioctl vsipfwcli -Override -f nic-26729301-eth0-vmware-sfw.2 -c "create ruleset mainrs;" 1.
清除完毕后,再次检查网卡上的防火墙规则,发现 mainrs 下已经为空:
vsipioctl getrules -f nic-26729301-eth0-vmware-sfw.2 1.
修正 NSX 防火墙规则 清理完毕后,回到 NSX Manager界 面,修正相关的防火墙规则,然后在 ESXi 上启动 nsx-proxy 服务:
/etc/init.d/nsx-proxy start 1.
©著作权归作者所有:来自51CTO博客作者dyadin112的原创作品,请联系作者获取转载授权,否则将追究法律责任 如何在底层清除 NSX 防火墙规则 https://blog.51cto.com/sparkgo/5522487