具有公共 IPv6 的 podman 容器

具有公共 IPv6 的 podman 容器

我有一台具有 IPv4 地址和 IPv6 /64 子网(假设2001:db8::/64)的服务器,两者都是公共的。服务器本身具有以下 IPv6 地址:2001:db8::1/64。网关是fe80::1(这会导致 podman 出现问题,因为它不在同一子网中)。

我的目标是创建具有自己的公共 IPv6(假设)的 podman 容器(例如 WWW 服务器)2001:db8::2/64。据我了解,这样的设置需要 macvlan 网络。因此设置如下所示:

图片1

我设法使用桥接网络和以下命令部分完成了此设置:
sudo podman network create --subnet 2001:db8::/64 --ipv6 mynet
可以通过正确的 IP()从 Internet 访问此网络中的容器2001:db8::2,但其公共 IP(用于 http、ping 等)是错误的 - 它是2001:db8::1,这在使用桥接网络时完全可以理解。

当我尝试使用 macvlan 时,事情变得复杂了,第一个问题是需要设置为的网关fe80::1docker拒绝创建这样的网络,错误为“网关 fe80::1 没有匹配的子网”。podman使用以下命令成功创建网络:
sudo podman network create -d macvlan --subnet 2001:db8::/64 --gateway fe80::1 --ipv6 -o parent=eth0 mynet
不幸的是,此网络内的容器在任何方向上都没有任何连接,即使它指定了正确的 IP 和网关。

服务器在 Ubuntu 上运行,并在内核中启用 IP 路由。

如果您能提供任何关于如何进行此设置的建议,我们将不胜感激。谢谢。

答案1

已解决。看来前缀大小是关键。我一直在使用 /64,但当我将其更改为更长的前缀(如 /112)时,一切开始正常工作。此外,我不需要使用 macvlan,只需使用简单的桥接即可。

相关内容