带或不带 L2TP 的 IPSec?

cre*_*thy 3 networking vpn ipsec tunnel l2tp

我指的是这个问题。需要明确的是:这真的不是关于旧的 PPTP 与 L2TP 的辩论。;-)

我成功地将 racoon 设置为 IKE 服务器,而没有运行任何 L2TP 实现,并且运行良好。我可以建立一条从笔记本电脑到 VPN 服务器的隧道,并将其用作 Internet 网关。据我所知,所有 IP 数据包都被安全地封装。瞧,这就是我想要的一切。但是,哎呀,只有 OS X/iOS 支持这种开箱即用的“普通 IPSec”VPN,但我也需要支持其他平台。包括 Windows 和 Android 在内的所有其他操作系统似乎都需要使用 L2TP 使用 xl2tpd 等软件建立的额外 PPP 连接。我很好奇,所以我用 racoon+xl2tpd 再次设置并创建了一个 L2TP/IPSec 隧道。它的工作原理与没有 L2TP 时完全一样。

那么,使用 L2TP 有什么好处呢?是的,我可以通过隧道传输其他协议,例如 X.25,但绝大多数用户很少需要 IP 以外的任何协议。我可以假设为什么 MS 做的事情比 VPN 的东西更复杂。但至少我不明白为什么 Android 仍然需要这个 L2TP 层,在我看来这只会增加复杂性和开销。是的,我知道有额外的客户端软件可以克服操作系统限制。

即使使用身份验证,也没有区别:远程身份验证通常使用预共享密钥或证书完成,用户身份验证通过 XAuth 或 CHAP/PAP 完成。– Jep,我在这里简化了,但你知道我的意思。

有谁知道为什么 L2TP 仍然是 IPSec 的标准方式?我错过了什么吗?

cev*_*ing 5

一开始(很久以前,在 BSD IPsec 实现被集成到 Linux 内核之前)不可能通过 NAT 网关使用 IPsec VPN,因为不可能对 IPsec 进行 NAT。IPsec 是为 IPv6 开发的,它不再知道 NAT 并且将 IPsec 用于 IPv4 一直是某种黑客。对于使用 IPv4 的所谓公路战士来说,没有 NAT 是行不通的。让它在 90 年代工作的唯一方法是使用 L2TP,因为 L2TP 在 UDP 和 NAT 之上工作是可能的。Cisco 选择了这个解决方案并在他们的 VPN 集中器中实施了它。这是它成为“标准”的时候。并且为了与思科兼容,许多其他供应商实施了它。这就是 Apple 实施它以及 Android 也支持它的原因。

但是通过 IPsec 隧道隧道传输第 2 层以太网帧对于纯 IP 通信来说从来都不是一个好主意。在 90 年代,还有其他需要桥接的协议,例如 IPX,但现在每个人都说 IP。并且为了摆脱第 2 层帧开销,RFC 3948 提出了“IPsec ESP 数据包的 UDP 封装”。这也可以通过将 ESP 和 AH 协议放在 UDP 数据包中来工作,并且通过此 NAT 是可能的。但它避免了任何第 2 层帧。这是每个人都应该首先尝试的现代解决方案。使用 L2TP 是传统方式,它的存在只是为了向后兼容。