Strongswan 隧道之间的交通

Strongswan 隧道之间的交通

我有一台 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 策略。

相关内容