从另一个容器中通过OpenVPN客户端容器连接

3
我基于Alpine设置了一个OpenVPN客户端容器,它连接到一个OpenVPN服务器,但我不知道它在哪里。我的想法是,我想要从另一个容器中访问这个VPN网络中的服务器(我可以成功ping通openvpn容器),比如通过curl或ping访问该服务器。
我在Docker中设置了一个基本桥接,并将容器(包括OpenVPN客户端和尝试启动curl的bash)都连接到了这个桥接。
我有遗漏了什么吗?因为我无法访问任何连接到VPN的服务器。

这太令人困惑了,你有一个带有OpenVPN连接到OpenVPN服务器的容器,但你并没有用它来做那个? - ajankuv
1
是的,我希望其他容器可以通过安装了OpenVPN的一个容器连接。如果我有n个独立的应用程序(每个容器一个),需要相同的VPN连接,为什么我要在所有n个容器上都安装OpenVPN呢?这个问题对我来说似乎很合理,但我没有Docker实际使用经验。 - RonnieJ
2个回答

4

ajankuv的第二个解决方案可能更好,但是通过我在dperson/openvpn-client上找到的配置,我成功地从另一个容器中访问了openvpn网络。

docker openvpn客户端

docker run -it --privileged --name vpn --device /dev/net/tun <my_openvpn_image>

另一个容器是使用 --net=container:vpn 运行的。
docker run --rm --net=container:vpn --device /dev/net/tun byrnedo/alpine-curl <server_in_vpn>

现在我认为可能是我错误配置了Docker桥接


3

如果使用带有vpn连接的Docker容器,除非将主机上所有流量路由到该容器上,否则无法在主机上启用vpn。这可能可以通过一些高级路由表实现,但我建议不要这样做。

最好是让主机运行客户端,然后将docker容器的流量路由到它上面。这样更容易实现。

另一种选择是构建一个带有vpn的基础容器,然后向其中添加额外的服务,但本身并不好玩也不建议这样做。


2
明白了,谢谢!虽然没有声望可以点赞,但还是感谢! - RonnieJ
1
没问题,很高兴能够帮忙! - ajankuv

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接