运维开发网

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

运维开发网 https://www.qedev.com 2020-03-09 12:41 出处:网络 作者:运维开发网整理
我设置了一个 Linux服务器(VirtualBox VM) 在该服务器中,我运行一个包含两件事的Docker容器: >某个端口上具有Web界面的应用程序 >打开VPN客户端 我可以访问该应用程序(从我的主机,因为Linux是VM guest),一切正常,直到我连接VPN. VPN工作 – 流量通过它,但我不能再连接到我的应用程序(ERR_CONNECTION_TIMED_OUT). 所以我的目标
我设置了一个 Linux服务器(VirtualBox VM)

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

>某个端口上具有Web界面的应用程序

>打开VPN客户端

我可以访问该应用程序(从我的主机,因为Linux是VM guest),一切正常,直到我连接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>
您是否尝试在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

哪里:

X.X.X.X是docker的LAN地址

Y.Y.Y.0是docker的LAN的网络地址,例如192.168.1.0/24

ETH0是您的LAN接口

Z.Z.Z.Z是Lan网关,即您的路由器IP最有可能

请注意,这些命令在重新启动后无法生存.因此,如果您想保留它们,请使用“sleep 30”命令将它们放在/etc/rc.local中.

0

精彩评论

暂无评论...
验证码 换一张
取 消