在构建阶段通过VPN或SSH隧道转发Docker流量

40次阅读
没有评论

问题描述

想要在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规则。
希望这些解决方案能帮助到你!如果你有任何其他问题,请随时提问。

正文完