我有一台 strongswan 机器,用于建立多个通往我们现场的 ipsec 隧道。我们还建立了一条通往总部的隧道。我希望我们办公室的子网能够通过 strongswan 服务器进入特定的现场站点……所以基本上流量从一个隧道进入另一个隧道。
conn Live
authby=secret
auto=start
ike=aes256-sha1;modp1024
keyexchange=ike
phase2=esp
phase2alg=aes256-sha1;modp1024
compress=no
pfs=no
type=tunnel
left=publicip
leftid=publicip
leftsubnet=172.19.0.0/24
leftsourceip=172.19.0.1
leftnexthop=%defaultroute
conn OFFICE
also=Live
right=publicip
rightsubnet=192.168.40.0/24
conn LIVESITE
also=Live
right=publicip
rightsubnet=10.153.0.0/16
我希望来自 192.168.40.0/24 的流量能够到达 10.153.0.0/16,但我认为它必须被网络地址转换 (NAT) 为 172.19.0.0/24,而这正是我努力的地方 :-/
答案1
NAT 不会自动修复此问题。问题在于与两个远程对等方协商的 IPsec 策略将仅允许将地址为的流量172.19.0.0/24
发送到 strongSwan 服务器。
因此,即使您将流量从 NAT 发送192.168.40.0/24
到 IP,也172.19.0.0/24
不会改变任何事情,因为流量10.153.0.0/16
首先不会通过“OFFICE”隧道发送。
一种可能的解决方法是协商适当的 IPsec 策略,允许到相应远程子网的流量通过 strongSwan 服务器。这需要更改所有相关 IPsec 主机的配置(至少如果需要双向连接,请参阅底部的非对称变体)。
在 strongSwan 方面,如果您使用 IKEv2,并且对等方的实现支持它,那么您可以简单地扩展左子网:
conn OFFICE
also=Live
right=publicip
leftsubnet=172.19.0.0/24,10.153.0.0/16
rightsubnet=192.168.40.0/24
conn LIVESITE
also=Live
right=publicip
leftsubnet=172.19.0.0/24,192.168.40.0/24
rightsubnet=10.153.0.0/16
但是,对于 IKEv1(以及某些 IKEv2 实现),需要为本地和远程子网的每个组合协商单独的 IPsec SA。因此配置将如下所示:
conn OFFICE-local
also=Live
right=publicip
rightsubnet=192.168.40.0/24
conn OFFICE-live
also=OFFICE-local
leftsubnet=10.153.0.0/16
conn LIVESITE-local
also=Live
right=publicip
rightsubnet=10.153.0.0/16
conn LIVESITE-office
also=LIVESITE-local
leftsubnet=192.168.40.0/24
远程主机的配置必须相应更改。
如果您不需要双向连接(例如,如果中的主机192.168.40.0/24
必须能够连接到中的主机192.168.40.0/24
,但反之亦然),您也可以只更改一侧(在本例中为“OFFICE”连接),然后将 NAT 数据包更改为本地 IP 以匹配另一个连接的现有 IPsec 策略。