我正在运行 rootless podman(podman 版本 4.3.1)。我无法让 IPv6 正常工作。
设置
我/etc/containers/containers.conf
已经设置了:
network_cmd_options = [
"port_handler=slirp4netns",
"enable_ipv6=true"
]
network_backend = "netavark"
接下来我用 重置了 podman podman system reset
。然后我用 定义了一个网络podman netowrk create --ipv6 mytestnetwork
。
我现在用 创建一个 pod 。最后,我在podpodman pod create --name mytestpod --publish 8080:80 --network mytestnetwork
中用 创建一个 nginx 容器。我在容器中设置了以下 nginx.conf:mytestpod
podman run --name test-web --pod mytestpod -d docker.io/library/nginx
server {
listen [::]:80;
location / {
proxy_pass http://[some:ipv6:address]:1234;
}
}
问题
我无法连接到 Nginx 容器,因为它正在监听 IPv6。如果我添加行listen 80
(用于 IPv4),那么我可以连接,但显然不会proxy_pass
起作用,因为那是 IPv6。我已确保 nftables 没有阻止连接的规则。ss -tlp
报告rootlessport
正在监听 Nginx 端口。
我意识到我可以将我的所有 Pod 放在主机网络上,但我有很多容器和 Pod,我真的想使用端口映射并进行一些网络隔离。我已经在这个问题上呆了一个多星期,我反复阅读了 podman 文档和 Redhat 博客,但都无济于事。任何帮助或建议都非常感谢!