Problemas ao fazer proxy transparente para máquinas virtuais

Problemas ao fazer proxy transparente para máquinas virtuais

Primeiro aqui está a topologia básica:

  Internet
     |
  Gateway
     |
Workstation---eth0---virbr0
                       |
                       +-----+-----+
                       |     |     |
                      vm1   vm2   vm3 

Preciso testar um analisador de tráfego em execução na minha estação de trabalho, escutando em alguma porta (digamos 8990) na eth0.

A regra que eu quero é "qualquer pacote que sai do virbr0 e vai para qualquer lugar na porta 80 deve ir para a porta 8990 na eth0". Meu software em execução na porta 8990 faz sua própria verificação da confusão de pacotes NAT para enviar os pacotes depois de inspecioná-los.

Tenho batido a cabeça nisso, com diferentes variantes de:

iptables -t nat -A PREROUTING -i virbr0 -p tcp --dport 80 -j DNAT \
    --to 10.0.0.10:8990

E tentei o método mais genérico de usar a mangletabela com --set-markand ip rule add fwmark, mas não estou conseguindo.

Acho que o que está me confundindo é que tudo funciona na mesma caixa.

Obrigado por qualquer orientação.

Responder1

Acontece que esta questão é discutível. O Tcpdump mostra que a sub-rede das VMs, 192.168.122.0/24, nunca aparece na decisão de roteamento do kernel. Eu acho que o libvirtd faz seu próprio manuseio de rede antes de passar para a pilha de rede do kernel.

De volta à prancheta.

informação relacionada