如何在不使用 VPN 映像的情况下连接到 docker 中的 VPN?

Tia*_*ado 7 vpn containers docker

早上好!

我使用 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(使用 docker 和 linux 容器),我也尝试去C:\ProgramData\DockerDesktop\tmp-d4w编辑文件host.docker.internal并将 IP 更改为我的 VPN 地址,但没有任何效果。

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

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

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

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

Cur*_*oon 7

我没有在 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"
Run Code Online (Sandbox Code Playgroud)

你也许可以用类似的东西来破解它。(或物理添加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
Run Code Online (Sandbox Code Playgroud)

这将创建一个具有特定子网和网关的网络,然后在该网络上运行一个具有静态分配 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
Run Code Online (Sandbox Code Playgroud)

祝你好运!