拓扑:
Client -> Client Router -> CLOUD <- Server Router <- Server
10.0.1.5 10.0.1.1 <-NAT-> 100.1.1.1 200.1.1.1 <-NAT-> 192.168.1.1 192.168.1.100
- 我可以控制服务器路由器。它有多个可路由的公共 IP 地址 - 比方说 200.1.1.1 到 200.1.1.6。
- 服务器路由器为它后面的所有机器提供 NAT。IPsec 服务器正在 NAT 网络上的其中一台机器上运行,地址为 192.168.1.100。我已将该路由器配置为将所有到达 200.1.1.2 的流量转发到位于 192.168.1.100 的服务器。客户端将连接到 200.1.1.2。
- 服务器路由器是一个设备,因此它不能运行 IPsec 服务器本身。
- 服务器本身认为它的 IP 地址是 192.168.1.100,但正如我所说,它可以在 200.1.1.2 访问。路由器仅在目标 IP 上转发,因此 IKE/ISAKMP/etc 数据包应该能够从路由器直接转发到服务器。
- 不可能将 VPN 服务器移动到它可以直接了解其公共可路由 IP 的配置中。(即它不能移动,因此它的网络接口直接连接到 Internet,但必须保留在 NAT 后面,并将流量转发给它。)
- 我无法控制客户端路由器。它将所有客户端置于 NAT 之后。它确实启用了 IPsec VPN Passthrough。
- 我可能会使用 L2TP 来完成这项工作,但如果可能的话,我更愿意使用纯 IPsec。
为了消除我完全无能为力的机会,我对IPsec的理解如下:
- IPsec/L2TP VPN 在两个端点之间建立 IPsec 隧道。然后它通过该隧道传递 L2TP 流量。L2TP 流量未加密,因此 IPsec 用作加密方法,而 L2TP 用作“VPN”。
- 纯 IPsec VPN 将直接通过 IPsec 隧道传输 IP 数据包。客户端机器可以通过隧道执行标准的 DHCP 请求,从远端的 DHCP 服务器接收 IP 地址,然后通过 IPsec 隧道传输原始 IP 数据包,如果客户端设备直接连接到远端,它们将出现局域网。
- 在 L2TP/IPsec 中,L2TP 服务器处理 IP 地址分配;在纯 IPsec 中,就像您将 LAN 电缆插入远程 LAN 一样,因此您可以连接任何基础设施。
如果我错了,请纠正。
所以我的问题是:
- 有什么阻止我在这个拓扑中做一个纯 IPsec VPN 的吗?
- 我正在使用 Linux,并且将使用 IPsec 服务器的 Swan 系列(可能是Strongswan/Openswan)。有没有办法使用这些工具来实现这一点?客户端将是 iOS 设备、Mac,可能还有几台 Windows PC。