目录

让 Podman 容器具备访问 IPv6 网络的能力

由于 Podman 默认网络 podman 未启用 IPv6,因此默认情况下,容器仅具备访问 IPv4 网络的能力。

通过本文所述的方法可以让容器内运行的程序具备访问 IPv6 网络的能力。

0x00 系统需求

  • 宿主机(host)具备有效的IPv6地址,能够正常访问 IPv6 网络。
  • Podman 4.0+
  • Podman 网络堆栈已切换为 netavark 1
如何检查 Podman 当前正在使用何种网络堆栈?

执行 podman info | grep -i networkBackend

检查输出为 networkBackend: netavark,证明 Podman 当前正在使用的网络堆栈为 netavark 。

0x01 创建 IPv6 双栈网络

创建一个名称为 podnetv6 的用户定义网络,名称可以自定义,此处仅作示例。

podman network create --ipv6 podnetv6

0x02 将容器接入 IPv6 双栈网络

将网络连接至正在运行的容器。

podman network connect podnetv6 <CONTAINER NAME>
podman restart <CONTAINER NAME>

对于新运行的容器,可以直接使用 0x01 步中创建的 IPv6 双栈网络,而非默认的 IPv4 单栈网络 podamn

podman run --network podnetv6
注意

如需通过 IPv6 地址访问容器,建议在执行 podman network connectpodman run 时添加 --ip6 为容器分配静态IPv6地址。

分配的静态地址应当位于所连接的网络的网段内。不知道虚拟网络的网段信息?请执行 podman network inspect <NETWORK NAME>

Reference


  1. 将网络堆栈从 CNI 切换到 Netavark - Red Hat Customer Portal ↩︎