如何在 docker 中不使用 VPN 映像连接到 VPN?

How can I connect to a VPN in docker not using VPN images?

早上好!

我使用 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 到 add/connect 到 VPN。

我正在使用 windows 10(将​​ docker 与 linux 容器一起使用),我也尝试转到 C:\ProgramData\DockerDesktop\tmp-d4w 并编辑文件 host.docker.internal 并且将 IP 更改为我的 VPN 地址,但 none 有效。

搜了很多,看到有人在说docker vpn images比如nordVpn或者openVpn,但是我不会用。

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

希望你能帮助我。谢谢!

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

处理这些事情的最佳方法是使用 Linux 容器并安装 VPN 并执行任何你想要的工作,然后将 Linux 容器推送到 docker 集线器以分享工作。 不要忘记添加有关如何从 Linux 容器中检索工作(您保存工作的位置)的文档。

我没有在 Windows 上使用 Docker,但快速浏览一些 VPN 容器表明,至少在 *nix 中,他们使用 --device /dev/net/tun --cap-add=NET_ADMIN 来公开 VPN “设备”到容器。其他容器然后使用 docker 网络或链接连接到此 VPN 容器 - 因此查看 VPN 容器的工作方式可能会有所帮助。

Mac 的一个建议似乎是 using extra_hosts 像这样:

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

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

Windows docs 似乎暗示他们不支持网络接口作为“设备”,因此您可能需要创建一个非常具体的 docker 网络或修改主机网络设置,首先获取Docker 识别 VPN 网络的守护进程。

有关示例,请参阅 Configure Advanced Networking 部分。我会先尝试创建一个与 VPN 设备关联的网络,然后查看 --subnet--gateway.

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

这将创建一个具有特定子网和网关的网络,然后在该网络上运行一个具有 statically-assigned 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

祝你好运!