Próbuję utworzyć reguły parowania IP-MAC w ebtables . Dostępnych jest kilka samouczków i powiązanych pytań [1], ale mam specyficzne ustawienie.
ŚRODOWISKO: Mam wielu fizycznych gospodarzy . Każdy host ma kilka kart Ethernet, połączonych w więź i używanych jako slave do mostu. Na każdym hoście znajduje się wiele maszyn wirtualnych (kvm, qemu, libvirt). Każda maszyna wirtualna jest podłączona do mostu swojego fizycznego hosta przez nowy port o nazwie vnet [0-9] +. Nie ma NAT. Praca w sieci działa dobrze, wszystkie fizyczne hosty mogą być pingowane, wszystkie maszyny wirtualne również. Każda maszyna wirtualna ma własny adres IP i adres MAC.
PROBLEM: W maszynie wirtualnej adres IP można zmienić na inny.
ZNALEZIONE ROZWIĄZANIE: Znane jest rozwiązanie na stronie ebtables [2], ale to rozwiązanie można zastosować, gdy używany jest tylko jeden host. Pozwala na cały ruch i jeśli istnieje pakiet z adresu IP z innym adresem MAC niż dozwolony, pakiet jest odrzucany. Jeśli istnieje więcej niż jeden host, wymaga zarejestrowania wszystkich istniejących par IP-MAC na wszystkich hostach. Istnieje potrzeba rozwiązania polityki odwrotnej.
ROZWIĄZANIE RĘCZNE: Próbowałem używać ebtabli w odwrócony sposób. Oto przykład, co próbowałem.
PRZYKŁAD 1
Bridge table: filter
Bridge chain: INPUT, entries: 2, policy: DROP
-i bond0 -j ACCEPT
-p IPv4 -s 54:52:0:98:d7:b6 --ip-src 192.168.11.122 -j ACCEPT
Bridge chain: FORWARD, entries: 0, policy: ACCEPT
Bridge chain: OUTPUT, entries: 0, policy: ACCEPT
PRZYKŁAD 2
Bridge table: filter
Bridge chain: INPUT, entries: 0, policy: ACCEPT
Bridge chain: FORWARD, entries: 1, policy: DROP
-p IPv4 -s 54:52:0:98:d7:b6 --ip-src 192.168.11.122 -j ACCEPT
Bridge chain: OUTPUT, entries: 0, policy: ACCEPT
Rdzeń tego, co chcę, to mieć domyślną DROP zasad i zezwalać tylko na ruch z maszyn wirtualnych z prawidłową parą IP-MAC wdrożoną na danym hoście. Jednak te rozwiązania nie działają.
PYTANIE: Jak zezwolić na ruch na moście tylko dla określonych par IP-MAC działających maszyn wirtualnych i usunąć wszystkie nieznane pary IP-MAC pochodzące z portów vnet [0-9] +?
Dziękuję bardzo za wszelkie odpowiedzi.