Estou tentando criar regras de emparelhamento IP-MAC no ebtables . Existem alguns tutoriais e perguntas relacionadas [1] disponíveis, mas eu tenho um tipo de configuração específica.
AMBIENTE: Eu tenho muitos hosts físicos . Cada host possui poucas placas Ethernet, unidas em vínculo e usadas como escravo para bridge. Existem muitas máquinas virtuais em cada host (kvm, qemu, libvirt). Cada máquina virtual é conectada a uma ponte de seu host físico por meio de uma nova porta chamada vnet [0-9] +. Não há NAT. A rede funciona bem, todos os hosts físicos podem ser sibilados, todas as máquinas virtuais também. Cada máquina virtual possui seu próprio endereço IP e endereço MAC.
PROBLEMA: dentro de uma máquina virtual, o endereço IP pode ser alterado para outro.
SOLUÇÃO ENCONTRADA: Existe uma solução conhecida no site ebtables [2], mas essa solução é aplicável quando apenas um host é usado. Ele permite todo o tráfego e, se houver um pacote do IP com outro MAC além do permitido, o pacote será descartado. Se houver mais de um host, será necessário registrar todos os pares IP-MAC existentes em todos os hosts. Há necessidade de solução de política reversa.
SOLUÇÃO ARTESANAL: Tentei usar ebtables de maneira invertida. Aqui está um exemplo do que eu tentei.
EXEMPLO 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
EXEMPLO 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
O principal do que eu quero é ter a política padrão DROP e permitir apenas o tráfego de máquinas virtuais com o par IP-MAC correto implantado em um determinado host. No entanto, essas soluções não funcionam.
PERGUNTA: Como permitir tráfego na ponte apenas para pares IP-MAC especificados de máquinas virtuais em execução e eliminar todos os pares IP-MAC desconhecidos provenientes das portas vnet [0-9] +?
Muito obrigado por todas as respostas.