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!