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