隔离网络和客户的最佳方法是什么? (kvm/qemu/libvirt)

What is the best way to isolate the networks and customers? (kvm/qemu/libvirt)

我想知道从同一服务器上其他网络中的其他访客 "protect" KVM guests/networks 的最佳方式是什么。

今天我有一台运行的专用服务器KVM/qemu/libvirt,对于每个客户我都有一个网络子网。例如: - Customer_A - 192.168.10.0/29 - Customer_B - 192.168.11.0/29

但是 Customer_A 可以 ping 一台机器进入 Customer_B 的网络,反之亦然。

为了尝试修复它,我在专用服务器中创建了一个防火墙并阻止了从一个网络到另一个网络的转发,但我的问题是,我可以使用例如 vlan 来避免一个网络与另一个网络通信吗?隔离网络和客户的最佳方法是什么?

谢谢。

Libvirt 有一个 'nwfilter' object 允许您定义一般防火墙规则并将它们与提供给来宾的各个 NIC 相关联。当 starting/stopping 来宾或 hotplugging/unplugging 来宾时,Libvirt 根据需要将这些转换为对 ebtables/iptables 的调用。因此,使用它可以让您更直接地在 libvirt 的上下文中管理防火墙规则。这可能是控制来宾之间访问的侵入性最小的方法,因为它不需要使用 vlan 之类的东西来分隔来宾。 Libvirt 提供了一个 "clean-traffic" nwfilter 定义示例,可以做 MAC & IP 地址欺骗保护。

要记住的一件事是,一些客户可能希望全世界都可以访问他们的虚拟机,无论连接的人是来自互联网上其他地方的用户,还是同一网络中另一个虚拟机上的用户主持人。例如,如果客户 A 正在托管一个面向 public 的网站,那么几乎没有理由阻止客户 B 连接到该网站。与使用 vlan 完全分离流量相比,使用防火墙规则在这方面可能会给您带来更大的灵活性。