问题描述
想要在Docker的构建阶段通过活动的VPN连接(openconnect)或SSH隧道(sshuttle)路由Docker的网络流量,但尝试失败了。Docker创建了一个名为docker
的虚拟网络接口,似乎忽略了sshuttle添加的所有iptables规则。在VPN情况下,整个Docker进程在操作系统的流量被路由到VPN时会断开连接。
请注意,用户并不是试图将容器推到VPN后面。这个问题只发生在构建阶段。
解决方案
请注意以下操作注意版本差异及修改前做好备份。
方案1
Docker实际上在幕后操作iptables
,所以sshuttle
与Docker的交互可能是不可预测的。任何需要添加到影响docker
接口的IP Tables的规则都需要添加到DOCKER-USER
链中,具体操作请参考Docker和iptables。
这是一个比较复杂的主题,我建议你还可以阅读Docker网络的探索和Docker网络概述。
还有一个旧的StackOverflow问题,但根据评论,当前得票最高的答案已经不再适用。
方案2
使用脚本或工具来管理Docker的网络流量可能会增加复杂性,并且需要确保正确设置iptables规则。
另一种方法是编写脚本或使用工具来控制Docker的网络流量。你可以使用iptables
命令手动添加规则,或者使用一些第三方工具来管理Docker的网络流量。
请注意,这种方法可能会增加复杂性,并且需要确保正确设置iptables规则。
希望这些解决方案能帮助到你!如果你有任何其他问题,请随时提问。
正文完