访问连接到 VPN 的 Docker 容器中的服务

访问连接到 VPN 的 Docker 容器中的服务

我设置了一个 Linux 服务器(目前是 VirtualBox VM)

在该服务器中我运行了Docker container包含两件事的东西:

  • 某个端口上有 Web 界面的应用程序
  • 打开VPN客户端

我可以访问该应用程序(从我的主机,因为 Linux 是 VM 客户机),并且一切正常,直到我连接 VPN。

VPN 可以运行 - 流量可以通过它,但我无法再连接到我的应用程序 (ERR_CONNECTION_TIMED_OUT)。

我的目标是:

  • 在 Docker 容器中有一个服务器,所有流量都通过 VPN
  • 能够在我的本地网络中访问该服务器/容器(就像我现在在未连接 VPN 时所做的那样)

我怎样才能实现它?

我的 .ovpn 文件如下所示

client
auth-user-pass
ping 5
dev tun
resolv-retry infinite
nobind
persist-key
persist-tun
ns-cert-type server
verb 3
route-metric 1
proto udp
ping-exit 30
cipher AES-256-CBC

// cetrificate here

remote <remote-host-ip>

答案1

您是否尝试过在docker内部创建路由?

尝试通过命令行添加这些:

ip rule add from X.X.X.X table 128
ip route add table 128 to y.y.y.0/24 dev eth0
ip route add table 128 default via Z.Z.Z.Z

其中:XXXX是docker的LAN地址

YYY0 是 docker 局域网的网络地址,例如 192.168.1.0/24

ETH0 是你的 LAN 接口

ZZZZ 是 Lan 网关,即您的路由器 IP 很可能

请注意,这些命令在重启后将失效。因此,如果您想保留它们,请使用“sleep 30”命令将它们放入 /etc/rc.local。

相关内容