我有一台 Centos8 主機,安裝了 libvirt (KVM) 和 podman (1.6)。
libvirt 帶來了一個名為「virbr0」的橋,來賓將被附加到 192.168.122.0/24 範圍內的位址。 virbr0 本身有 192.168.122.1。客人可以互相交談、與主人交談以及上網。到目前為止沒有什麼特別的...
除了 libvirt 之外,我們還有 CNI 附帶的 podman,它又提供了一個名為「cni-podman0」的橋並啟動範圍為 10.88.0.0/16 的網路。
當我產生一個容器(具有自己的網路 ns)時,比如說一個 wordpress 實例,我可以使用容器 IP 位址從主機和 libvirt 來賓存取此服務,例如捲曲-L 10.88.0.10。
但另一方面,當我嘗試從 podman 容器存取 libvirt guest 時,我總是收到「curl: (7) 無法連接到 192.168.122.14 連接埠 8443:連線被拒絕」。 (<-不,這不是忘記的防火牆設定)
當我使用 tcpdump 時,我可以看到資料包不會比容器橋“cni-podman0”更遠。 (兩次「重傳」後放棄)
iptables 對我來說看起來很正常:
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" */
……如果我正確的話,最後一行告訴我們捕獲不屬於多播位址的目標的所有流量。
請有人讓我回到正軌。謝謝你!