首页 > 解决方案 > 如何在不使用 VPN 映像的情况下连接到 docker 中的 VPN?

问题描述

早上好!

我使用 check point mobile 连接到我的客户端 VPN,并且我在 docker 中有 2 个容器:mysql 和 karaf 都共享我使用命令创建的网络docker network create --subnet=vpnAddress mynet

--network=mynet我在运行容器时使用了该命令。

直到这里一切正常,我可以通过 putty ssh 连接到 karaf,安装 kar 并且所有捆绑包都可以。

但是当调用服务时,我意识到容器没有连接到 VPN,即使我用 VPN 地址创建了一个网络。我需要连接到 VPN 才能调用服务。

我使用检查点移动从外部(docker 外部)连接到 VPN,但我需要 docker 来添加/连接到 VPN。

我使用的是 Windows 10(使用带有 linux 容器的 docker),我也尝试去C:\ProgramData\DockerDesktop\tmp-d4w编辑文件host.docker.internal并将 IP 更改为我的 VPN 地址,但没有一个有效。

我搜索了很多,我看到人们在谈论诸如 nordVpn 或 openVpn 之类的 docker vpn 图像,但我不能使用它。

有人告诉我我需要将 vpn 网络添加到 docker,但是我在网络上是绿色的,我不知道该怎么做,而且我所做的没有用。

希望您能够帮助我。谢谢!

编辑:在 docker 引擎中我添加了"bip": "vpnAddress/24" 我现在意识到网桥现在使用 VPN 地址,尝试--network=bridge在 karaf 和 mysql 容器中,但现在 karaf 无法连接到 mysql,但是如果我使用默认值docker create network mynet并使用它运行 2 容器网络它可以工作,但这种方式的VPN没有运气。

标签: dockercontainersvpn

解决方案


我没有在 Windows 上使用过 Docker,但是快速浏览一些 VPN 容器会发现,至少在 *nix 中,它们用于--device /dev/net/tun --cap-add=NET_ADMIN将 VPN“设备”暴露给容器。其他容器然后使用 docker 网络或链接来连接到这个 VPN 容器 - 所以看看 VPN 容器是如何做的可能会有所帮助。

对 Mac 的一项建议似乎是像这样使用 extra_hosts

extra_hosts:
  - "vpn.company.com:172.21.1.1"

你也许可以用类似的东西破解它。(或物理添加172.21.1.1 vpn.company.com/etc/hosts容器中)。此外,检查Docker 守护程序和主机之间的IP 地址冲突。

Windows 文档似乎建议它们不支持将网络接口作为“设备”,因此您可能需要创建一个非常特定的 docker 网络或修改主机网络设置,首先让 Docker 守护进程识别 VPN 网络。

有关一些示例,请参阅配置高级网络部分。我会先尝试创建一个与 VPN 设备关联的网络,然后查看和 之类的--subnet标志 --gateway

docker network create -d transparent \
    -o com.docker.network.windowsshim.interface="Ethernet 2" TransparentNet2

这将创建一个具有特定子网和网关的网络,然后在该网络上运行一个具有静态分配 IP 的容器。

C:\> docker network create -d transparent \
    --subnet=10.123.174.0/23 \
    --gateway=10.123.174.1 MyTransparentNet

C:\> docker run -it --network=MyTransparentNet \
    --ip=10.123.174.105 windowsservercore cmd

祝你好运!


推荐阅读