Pakete, die nicht von Linux Bridge weitergeleitet werden

439
M. Buil

Ich habe eine VM (VM1) mit einer Schnittstelle (Eth0). VM1 hat eine Linux-Bridge (br1), an die die Schnittstelle eth0 angeschlossen ist. Durch eth0 werden Pakete mit zwei verschiedenen IP-Bereichen ankommen (192.168.122.0/24 und 10.10.10.0/24). In der Tat hat br1 zwei IPS:

  • 192.168.122.2/24
  • 10.10.10.1/24

Die erste IP gehört zum mgmt-Netzwerk, über das das Gateway über das Gateway 192.168.122.1 erreichbar ist. Die zweite IP gehört zu einem virtuellen Netzwerk (10.10.10.0/24), bei dem VM1 das Gateway ist. Wenn ich von VM1 aus auf das Internet zugreifen möchte, ist die Route

Voreinstellung via 192.168.122.1 dev br1

und es funktioniert richtig.

Da diese VM das Gateway ist, habe ich eine "MASQUERADE" -Regel in iptables erstellt, sodass Pakete mit der Quell-IP 10.10.10.0/24 die Quell-IP von VM1 erhalten, um das Internet zu erreichen (192.168.122.2):

-POSTROUTING -s 10.10.10.0/24 -j MASQUERADE

Etwas funktioniert jedoch nicht gut. Wenn ich versuche, 8.8.8.8 von einer anderen VM mit IP zu pingen:

  • 10.10.10.16

Das sehe ich, wenn ich tcpdump in br1 mache:

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 

Und das sehe ich beim tcpdump in 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 

In eth0 kann ich die 'Echoantwort' sehen, die zu 192.168.122.2 geht, und dann in br1 kann ich sehen, dass die Ziel-IP aufgrund von MASQUERADE auf 10.10.10.16 geändert wurde. Ich sollte jedoch auch dieses Paket (Quelle: 8.8.8.8; Ziel 10.10.10.16) in eth0 sehen, da dies die Schnittstelle ist, die 10.10.10.16 erreicht, aber es ist nicht vorhanden. Mir scheint, als wenn br1 das Paket nicht an die eth0-Schnittstelle weiterleitet. Warum passiert das?

1 - Wenn ich 10.10.10.16 von VM1 ping, funktioniert es:

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 - Die MAC-Adresse von 10.10.10.16 lautet fa: 16: 3e: 8c: 0d: 68 und ich kann sie in der Mac-Tabelle von br1 sehen:

 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 
0

0 Antworten auf die Frage