Ich versuche, IP-MAC- Pairing-Regeln in ebtables zu erstellen . Es gibt nur wenige Tutorials und verwandte Fragen [1], aber ich habe eine bestimmte Einstellung.
UMWELT: Ich habe viele physische Gastgeber . Jeder Host verfügt über wenige Ethernet-Karten, die verbunden und als Slave für die Bridge verwendet werden. Auf jedem Host befinden sich viele virtuelle Maschinen (kvm, qemu, libvirt). Jede virtuelle Maschine ist über einen neuen Port namens vnet [0-9] + mit einer Bridge ihres physischen Hosts verbunden. Es gibt kein NAT. Das Netzwerk funktioniert einwandfrei, alle physischen Hosts können gepingt werden, auch alle virtuellen Maschinen. Jede virtuelle Maschine hat ihre eigene IP-Adresse und MAC-Adresse.
PROBLEM: Innerhalb einer virtuellen Maschine kann die IP-Adresse in eine andere geändert werden.
GEFUNDENE LÖSUNG: Es gibt eine bekannte Lösung auf der ebtables-Site [2], aber diese Lösung ist anwendbar, wenn nur ein Host verwendet wird. Es erlaubt den gesamten Datenverkehr und wenn ein Paket von IP mit einem anderen MAC als zulässig vorhanden ist, wird das Paket verworfen. Wenn mehr als ein Host vorhanden ist, müssen alle vorhandenen IP-MAC-Paare auf allen Hosts registriert sein. Es ist eine umgekehrte Richtlinienlösung erforderlich.
CRAFTED SOLUTION: Ich habe versucht, ebtables invertiert zu verwenden. Hier ist ein Beispiel, was ich versucht habe.
BEISPIEL 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
BEISPIEL 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
Der Kern meiner Anforderungen besteht darin, die Standardrichtlinie DROP zu verwenden und nur Datenverkehr von virtuellen Maschinen mit dem richtigen IP-MAC-Paar zuzulassen, das auf einem bestimmten Host bereitgestellt wird. Diese Lösungen funktionieren jedoch nicht.
FRAGE: Wie kann ich den Datenverkehr auf der Bridge nur für bestimmte IP-MAC-Paare laufender virtueller Maschinen zulassen und alle unbekannten IP-MAC-Paare löschen, die von den Ports vnet [0-9] + kommen?
Vielen Dank für alle Antworten.