目标
- 设置启动多个容器的虚拟网络
- 每个容器都应该可以通过其 IP 从主机网络访问
- 容器无根运行(旨在从 CI 运行器运行测试网络)
- 可以运行特定
iptables
命令,sudo
允许对虚拟网络进行必要的转发
我避免使用已发布端口的原因是,我希望虚拟网络类似于“现实”,其中大量服务将在单独的硬件上运行,并且它们将使用不同的 IP 这一事实对协调服务很重要。
我的方法
$ podman network create --subnet 10.10.10.0/24 virtnet1
$ ( export DBUS_SESSION_BUS_ADDRESS=; podman run --rm -d --name nmt --network virtnet1 praqma/network-multitool )
(此DBUS
hack 是针对这个问题)
如果我现在看看,iptables -L
我看到了锁链CNI-FORWARD
,我天真地以为一个简单的
sudo iptables -A CNI-FORWARD -d 10.10.10.0/24 -j ACCEPT
能够从主机网络访问容器。但它们仍然看起来严格分开且无法访问。(链默认FORWARD
有策略,因此没有问题。)ACCEPT
这从根本上来说是不可能的吗(我还没有找到任何这样的例子),还是我做错了什么?
这些CNI-*
链是否与任何先前的有根容器有关,因为从逻辑上讲无根容器无法影响任何iptables
相关的东西?