是否可以从基于 Linux 的 Docker for Windows(WSL)容器内建立 L2TP/IPsec VPN 连接?

是否可以从基于 Linux 的 Docker for Windows(WSL)容器内建立 L2TP/IPsec VPN 连接?

我使用 Windows。

我的主要目标是能够打开只能通过企业 VPN 访问的企业网站,例如 GitLab。由于 Windows 不允许我指定要使用 VPN 连接哪些网站,因此我想到了使用代理程序代理到 Docker 容器中,该容器将运行所需的 VPN。这样就无需不断打开和关闭 VPN 连接来使用公司网站或个人网站(基本上是任何其他网站)。

因此,我尝试了多种基于 alpine/ubuntu 的图像变体,例如l2tp-ipsec-vpn 客户端,但它们都无法在 WSL(v1 或 v2)上运行;我想原因是它们都是专门为基于 Linux 的主机操作系统制作的。

在 Docker Desktop 上来回切换到 Windows 容器只是将开启和关闭的问题从一个地方移动到另一个地方,因为我的工作需要 Linux 容器。

因此我的问题是:如何在(最好是小型的)Linux 容器内设置传出的 L2TP/IPsec VPN 连接?

(这样我就可以设置一个小型代理服务器来代理从我的主机 Windows 操作系统到所述 VPN 服务器的连接)

答案1

正确答案是:“这取决于”

比如您使用的 VPN 是什么技术,以及 Docker 和 Internet 之间存在哪种 NAT(以及多少个)。

从经验上来说:

OpenVPN当连接经过运营商级 NAT 时,功能会受到限制,最值得注意的是,通过 UDP 包的 VPN 往往会被丢弃。

它通过 TCP 隧道与隧道一起工作,但是速度相当慢。

Strongswan(IPsec) 可以工作,尽管有报告 (*) 当每个人都必须在家工作并连接到公司网络且互联网连接位于运营商级 NAT 之后时,会出现连接中断的情况。

WireGuard也可以。它的速度非常快,甚至比 IPsec 还快,不过由于密钥管理的原因,当你有大量客户端时,它会变得难以管理。

其他 VPN 协议甚至可能无法与运营商级 NAT 一起使用,因为可能需要 WAN 端的客户端 IP - 例如,如果您想使用来自 Hurricane Electric 的隧道测试 IPv6。

在这些情况下,您需要采取一些措施才能使其发挥作用。

我还没有测试过Nebula mesh运营商级 NAT,但我对不受网络中集线器可用带宽限制的部分很感兴趣。

简而言之:

您需要决定如何使用 VPN,因为目的将限制您可以使用的协议。

(*): 我没有直接链接到来源,因此我认为它更多地是来自使用 IPsec 的 Microsoft VPN 的朋友的传闻。

相关内容