我有一个 OpenVPN 服务器运行,暴露了一些私有 IP 地址,我希望我的 docker swarm 服务访问这些地址。
理想情况下,容器“内部”不会有 OpenVPN 客户端,因为图像预计将部署在不需要 VPN 的环境中。
到目前为止我尝试过的
我使用dperson/openvpn-client映像成功地将容器连接到我的 VPN 。
我使用该--net=container:my-vpn-client
标志成功启动了使用该容器作为其网络的另一个容器。
现在我正在尝试设置一个docker 服务来访问我的私有 IP 地址,我发现的是:
cap-add: NET_ADMIN
。Docker 在讨论这个问题时有一些悬而未决的问题,但它们仍然是悬而未决的。network_mode: "container:my-vpn-client"
因为它不受支持并且确实有意义,因为我不可能强制在每个节点上都存在一个任意容器swarm 而不是服务本身。所以我在这里,有什么想法吗?
PS 如果有帮助,这主要是设置一些自动化测试,这些测试将在单个 docker 机器上以 swarm 模式运行服务,如 swarm init > stack deploy > run tests > swarm leave。所以如果有一个“黑客”......我可能会感兴趣;)
我做同样的事情,在你的 openvpn docker 客户端上你需要配置 NAT
iptables -t nat -A POSTROUTING -s 172.18.0.0/24 -o tun0 -j SNAT --to-source 10.8.0.10
iptables -t nat -A POSTROUTING -d 172.18.0.50/32 -o eth1 -j SNAT --to-source 172.18.0.100
Run Code Online (Sandbox Code Playgroud)
对我来说,我将其设置为通过 iptables-restore 在启动时运行
在 docker 主机上,将以下内容添加到 /etc/network/interfaces
post-up ip rule add from 172.18.0.0/16 table 200
post-up ip route add 192.168.11.222 via 172.18.0.100 table 200
Run Code Online (Sandbox Code Playgroud)
注意这就是你在哪里使用的
归档时间: |
|
查看次数: |
2885 次 |
最近记录: |