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 mangle
tabela com
--set-mark
and 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.