我在 ubuntu 服务器上运行 StrongSwan,并尝试使用 Cisco 2821 路由器创建 ipsec 加密 VPN 隧道。连接不起作用,我不知道原因。它似乎完成了第 1 阶段,但在第 2 阶段失败了。有人可以提供建议吗?我很困惑。顺便说一句,我的服务器在亚马逊云中。
这是我的配置:
conn my-conn
type=tunnel
authby=secret
auth=esp
ikelifetime=86400s
keylife=3600s
esp=3des-sha1
ike=3des-sha1-modp1024
keyexchange=ike
pfs=no
forceencaps=yes
# Left security gateway, subnet behind it, nexthop toward right.
left=10.0.0.4
leftsubnet=10.0.0.4/32
leftnexthop=%defaultroute
# Right security gateway, subnet behind it, nexthop toward left.
right=1.2.3.4
rightsubnet=1.2.3.5/32
rightnexthop=%defaultroute
# To authorize this connection, but not actually start it,
# at startup, uncomment this.
auto=start
以下是日志的输出:
Dec 28 18:02:19 myserver pluto[15753]: "my-conn" #330: initiating Main Mode
Dec 28 18:02:19 myserver pluto[15753]: "my-conn" #330: received Vendor ID payload [draft-ietf-ipsec-nat-t-ike-03]
Dec 28 18:02:19 myserver pluto[15753]: "my-conn" #330: enabling possible NAT-traversal with method RFC 3947
Dec 28 18:02:20 myserver pluto[15753]: "my-conn" #330: ignoring Vendor ID payload [Cisco-Unity]
Dec 28 18:02:20 myserver pluto[15753]: "my-conn" #330: received Vendor ID payload [Dead Peer Detection]
Dec 28 18:02:20 myserver pluto[15753]: "my-conn" #330: ignoring Vendor ID payload [883f3a4fb4782a3ae88bf05cdfe38ae0]
Dec 28 18:02:20 myserver pluto[15753]: "my-conn" #330: received Vendor ID payload [XAUTH]
Dec 28 18:02:20 myserver pluto[15753]: "my-conn" #330: NAT-Traversal: Result using draft-ietf-ipsec-nat-t-ike-02/03: i am NATed
Dec 28 18:02:20 myserver pluto[15753]: | protocol/port in Phase 1 ID Payload is 17/0. accepted with port_floating NAT-T
Dec 28 18:02:20 myserver pluto[15753]: "my-conn" #330: Peer ID is ID_IPV4_ADDR: '1.2.3.4'
Dec 28 18:02:20 myserver pluto[15753]: "my-conn" #330: ISAKMP SA established
Dec 28 18:02:20 myserver pluto[15753]: "my-conn" #331: initiating Quick Mode PSK+ENCRYPT+TUNNEL+UP {using isakmp#330}
Dec 28 18:02:20 myserver pluto[15753]: "my-conn" #330: ignoring informational payload, type NO_PROPOSAL_CHOSEN
Dec 28 18:02:20 myserver pluto[15753]: "my-conn" #330: ignoring informational payload, type IPSEC_RESPONDER_LIFETIME
我连接到思科路由器的配置是:
Key Management: IKE
Diffie-Hellman Group: Group 2
Encryption Algorithm: 3DES (rec)
Hash Algorithm: SHA-1 (rec.)
Authentication Method: Preshared
Pre-Shared Secret Key: TBC
Life Time: 86400s (24h)
Encryption Phase 2 (IPSec):
Encapsulation: ESP
Encryption Algorithm used: 3DES (rec)
Hash Algorithm: SHA-1 (rec.)
Perfect Forward Secrecy: Groupe 2
Aggressive Mode: NO
Life Time: 3600s (1h)
答案1
如果我没记错的话,Amazon EC2 使用了一些 NAT 来使您的实例可以通过互联网访问。
虽然 NAT 友好型应用程序可以无缝运行(例如 http 或 ssh),但有些协议是在端到端通信成为规则的时候设计的,而 NAT 会破坏这些协议。
FTP 或 SIP(实际上是 rtp)使用动态选择端口,但设计了辅助程序。例如,用于 VoIP 的 STUN。
对于 IPSec,第 1 阶段成功。这是 NAT 检测。因此您的服务器在日志中显示i am NATed
。
但是,第 2 阶段(即 NAT 遍历决策)失败。您可能必须在两端启用 Cisco 所称的“IPSec NAT 透明度”。因此,ipsec 有效负载不在第 3 层(IP),而是在第 4 层(UDP)中。
这有点类似于 openvpn 所做的,但是使用 ssl 而不是 IPSec。
看一下Cisco 有关 NAT 穿越的网站。虽然以思科为中心,但它将帮助您设置隧道。
答案2
我在使用 StrongSwan 时收到此错误5.6.1
。该错误是由于使用弱密码的远程服务器被认为是已被 StrongSwan 弃用。
启用以下功能弱密码允许
ipsec
连接完成:- 第一阶段算法:
aes128-sha1-modp2048,3des-sha1-modp1536,3des-sha1-modp1024
- Phase2 算法:
aes128-sha1,3des-sha1
- 第一阶段算法:
我发现Arch Linux L2TP 维基有帮助和说明,尽管对于开放的Swan 也工作在强天鹅:
首先运行
ipsec verify
来配置您的环境。运行
xl2tpd -D
(调试模式) - 确认您的设置是否合理。在网络管理器小程序你给出的
conn
设置/etc/ipsec.conf
该插件似乎通过中的 ip 地址
network-manager-l2tp
建立匹配的连接。您为设置指定的名称似乎对插件来说并不重要。L2TP
lns
/etc/xl2tpd/xl2tpd.conf
[lac vpn-name]
这些说明也适用于设置L2TP和
ipsec
Arch Linux。 使用利布雷斯万(斯特朗斯旺ipsec
在 Arch Linux 中不起作用)使用network-manager-l2tp
插件并将您的ipsec
连接详细信息放在 下/etc/ipsec.d/*.conf
。文件名可以是任何名称,因为插件会搜索conn
在配置文件中搜索与 匹配的字符串VPN 名称在网络管理器。