docker - 如何在不使用 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没有运气。
解决方案
我没有在 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
祝你好运!
推荐阅读
- sql - 如何将双引号 ID 转换为单引号 ID,以便在 postgres 中可查询?
- django - 物化模型select2搜索输入中的django-autocompelete-light不起作用
- azure - 获取 Azure AD B2C 策略的 SAML 元数据时出错 - AADB2C90022
- react-native - 如何使用 appium 在 react-native 项目中编辑文件
- ios - Firebase 查询结果 SWIFT 的奇怪行为
- java - RxJava2 成功总是调用两次
- spring - Spring Cache 处理 Cache-Control=no-cache
- ios - iOS 通用链接(在调试时)不起作用?
- css - 创建一个使用 100% 弹性表的“行高”的行尾“单元格”,而不考虑其他项目的弹性包装
- delphi - Delphi TEdit onClick - 启用并执行其他操作