Sto cercando di creare regole di associazione IP-MAC in ebtables . Sono disponibili alcuni tutorial e domande correlate [1] ma ho un tipo di impostazione specifica.
AMBIENTE: ho molti host fisici . Ogni host ha poche schede Ethernet, unite in bond e usate come slave per bridge. Esistono molte macchine virtuali su ciascun host (kvm, qemu, libvirt). Ogni macchina virtuale è connessa a un bridge del suo host fisico tramite una nuova porta chiamata vnet [0-9] +. Non c'è NAT. La rete funziona bene, è possibile eseguire il ping di tutti gli host fisici, anche di tutte le macchine virtuali. Ogni macchina virtuale ha il proprio indirizzo IP e indirizzo MAC.
PROBLEMA: all'interno di una macchina virtuale, l'indirizzo IP può essere cambiato in un altro.
TROVATA SOLUZIONE: esiste una soluzione nota sul sito ebtables [2], ma questa soluzione è applicabile quando viene utilizzato un solo host. Permette tutto il traffico e se esiste un pacchetto da IP con un MAC diverso da quello consentito, il pacchetto viene eliminato. Se sono presenti più host, è necessario che tutte le coppie IP-MAC esistenti siano registrate su tutti gli host. È necessaria una soluzione di politica inversa.
SOLUZIONE ARTIGIANALE: ho provato a usare ebtables in modo invertito. Ecco un esempio di quello che ho provato.
ESEMPIO 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
ESEMPIO 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
Il nucleo di ciò che voglio è avere il DROP di politica predefinito e consentire il traffico da macchine virtuali con una coppia IP-MAC corretta distribuita su un determinato host. Tuttavia, tali soluzioni non funzionano.
DOMANDA: Come consentire il traffico sul bridge solo per coppie IP-MAC specifiche di macchine virtuali in esecuzione e eliminare tutte le coppie IP-MAC sconosciute provenienti dalle porte vnet [0-9] +?
Grazie mille per qualsiasi risposta.