Eu tenho um host Centos8 com libvirt (KVM) e podman (1.6) instalados.
libvirt trouxe uma ponte chamada "virbr0" e os convidados serão anexados a um endereço no intervalo 192.168.122.0/24. O próprio virbr0 tem 192.168.122.1. Os hóspedes podem conversar entre si, hospedar e acessar a Internet. Até agora nada de especial...
Além do libvirt, temos o podman que vem junto com o CNI que por sua vez fornece uma ponte chamada "cni-podman0" e cria uma rede com alcance 10.88.0.0/16.
Quando eu gero um contêiner (com net ns próprio), digamos uma instância do wordpress, consigo acessar esse serviço do host e de um convidado libvirt usando o endereço IP do contêiner, por exemploenrolar -L 10.88.0.10.
Mas, por outro lado, quando tento acessar um convidado libvirt de um contêiner podman, sempre recebo "curl: (7) Falha ao conectar-se à porta 192.168.122.14 8443: Conexão recusada". (<-Não, não é uma configuração de firewall esquecida)
Quando uso o tcpdump, posso ver que os pacotes não vão além da ponte de contêiner "cni-podman0". (Depois de duas "Retransmissões" ele desiste)
iptables parece normal para mim:
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" */
... se acertei, a última linha nos diz para capturar todo o tráfego destinado a alvos que não pertencem a um endereço multicast.
Por favor, alguém poderia me colocar de volta no caminho certo. Obrigado!