LXC 容器无法访问同一主机上的其他 LXC 容器

LXC 容器无法访问同一主机上的其他 LXC 容器

我有以下设置:带有两个 LXC 容器的 Proxmox 主机。LXC A:10.0.0.10 LXC B:10.0.0.30

在主机内部我可以做

wget 10.0.0.30

这很完美。但这在 LXC A 内部不起作用。我总是超时。我可以从 LXC A 执行 ping。

我的 vmbr0 配置如下:

auto vmbr0
iface vmbr0 inet static
        address 10.0.0.1/24
        bridge-ports none
        bridge-stp off
        bridge-fd 0
        post-up echo 1 > /proc/sys/net/ipv4/ip_forward
        post-up   iptables -t nat -A POSTROUTING -s '10.0.0.0/24' -o ens18 -j MASQUERADE
#       post-up   iptables -t raw -I PREROUTING -i fwbr+ -j CT --zone 1
        post-up   iptables -t nat -A PREROUTING -i ens18 -p tcp --dport 80 -j DNAT --to 10.0.0.10:80
        post-up   iptables -t nat -A PREROUTING -i ens18 -p tcp --dport 85 -j DNAT --to 10.0.0.10:81
        post-up   iptables -t nat -A PREROUTING -i ens18 -p tcp --dport 443 -j DNAT --to 10.0.0.10:443
#        post-up   iptables -t nat -A PREROUTING -i ens18 -p tcp --dport 10000 -j DNAT --to 10.0.0.10:>
        post-down iptables -t nat -D POSTROUTING -s '10.0.0.0/24' -o ens18 -j MASQUERADE

我应该从哪里开始调试这个问题?谢谢。

答案1

终于我找到了答案。确实就这么简单。

iptables -t nat -A PREROUTING -i ens18 -p tcp --dport 80 ! -s 10.0.0.0/24 -j DNAT --to 10.0.0.10:80

我必须补充一点:

! -s 10.0.0.0/24

之前,此规则适用于源自接口 ens18 的所有流量。来自端口 80 上的 ens18 的所有流量均转发到 10.0.0.10。由于 vmbr0 也连接到接口 ens18,因此始终应用此规则。

排除 IP 范围 10.0.0.0/24 内的流量后,现在可以实现直接连接!

相关内容