连接两座桥梁仅在一个方向上起作用

连接两座桥梁仅在一个方向上起作用

我有一台 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 客户机访问此服务,例如curl -L 10.88.0.10

但另一方面,当我尝试从 podman 容器访问 libvirt 客户机时,我总是收到“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" */

...如果我理解正确的话,最后一行告诉我们要拦截所有不属于多播地址的目标的流量。

请有人能让我回到正轨吗?谢谢!

相关内容