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

我build立了一个Linux服务器(现在是VirtualBox VM)

在该服务器中,我运行一个包含两件事的Docker container

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

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

VPN的作品 – stream量通过它,但我无法连接到我的应用程序(ERR_CONNECTION_TIMED_OUT)。

所以我的目标是:

  • 在Docker容器中有一台服务器,所有stream量都通过VPN
  • 能够访问我的本地networking中的服务器/容器(就像我现在在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> 

你有没有尝试在docker里创build一个路由?

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

 ip rule add from XXXX table 128 ip route add table 128 to yyy0/24 dev eth0 ip route add table 128 default via ZZZZ 

其中:XXXX是泊坞窗的局域网地址

YYY0是docker的LAN的networking地址,例如192.168.1.0/24

ETH0是您的LAN接口

ZZZZ是局域网的网关,即最有可能的路由器IP

请注意,这些命令无法在重新启动后存活。 所以,如果你想保留它们,把它们放在/etc/rc.local中,用“sleep 30”命令。