Pacotes não encaminhados pela ponte linux

0

Eu tenho uma VM (VM1) com uma interface (eth0). A VM1 tem uma ponte linux (br1) e a interface eth0 está conectada a ela. Através do eth0, pacotes com dois intervalos de ip diferentes chegam (192.168.122.0/24 e 10.10.10.0/24). Na verdade, br1 tem dois ips:

  • 192.168.122.2/24
  • 10.10.10.1/24

O primeiro ip pertence à rede mgmt que permite acessar a internet através do gateway 192.168.122.1. O segundo ip pertence a uma rede virtual (10.10.10.0/24) onde a VM1 é o gateway. Se eu quiser acessar a internet da VM1, a rota é

default via 192.168.122.1 dev br1

e funciona corretamente.

Como esta VM é o gateway, criei uma regra "MASQUERADE" no iptables para que os pacotes com o IP de origem 10.10.10.0/24 obtenham o IP de origem da VM1 para acessar a Internet (192.168.122.2):

-A POSTROUTING -s 10.10.10.0/24 -j MASQUERADE

No entanto, algo não funciona bem. Quando tento executar o ping 8.8.8.8 de outra VM com IP:

  • 10.10.10.16

Isso é o que eu vejo ao fazer o tcpdump em br1:

08:56:19.498107 IP 10.10.10.16 > 8.8.8.8: ICMP echo request, id 58113, seq 0, length 64
08:56:19.498265 IP 192.168.122.2 > 8.8.8.8: ICMP echo request, id 58113, seq 0, length 64
08:56:19.509490 IP 8.8.8.8 > 10.10.10.16: ICMP echo reply, id 58113, seq 0, length 64

E isso é o que eu vejo ao fazer o tcpdump em eth0:

08:57:19.331692 IP 10.10.10.16 > 8.8.8.8: ICMP echo request, id 58369, seq 0, length 64
08:57:19.331804 IP 192.168.122.2 > 8.8.8.8: ICMP echo request, id 58369, seq 0, length 64
08:57:19.343085 IP 8.8.8.8 > 192.168.122.2: ICMP echo reply, id 58369, seq 0, length 64

No eth0 eu posso ver o 'echo reply' indo para 192.168.122.2 e então no br1, eu posso ver que, devido ao MASQUERADE, o ip do destino mudou para 10.10.10.16. No entanto, eu também deveria ver esse pacote (fonte: 8.8.8.8; destino 10.10.10.16) em eth0, já que é a interface para alcançar 10.10.10.16, mas não está lá. Parece-me como se br1 não está encaminhando o pacote para a interface eth0, por que isso está acontecendo?

1 - Observe que, se eu fizer ping de 10.10.10.16 da VM1, ele funcionará:

09:01:54.502894 IP 10.10.10.1 > 10.10.10.16: ICMP echo request, id 26878, seq 1, length 64
09:01:54.503829 IP 10.10.10.16 > 10.10.10.1: ICMP echo reply, id 26878, seq 1, length 64

2 - O endereço mac de 10.10.10.16 é fa: 16: 3e: 8c: 0d: 68 e eu posso vê-lo na tabela mac de br1:

  port no   mac addr  is local? ageing timer
  2 52:54:00:33:82:d0   yes        0.00
  2 52:54:00:33:82:d0   yes        0.00
  2 52:54:00:bd:6b:e5   no         0.00
  2 fa:16:3e:8c:0d:68   no        19.47
  2 fe:54:00:33:82:d0   no         1.20
    
por M. Buil 08.10.2018 / 11:11

0 respostas