1

我正在尝试使用 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以及。

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

4

2 回答 2

1

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

于 2021-10-27T19:52:24.220 回答
0

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

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

您可能受到组范围和 /etc/subuid /etc/subgid 的限制:

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

我不确定长期解决方案是什么,但如果可行,您现在可以使用 sysctl 修复它。

于 2021-10-21T17:36:23.260 回答