我正在尝试设置一个firewall
容器,该容器仅允许使用iptables
通过特定IP地址的出站流量。我还有第二个容器(openvpn
),用于使用该IP设置OpenVPN。
防火墙容器位于自定义网络(使用docker network create <name>
创建)上,而openvpn容器使用--network container:firewall
。
防火墙设置似乎正常运行。出口流量仅在连接openvpn时有效。
我想添加一种在启动openvpn之前检查防火墙是否已配置的方法。我想我将使用nc -l -k -p 5000 localhost
在防火墙容器上启动一个套接字,并使用this wait-for script对其进行轮询。
问题是无论如何我都无法从另一个容器中响应该套接字。在firewall
容器上,nc -vz localhost 5000
连接良好。我以为,由于他们共享了网络堆栈,因此我也可以在nc -vz localhost 5000
容器上调用openvpn
,但这是行不通的。我尝试了容器在ifconfig
中显示的所有IP地址,并尝试不成功地将nc
绑定到接口(例如nc -l -k -p 5000
)上。
我是否误解了--network container:<name>
的工作方式,还是我还缺少其他东西?
我已经使用普通的ubuntu容器以及高山linux对它进行了测试。