Filtrar o tráfego entre máquinas virtuais

Filtrar o tráfego entre máquinas virtuais

Eu tenho uma máquina com Fedora 21 que atua como sistema host para duas máquinas virtuais. As VMs são compostas usando QEMU/KVM/libvirt/virt-manager. Uma VM está executando um servidor web, a outra VM atua como cliente. O cliente pode visitar o servidor para que a rede funcione bem até agora. Acho que é gerenciado de alguma forma através da interface virbr0 na máquina host, que também atua como gateway padrão para as VMs.

Agora, na máquina host, quero filtrar o tráfego de rede das máquinas virtuais. Por exemplo, quero colocá-lo em uma fila do netfilter e aceitá-lo ou descartá-lo dependendo de determinadas circunstâncias. Uma regra exemplar do iptables éiptables -I FORWARD -i virbr0 -j NFQUEUE --queue-num 1

Em geral, parece funcionar porque quando deixo cair todos os pacotes que entram na fila, as VMs não conseguem mais visitar sites na Internet. Claro que não, o gateway padrão descarta os pacotes. Tudo bem até agora.

Mas não consigo parar o tráfego entre as duas VMs. Mesmo que eu descarte os pacotes, o Cliente consegue carregar a página oferecida pela VM do servidor web. Acho que isso ocorre porque a virtualização forma uma rede onde as duas VMs estão conectadas sem a necessidade de um gateway padrão.

Alguém pode me dizer como controlar o tráfego entre duas VMs via iptables e netfilter queue?

E quero fazer o filtro funcionar apenas na máquina host. E bloquear todo o tráfego não é intencional. Trata-se apenas de filtrar em determinadas circunstâncias. Portanto, a fila do netfilter.

informação relacionada