防止在KVM / libvirt中劫持IP

如何防止VM用户/客户端访问他不拥有的IP地址,但通过KVM / Libvirt上的同一个桥接器路由

IP地址被路由到由24个254个可用地址组成的Cisco交换机vLan。 105.100.1.0/24。

这是一个设置的例子。

VM1 - 105.100.1.5 VM2 - 105.100.1.6 VM3 - 105.100.1.7 

我怎样才能防止VM1访问他不拥有的地址?

您不能使用思科交换机端口安全性,因为所有虚拟机将共享一个物理交换机端口。 而且你不能使用Linux的iptables因为stream量正在桥接,而不是通过pipe理程序机器路由。 但是,您可以使用Linux ebtables模拟虚拟机pipe理程序上的交换机端口安全性,Linux ebtables是Linux桥上鲜为人知的2/3层防火墙。 一个快速和肮脏的例子(可能不完整,我一般不打扰):

 # First allow some obvious stuff; might need other things I forgot about ebtables -A FORWARD -p IPv4 -m ip --ip-source 0.0.0.0 -j ACCEPT ebtables -A FORWARD -p IPv6 -m ip6 --ip6-source :: -j ACCEPT # Prevent a source MAC address from using a wrong source IP ebtables -A FORWARD -p IPv4 -s 52:54:00:70:C1:99 -m ip --ip-source ! 192.0.2.5 -j DROP ebtables -A FORWARD -p IPv4 -s 52:54:00:A3:09:3F -m ip --ip-source ! 192.0.2.6 -j DROP ebtables -A FORWARD -p IPv4 -s 52:54:00:18:65:2A -m ip --ip-source ! 192.0.2.7 -j DROP