如何使用podman为无根容器设置内部和外部网络



我正在尝试使用podman获得无根容器的网络工作。建立并运行外部网络或内部网络都不是问题。使用——network选项,容器可以看到彼此。然而ping 8.8.8.8不工作。启动不带——network或带——network=slirp4netns ping 8.8.8.8的容器都能正常工作。当然,在后一种情况下,没有内部网络。我认为这告诉我的是主机并没有阻止容器内部的外部访问。我所面临的问题是,我似乎无法同时在容器内获得内部和外部网络工作。

> podman network ls 
NETWORK ID    NAME           VERSION     PLUGINS
2f259bab93aa  podman         0.4.0       bridge,portmap,firewall,tuning
6129a34887d3  container-net  0.4.0       bridge,portmap,firewall,tuning,dnsname

我像这样启动容器:

podman pod create 
--network container-net 
--network-alias test-pod 
--hostname test-01 
--name test-pod

start-test.sh的内容:

podman run --rm -it 
--pod test-pod 
--network=container-net 
--dns-search dns.podman 
--name test-01 
--network-alias test-01 
docker.io/alpine /bin/sh
> ./start-test.sh 
/ # ping 8.8.8.8
PING 8.8.8.8 (8.8.8.8): 56 data bytes
^C
--- 8.8.8.8 ping statistics ---
5 packets transmitted, 0 packets received, 100% packet loss
> podman --version
podman version 3.3.1

我已经检查了selinux不是由测试:setenforce 0引起的。

是否有可能在容器内获得内部和外部网络工作,如果是这样,需要做什么?

我刚刚在RHEL 8上尝试了这个,我能够重现这个问题。我们也解决了问题(我认为)。试试以下命令:

sudo sysctl -w net.ipv4.ping_group_range= 0 2147483647">

您可能受到组范围和/etc/subgid/etc/subgid:

的限制https://man7.org/linux/man-pages/man7/icmp.7.html

我不确定长期的解决方案是什么,但如果这个工作,你可能会修复它与sysctl现在。

我遇到的问题与任何配置无关。事实证明,在删除了所有podman创建的网络,重新启动机器并重新创建我需要的网络之后,容器的行为与预期一样,即内部和外部网络都在工作。

相关内容

  • 没有找到相关文章