Zwei Brücken verbinden funktioniert nur in eine Richtung

Zwei Brücken verbinden funktioniert nur in eine Richtung

Ich habe einen Centos8-Host mit installiertem Libvirt (KVM) und Podman (1.6).

libvirt hat eine Brücke namens „virbr0“ erstellt und Gäste werden mit einer Adresse aus dem Bereich 192.168.122.0/24 verbunden. virbr0 selbst hat 192.168.122.1. Gäste können miteinander, mit dem Host und mit dem Internet kommunizieren. Soweit nichts Besonderes …

Neben libvirt haben wir Podman, das mit CNI geliefert wird, was wiederum eine Brücke namens „cni-podman0“ bereitstellt und ein Netzwerk mit dem Bereich 10.88.0.0/16 hochfährt.

Wenn ich einen Container (mit eigenem Net NS) erstelle, beispielsweise eine WordPress-Instanz, kann ich diesen Dienst vom Host und von einem Libvirt-Gast aus erreichen, indem ich beispielsweise die IP-Adresse des Containers verwende.locken -L 10.88.0.10.

Wenn ich andererseits versuche, einen Libvirt-Gast von einem Podman-Container aus zu erreichen, erhalte ich immer die Meldung „curl: (7) Verbindung zu 192.168.122.14 Port 8443 konnte nicht hergestellt werden: Verbindung abgelehnt“. (<- Nein, es handelt sich nicht um eine vergessene Firewall-Einstellung.)

Wenn ich tcpdump verwende, kann ich sehen, dass Pakete nicht weiter als bis zur Containerbrücke „cni-podman0“ gehen. (Nach zwei „Retransmissions“ gibt es auf)

iptables sieht für mich ganz normal aus:

iptables -nvL -t nat

Chain PREROUTING (policy ACCEPT 1540 packets, 192K bytes)
 pkts bytes target     prot opt in     out     source               destination         

Chain INPUT (policy ACCEPT 75 packets, 6929 bytes)
 pkts bytes target     prot opt in     out     source               destination         

Chain POSTROUTING (policy ACCEPT 1412 packets, 86218 bytes)
 pkts bytes target     prot opt in     out     source               destination         
    0     0 RETURN     all  --  *      *       192.168.122.0/24     224.0.0.0/24        
    0     0 RETURN     all  --  *      *       192.168.122.0/24     255.255.255.255     
    3   180 MASQUERADE  tcp  --  *      *       192.168.122.0/24    !192.168.122.0/24     masq ports: 1024-65535
    0     0 MASQUERADE  udp  --  *      *       192.168.122.0/24    !192.168.122.0/24     masq ports: 1024-65535
    0     0 MASQUERADE  all  --  *      *       192.168.122.0/24    !192.168.122.0/24    
    0     0 CNI-df70ac6052cc3121e6aed9de  all  --  *      *       10.88.0.16           0.0.0.0/0            /* name: "podman" id: "ae18985e3e1a0905bc04be8021bcacdd61436e682be24c08e2e53b0705baad33" */

Chain OUTPUT (policy ACCEPT 1412 packets, 86218 bytes)
 pkts bytes target     prot opt in     out     source               destination         

Chain CNI-df70ac6052cc3121e6aed9de (1 references)
 pkts bytes target     prot opt in     out     source               destination         
    0     0 ACCEPT     all  --  *      *       0.0.0.0/0            10.88.0.0/16         /* name: "podman" id: "ae18985e3e1a0905bc04be8021bcacdd61436e682be24c08e2e53b0705baad33" */
    0     0 MASQUERADE  all  --  *      *       0.0.0.0/0           !224.0.0.0/4          /* name: "podman" id: "ae18985e3e1a0905bc04be8021bcacdd61436e682be24c08e2e53b0705baad33" */

... wenn ich das richtig verstanden habe, sagt uns die letzte Zeile, dass wir den gesamten Datenverkehr abfangen sollen, der für Ziele bestimmt ist, die nicht zu einer Multicast-Adresse gehören.

Könnte mich bitte jemand wieder auf den richtigen Weg bringen? Danke!

verwandte Informationen