我有一个Ubuntu的服务器上运行的StrongSwan,我试图创build一个Cisco 2821路由器的IPSecencryption的VPN隧道。 连接不工作,我不明白为什么。 它似乎完成阶段1,但在阶段2失败。任何人都可以提供build议? 我很难过 顺便说一句,我的服务器是在亚马逊云。
这是我的configuration:
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
给我连接到思科路由器的configuration是:
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)
如果我没有记错,Amazon EC2使用一些NAT来使您的实例可以从Internet访问。
虽然NAT友好的应用程序可以无缝地工作(比如http或者ssh),但是一些协议是在端到端通信是规则的时候devise的,而NAT会打破这些协议。
FTP或SIP(实际上是rtp)使用dynamicselect的端口,但devise了助手。 例如,VoIP的STUN。
在IPSec的情况下,阶段1成功。 这是NAT检测。 所以你的服务器在日志中说i am NATed 。
但是,作为NAT穿越决定的阶段2失败。 您可能必须在两侧启用思科所称的“IPSec NAT透明度”。 因此,ipsec有效载荷不在第3层(IP),而是在第4层,在UDP中。
这与openvpn有些类似,但是使用ssl而不是IPSec。
看看思科的网站有关NAT穿越 。 虽然以思科为中心,它会帮助你build立你的隧道。