启用 IPSec 后无法 ssh 到远程系统

启用 IPSec 后无法 ssh 到远程系统

我在基础操作系统上创建了两个虚拟机,并在两个虚拟机之间启用了 IPSec。现在的问题是,一旦 IPsec 启动并在两个虚拟机之间建立 SA,我就无法通过基础操作系统 ping 或 ssh 到虚拟机,但虚拟机可以相互 ping。据我所知,IPsec 仅在指定的 IP 之间创建隧道,即来自 IP A 发往 IP B 的数据包会被加密,而来自 IP A 的所有其他数据包都可以不加密地通过。我这里遗漏了什么吗?使用的配置文件是:

conn example  
        left=192.168.54.220  
        leftcert=CA_Server  
        leftsubnet=192.168.54.1/24  
        leftsendcert=always  
        leftrsasigkey=%cert  
        right=192.168.54.221  
        rightca=%same  
        rightrsasigkey=%cert  
        rightsubnet=192.168.54.1/24  
        rightcert=CA_Client  
        authby=rsasig  
        ikev2=permit  
        auto=start  

答案1

IPsec 仅在指定 IP 之间创建隧道,即来自 IP A 发往 IP B 的数据包将被加密,而来自 IP A 的所有其他数据包无需加密即可通过。我是不是漏掉了什么?

是的。IPSec 在两个指定端点和。但使用该隧道leftright流量(即加密的流量)位于两个指定的网络和。leftsubnetrightsubnet您而言,两个路由子网彼此相同,这是行不通的。

如果您想要从 A 到 B 的流量在 A 加密并在 B 解密,反之亦然,您可以通过将 设置leftsubnetleft的地址(在您的情况下192.168.54.220/32)(掩码很重要)来告诉 S/WAN,并通过将 设置rightsubnetright的地址(在您的情况下)192.168.54.221/32

答案2

据我所知,IPsec 仅在指定 IP 之间创建隧道,即来自 IP A 发往 IP B 的数据包将被加密,而来自 IP A 的所有其他数据包无需加密即可通过。我这里遗漏了什么吗?

不!这就是您当前用例的要点。

我看到了子网密钥,但它们是同一个子网。我没有看过源代码,所以我不能明确地说这就是问题所在……但我认为这就是问题所在。如果不使用路由或 nat,您将需要传输模式。这是我几周前使用的点对点配置:

conn transportModeFirewallToPhoneServer
        authby="psk"
        auto="start"
        compress="no"
        ecn="no"
        esp="aes128-md5"
        ike="aes256-md5-modp1536"
        ikelifetime="7800"
        keyexchange="ike"
        keylife="3600"
        left="hq.myDynDNSDomainToMyOffice.com"
        leftid="hq.myDynDNSDomainToMyOffice.com"
        leftupdown="/usr/libexec/ipsec/updown classic"
        pfs="yes"
        pfsgroup="modp1536"
        pmtu_discovery="no"
        rekeymargin="540"
        right="XXX.XXX.XXX.XXX"
        rightid="XXX.XXX.XXX.XXX"
        type="transport"

导入位是 left*、right* 和 type。除了这些键之外,您的配置看起来不错。另外,您说它已经建立了 VPN,因此显然您的 ike 和 auth 是正确的。

相关内容