Как я могу запретить пользователю / клиенту виртуальной машины доступ к IP-адресам, которые ему не принадлежат, но которые маршрутизируются через тот же мост на KVM / Libvirt?
IP-адреса маршрутизируются на коммутатор cisco vLan, состоящий из / 24 254 используемых адресов, например. 105.100.1.0/24.
Вот пример настройки.
VM1 - 105.100.1.5
VM2 - 105.100.1.6
VM3 - 105.100.1.7
Как я могу предотвратить доступ VM1 к адресам, которые ему не принадлежат?
Вы не можете использовать защиту порта коммутатора на Cisco, поскольку все виртуальные машины будут использовать физический порт коммутатора. И вы не можете использовать Linux iptables
потому что трафик передается по мосту, а не маршрутизируется через машину с гипервизором. Но вы можете эмулировать безопасность порта коммутатора на гипервизоре с Linux. ebtables
, который является менее известным межсетевым экраном уровня 2/3 на мосте Linux. Быстрый и грязный пример (и, вероятно, неполный; я обычно не беспокоюсь об этом):
# 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