通过docker连接到vpn的最佳实践

jQw*_*rdy 15 openvpn docker docker-compose

我们的一些应用程序依赖于连接到我们的VPN以连接到不同(尚未停靠的)解决方案.

这样做的"码头工作方式"是什么?在我看来,将OpenVPN添加到现有图像是违背了docker的理念.

我站在那里,我觉得创建一个docker VPN客户端容器是最有意义的.但那会是什么样子?我使用docker compose,所以肯定会有

myContainer
- links: myVPNClient
Run Code Online (Sandbox Code Playgroud)

但是我会不得不转发港口?或者通过 openVPN容器myContainer连接会发生什么.

Von*_*onC 16

另一个选择是问Jess Frazelle(jfrazelle),他习惯于把所有东西都集中起来.

果然,她有一个jfrazelle/dockerfiles/openvpn项目直接暴露给主持人:

vpn:
  build: .
  volumes:
    - .:/etc/openvpn
  net: host
  devices:
    - /dev/net/tun:/dev/net/tun
  cap_add:
    - NET_ADMIN
Run Code Online (Sandbox Code Playgroud)

它使用TUN(而不是TAP)接口.


lar*_*sks 5

可能最简单的解决方案是配置任何需要vpn才能使用vpn容器的网络名称空间的容器。也就是说,您的docker-compose.yml将包含以下内容:

vpn:
  image: myvpn_image

app1:
  image: app1_image
  net: container:vpn
Run Code Online (Sandbox Code Playgroud)

使用此配置,vpn容器和app1容器将看到相同的网络环境。