我一直在考虑设置自己的 VPS 并运行 VPN 服务器。大多数情况下,当用户谈论在 Linux 上设置 VPN 时,OpenVPN 就会被抛出,但这项技术似乎有点与其他标准 VPN 技术相比,需要特殊的客户端软件等。不那么热门,恕我直言。
由于与一组异构客户端(macOS、Android、iPhone、Windows、Linux)的兼容性,我正在考虑设置一个 IPSec 服务器,可能是OpenSWAN 。所以这是否有意义取决于我对一个基本前提的理解:IPSec+L2TP 是否是我可以合理地期望被大多数操作系统理解/支持的标准?
不,它只是某种事实上的标准,因为 Microsoft Windows 附带了它。
不总是。一方面,核心连接协议至少有两个版本,IKEv1 和 IKEv2。现代 IPsec 守护进程(strongSwan、LibreSwan)两者都支持——但例如 Raccoon 从未完全针对 IKEv2 进行更新,OpenBSD 为这两个版本提供了两个独立的服务(isakmpd 和 iked),等等。
两个对等点可能不一定支持相同的认证机制,例如 PSK 但不支持公钥;XAuth 但不是 EAP;公钥但不是 X.509 证书;等等。
以上适用于手动/静态隧道配置。如果您正在设置“客户端”VPN(使用用户帐户、自动 IP 配置等),那么一切都会变得更加复杂,因为 IKEv1 根本没有内置该功能——它是为静态配置而设计的——因此各种供应商都在扩展它以他们自己的方式。
例如,思科“IPSec VPN”在技术上是 IKEv1,但使用自定义的“Xauth”用户名和密码验证方法,以及思科扩展来提供客户端的 IP 地址和其他网络参数。
后来,许多这些扩展被采用为 IKEv2 的内置功能,因此现在可以拥有一个完全基于标准的“IKEv2 VPN”而无需任何插件。
同时,微软的“IPSec/L2TP VPN”也是 IKEv1,但在 VPN 连接中增加了一个额外的层,在 IKEv1 的常规“主机”身份验证之上使用(我相信)一种 PPP 形式的用户身份验证。
这三个是完全不兼容的:您不能使用 Cisco 客户端连接到 IPSec/L2TP 服务器,反之亦然。而且您不能使用其中任何一个连接到 IKEv2 VPN。
至少大多数这样的“特殊客户端软件”往往更加一致......即使您只使用IPsec,您仍然会发现自己需要一个应用程序,因为一些内置客户端是一个主要的痛苦。
(例如,Android 声称支持 Cisco-IKEv1,但我永远无法让它工作,更不用说它在后台使用了相当过时的软件——所以我改用 strongSwan 应用程序。
同样,Windows 10 现在有一个内置的 IKEv2 VPN 客户端,因此您可以使用它而不是 L2TP……但它忽略了服务器提供的一半设置。)