尝试将有效的 IPSec/L2TP 配置从 OpenSWAN 复制到 StrongSWAN

尝试将有效的 IPSec/L2TP 配置从 OpenSWAN 复制到 StrongSWAN

我有一个适用于 RA 的 OpenSWAN 实现,使用 IPsec 传输和 l2tp 作为隧道,在 AWS 中运行。该实例有一个私有 IP,并映射了一个公共 EIP。

left我对和参数使用了私有 IP leftsubnet,对使用了公共 IP leftid

我现在正尝试从同一客户端配置到运行 StrongSWAN (4.5.2) 的新端点的 IPSec 连接。我已尝试尽可能将配置从 openswan 复制到 strongswan。目前,我只是尝试设置 IPSec(暂时不必担心 l2tp),并且在第 2 阶段遇到了问题(第 1 阶段已顺利完成)。

配置上的区别是:

--- openswan.conf       2014-07-18 11:48:01.740966015 +0200
+++ strongswan.conf     2014-07-18 11:46:58.927569703 +0200
@@ -1,11 +1,14 @@
+version 2.0
+
config setup
-       protostack=netkey
+       charonstart=no
+       interfaces="%none"
        nat_traversal=yes
-       virtual_private=%v4:192.168.10.0/24
        oe=off
-       nhelpers=0
-       interfaces=%defaultroute
+       virtual_private="%v4:192.168.11.0/24"
+
+conn %default
+       keyexchange=ikev1

conn remote-access
        forceencaps=yes
        type=transport
        ike=3des-sha1
-       phase2alg=3des-sha1

当我从客户端建立连接时,我得到以下信息:

003 "myconn" #1: NAT-Traversal: Result using RFC 3947 (NAT-Traversal): both are NATed
108 "myconn" #1: STATE_MAIN_I3: sent MI3, expecting MR3
004 "myconn" #1: STATE_MAIN_I4: ISAKMP SA established {auth=OAKLEY_PRESHARED_KEY cipher=aes_128 prf=oakley_sha group=modp2048}
117 "myconn" #2: STATE_QUICK_I1: initiate

在服务器日志中

"remote-access"[3] 105.1.1.1 #2: NAT-Traversal: Result using RFC 3947: both are NATed
"remote-access"[3] 105.1.1.1 #2: Peer ID is ID_IPV4_ADDR: '192.168.2.2'
"remote-access"[4] 105.1.1.1 #2: deleting connection "remote-access" instance with peer client.ip.addr {isakmp=#0/ipsec=#0}
"remote-access"[4] 105.1.1.1:4500 #2: sent MR3, ISAKMP SA established
"remote-access"[4] 105.1.1.1:4500 #2: cannot respond to IPsec SA request because no connection is known for 54.1.1.1/32===10.0.0.2:4500[54.1.1.1]:17/1701...105.1.1.1.1:4500[192.168.2.2]:17/%any==={192.168.2.2/32}
"remote-access"[4] 105.1.1.1:4500 #2: sending encrypted notification INVALID_ID_INFORMATION to 105.1.1.1:4500

192.168.2.2 是客户端的私有 IP,而 105.1.1.1 是其通过 NAT 转换后的公共 IP。

我搜索了“无法响应 IPsec SA 请求,因为没有已知的连接”,只找到了 1 个与 strongswan 相关的https://lists.strongswan.org/pipermail/users/2011-July/001885.html, 也但是这两个建议都不起作用(在对等点上调整 rightid 或在 strongswan 服务器上添加 leftsourceip)。

我连接到 strongswan 的对等点/客户端是 libreswan 3.7

编辑这是配置

EC 中的 StrongSWAN:

conn remote-access authby=secret pfs=no left=10.0.0.2 leftid=54..1.1.1 leftsubnet=10.0.0.2/32 leftnexthop=%defaultroute leftprotoport=17/1701 right=%any rightid=%any rightsubnetwithin=0.0.0.0/0 rightprotoport=17/%any type=transport forceencaps=yes auto=add ike=3des-sha1 dpddelay=15 dpdtimeout=45 dpdaction=clear auth=esp esp=aes256-sha1,3des-sha1!

该主机上的机密文件:

54.1.1.1 %any : PSK "XXX"

我的本地 RA 客户端配置:

conn myconn authby=secret pfs=no rekey=yes keyingtries=3 type=transport left=%defaultroute leftprotoport=17/1701 right=54.1.1.1 rightprotoport=17/1701 auto=add phase2=esp phase2alg=3des-md5;modp1024 forceencaps=yes

秘密:

0.0.0.0 %any 54.1.1.1 : PSK "XXX"

我最近在本地客户端上添加了 phase2 参数和 forceencaps。

前面显示的差异是在我连接到的 2 个基于 EC2 的主机之间。“myconn”连接来自我的工作站,我有 2 个 conn,1 个用于 openswan 对等体(可以工作),另一个用于 strongswan 对等体(不能工作)。我认为对左/右配置使用相同的方法将产生一个有效的配置。

答案1

这是使用 openswan 的工作配置。影响此配置工作的一些参数包括使用rightsubnetwithinphase2alg(phase2alg 可以根据需要进行调整,我最初使用了 3des-sha1,但后​​来进行了调整)。

示例配置

/etc/ipsec.conf

config setup
    plutostderrlog= "/var/log/pluto.err"
    protostack=netkey
    nat_traversal=yes
    virtual_private=%v4:192.168.10.0/24
    oe=off
    nhelpers=0
    interfaces=%defaultroute

conn remote-access
    auto=add
    left=10.0.0.2
    leftid=54.1.1.1
    leftsubnet=10.0.0.2/32
    leftnexthop=%defaultroute
    leftprotoport=17/1701
    rightprotoport=17/%any
    right=%any
    rightid=%any
    rightsubnetwithin=0.0.0.0/0
    forceencaps=yes
    authby=secret
    pfs=no
    type=transport
    auth=esp
    ike=3des-sha1
    phase2alg=3des-sha1
    dpdaction=clear
    dpddelay=60
    dpdtimeout=500

/etc/ipsec.secrets

54.1.1.1 %any : PSK "Your_PSK"

这已启动 IPSec 传输。

答案2

如果我理解正确的话,这里的一个或两个端点都有 RFC1918 地址,它们位于 NAT 设备后面。

您可以在阅读更多详细信息我之前的回答,但结果是它破坏了 conf 文件的对称性。不是每一方都有相同的left=right=端点,并让 SWAN 分辨出哪个是哪个,而是每一方都必须有自己的私人IP 地址,以及另一方的公众left一个。在任何给定的一端,哪个是、哪个是仍然无关紧要right,但是两个地址将与另一端的两个地址不同。

您还没有发布您的实际.conf文件,只有差异,所以我无法进一步评论,但我非常怀疑这就是问题所在。

相关内容