我正在创建一个 IPsec / L2TP 网络,并且我想要一个服务器和多个客户端。
在每个客户端上,我让 IPsec 正常工作的唯一方法是将承载流量的接口的 IP 设置为 leftsourceip。当此接口是公共接口时,这似乎没问题,但当机器位于 NAT 后面并且接口具有私有 IP 时,这似乎有点不对劲。
以下是从客户端配置 ipsec 的示例:
config setup
charondebug="ike 1, knl 1, cfg 0"
uniqueids=no
conn ikev2-vpn
auto=route
compress=no
type=tunnel
keyexchange=ikev2
fragmentation=yes
forceencaps=yes
dpdaction=clear
dpddelay=300s
esp=aes256-sha256-modp4096!
ike=aes256-sha256-modp4096!
rekey=no
right=ipsec.server.url
rightid=%any
rightauth=pubkey
rightprotoport=17/1701
left=10.0.0.60
leftsubnet=10.0.0.60/32
leftid=%any
leftauth=pubkey
leftcert=my-cert.crt
leftsendcert=always
leftprotoport=17/1701
leftsourceip=10.0.0.60
该客户端的 ip 是 10.0.0.60,因此 ipsec 正在服务器/32 和此 ip/32 之间创建隧道,并且运行良好。
但由于它是私有 IP,我可以有两个具有相同 IP 的客户端,因此它不再起作用。不要认为尝试放置此客户端的公共 IP 是个好主意,因为我可以有多个具有相同 IP 的客户端。
我至少可以想到两种解决方案。如果我手动为客户端上的传出接口指定一个虚拟 IP,我可以轻松避免为多个客户端指定同一个 IP,但这需要手动操作,而且有些客户端不允许我指定新地址(嵌入式硬件)。
另一种解决方案是配置 ipsec 来分发虚拟 ip,但在这种情况下,我觉得我是在 L3 VPN 内设置 L2 VPN,并且我会有两个 IP 网络相互叠加。
我很困惑,我是不是漏掉了什么?使用 L2TP 配置 IPsec 的正确方法是什么?
谢谢