如何防止 VM 用户/客户端访问不属于他但通过 KVM/Libvirt 上的同一座桥路由的 IP 地址?
IP 地址被路由到由 /24 254 个可用地址组成的思科交换机 vLan,例如 105.100.1.0/24。
以下是设置的一个示例。
VM1 - 105.100.1.5
VM2 - 105.100.1.6
VM3 - 105.100.1.7
我如何才能阻止 VM1 访问不属于他的地址?
答案1
您无法在 Cisco 上使用交换机端口安全性,因为所有虚拟机都将共享一个物理交换机端口。您也无法使用 Linux,iptables
因为流量是通过虚拟机管理程序计算机桥接而不是路由的。但是,您可以使用 Linux 模拟虚拟机管理程序上的交换机端口安全性ebtables
,Linux 是 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