我有一个具有IPv4地址和IPv6 /64子网(假设是2001:db8::/64)的服务器,这两个服务器都是公共的。服务器本身有以下IPv6地址:2001:db8::1/64。网关是fe80::1 (这会给podman带来问题,因为它不在同一个子网中)。
我的目标是使用自己的公共IPv6 (比方说2001:db8::2/64)创建podman容器(例如WWW服务器)。据我所知,这样的设置需要macvlan网络。因此,设置如下:

我使用网桥网络和下面的命令部分完成了这个设置:
sudo podman network create --subnet 2001:db8::/64 --ipv6 mynet
该网络中的容器可以通过正确的IP (2001:db8::2)从因特网访问,但它的公共IP (用于http、ping等)这是错误的-它是2001:db8::1,这是完全可以理解的,当使用桥网络。
当我尝试使用macvlan时,事情变得复杂起来,第一个问题是网关,它需要设置为fe80::1。docker拒绝创建这样的网络,错误是“网关fe80:1没有匹配子网”。podman使用以下命令成功地创建了网络:
sudo podman network create -d macvlan --subnet 2001:db8::/64 --gateway fe80::1 --ipv6 -o parent=eth0 mynet
不幸的是,这个网络中的容器没有任何方向的连接,即使它有正确的IP和网关指定。
服务器正在Ubuntu上工作,内核中启用了IP路由。
任何想法,如何这个设置可以作出将是非常感谢。谢谢。
发布于 2022-06-03 17:43:54
解决了。前缀大小似乎是一个关键。我一直在使用/64,但是当我改用较长的/112时,一切都开始工作了。此外,我不需要使用macvlan,只是简单的桥。
https://serverfault.com/questions/1102420
复制相似问题