You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何为Podman rootless容器同时配置可用的内部与外部网络

可以同时实现rootless Podman容器的内部网络互通与外部网络访问,针对你使用的3.3.1版本,按以下步骤配置即可:

1. 调整宿主机内核参数

执行以下命令配置必要内核参数,永久生效:

# 开启IP转发
echo "net.ipv4.ip_forward = 1" >> /etc/sysctl.conf
# 放宽反向路径过滤
echo "net.ipv4.conf.all.rp_filter = 2" >> /etc/sysctl.conf
# 允许普通用户组容器发送ICMP ping包,替换范围为包含你的用户GID的区间
echo "net.ipv4.ping_group_range = 0 200000" >> /etc/sysctl.conf
# 加载配置
sysctl -p

2. 重建自定义容器网络

你当前的container-net未开启网关与地址伪装,导致出站请求无法转发,删除原有网络后用以下命令重建:

# 删除旧网络
podman network rm container-net
# 新建带网关、SNAT伪装、dnsname解析的网络
podman network create \
  --opt is_gateway=true \
  --opt masquerade=true \
  --opt dnsname.enabled=true \
  container-net

执行podman network inspect container-net确认返回结果中options字段包含上述配置即可。

3. 修正Pod与容器启动参数

加入Pod的容器默认共享Pod的网络命名空间,不需要在podman run时重复指定--network参数,冗余配置可能引发网络冲突:

  • 新建Pod的命令无需修改
  • 修正start-test.sh内容如下:
podman run --rm -it \
  --pod test-pod \
  --dns-search dns.podman \
  --name test-01 \
  --network-alias test-01 \
  docker.io/alpine /bin/sh

4. 放行防火墙规则

如果宿主机开启了firewalld服务,需放行容器网段的转发请求:

# 先查看container-net的网段,替换下方10.89.0.0/24为实际网段
firewall-cmd --add-source=10.89.0.0/24 --zone=trusted --permanent
firewall-cmd --reload

验证效果

按上述配置调整后,重新创建Pod并启动容器,此时:

  • 同网络下的容器可通过network-alias互相访问
  • 容器可正常ping通8.8.8.8等外部地址

内容的提问来源于stack exchange,提问作者Gerben Venekamp

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 23:06:06