我指的是这个问题。需要明确的是:这实际上与旧的 PPTP 与 L2TP 之争无关。;-)
我成功地将 racoon 设置为 IKE 服务器,无需运行任何 L2TP 实现,而且它运行良好。我可以从笔记本电脑到 VPN 服务器建立隧道,并将其用作互联网网关。据我所知,所有 IP 数据包都经过了安全封装。瞧,这就是我想要的一切。但是,哎呀,只有 OS X/iOS 支持这种开箱即用的“普通 IPSec”VPN,但我还需要支持其他平台。包括 Windows 和 Android 在内的所有其他操作系统似乎都需要使用 xl2tpd 等软件通过 L2TP 建立的额外 PPP 连接。我很好奇,所以我再次使用 racoon+xl2tpd 进行设置,并创建了 L2TP/IPSec 隧道。它的工作方式与没有 L2TP 时完全一样。
那么,使用 L2TP 到底有什么好处呢?是的,我可以使用其他协议(如 X.25),但绝大多数用户很少需要使用除 IP 之外的任何协议。我可以假设 MS 将其做得比 VPN 更复杂的原因。但至少我无法理解为什么 Android 仍然需要这个 L2TP 层,在我看来,这只会增加复杂性和开销。是的,我知道有额外的客户端软件可以克服操作系统的限制。
即使经过身份验证,也没有区别:远程身份验证通常使用预共享密钥或证书完成,而用户身份验证则通过 XAuth 或 CHAP/PAP 完成。– Jep,我在这里简化了,但你知道我的意思。
有人知道为什么 L2TP 仍然是 IPSec 的标准方式吗?我遗漏了什么吗?
答案1
Android 4.0 及以上版本支持开箱即用的普通 IPsec。4.x 版有多个应用可在未 root 设备上提供其他 VPN 协议(例如,IKEv2/IPsec 和strongSwan VPN客户端)。
从 Windows 7 开始,您可以使用内置的 IKEv2/IPsec 客户端。当然,racoon 不支持 IKEv2,但也有其他开源实现支持(例如坚强的天鹅或者利布雷斯万)。
有人知道为什么 L2TP 仍然是 IPSec 的标准方式吗?
我不会说这是标准方式,例如 Windows 7 及更新版本首先尝试 IKEv2,但我同意客户端仍然非常突出地提供它。
它最初取得成功的原因之一可能是它允许重用拨号连接的 PPP 基础结构(同时比 PPTP 更安全、更标准化)。而且由于 L2TP 安装已经存在很长时间,并且部署得相当广泛,几乎所有客户端都支持它(现在仍然支持)。这当然使 VPN 提供商更容易,因为他们可以减少提供的 VPN 技术的数量。然而,这降低了在客户端中实施其他协议的动机。
还可能存在许可问题,阻止使用其他协议,例如,上面提到的 IKEv2 实现是 GPL 许可的,而 iOS 中的 Apple 和 Android 中的 Google 倾向于避免使用 GPL,而倾向于使用许可更宽松的软件,例如 racoon(他们都在其产品中使用)。
答案2
一开始(早在 BSD IPsec 实现被集成到 Linux 内核之前),无法通过 NAT 网关使用 IPsec VPN,因为无法对 IPsec 进行 NAT。IPsec 是为 IPv6 开发的,IPv6 不再支持 NAT,而将 IPsec 用于 IPv4 一直是一种黑客行为。对于使用 IPv4 的所谓公路战士来说,没有 NAT 是行不通的。在 90 年代,让它工作的唯一方法是使用 L2TP,因为 L2TP 在 UDP 之上工作,并且 NAT 是可能的。思科采用了这个解决方案,并在他们的 VPN 集中器中实现了它。这时它成为了一个“标准”。为了与思科兼容,许多其他供应商也实现了它。这就是苹果实现它以及 Android 也支持它的原因。
但是,对于仅使用 IP 的通信来说,通过 IPsec 隧道传输第 2 层以太网帧从来都不是一个好主意。在 90 年代,还有其他需要桥接的协议,如 IPX,但现在每个人都使用 IP。为了摆脱第 2 层帧开销,RFC 3948 提出了“IPsec ESP 数据包的 UDP 封装”。这也通过将 ESP 和 AH 协议放入 UDP 数据包中来实现,这样就可以实现 NAT。但它避免了任何第 2 层帧。这是每个人都应该首先尝试的现代解决方案。使用 L2TP 是传统方式,它的存在只是为了向后兼容。