連接兩個橋樑只能在一個方向上起作用

連接兩個橋樑只能在一個方向上起作用

我有一台 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" */

……如果我正確的話,最後一行告訴我們捕獲不屬於多播位址的目標的所有流量。

請有人讓我回到正軌。謝謝你!

相關內容