排查 Cisco ASA 客户网关设备的 AWS Site-to-Site VPN 连接问题
排查 Cisco 客户网关设备的连接问题时,请考虑 IKE、IPsec 和路由选择。您可以按任何次序对这些方面进行故障排除,不过建议您从 IKE 开始(位于网络堆栈的底部)并依次向上排除。
重要
部分 Cisco ASA 仅支持活动/备用模式。使用这些 Cisco ASA 时,您一次只能有一个活动的隧道。仅在第一个隧道不可用的情况下,其他备用隧道才可用。备用隧道可能在您的日志文件中生成以下错误,您可以忽略该错误:Rejecting IPSec tunnel: no
matching crypto map entry for remote proxy 0.0.0.0/0.0.0.0/0/0 local proxy
0.0.0.0/0.0.0.0/0/0 on interface outside。
IKE
使用以下命令。响应显示带正确配置的 IKE 的客户网关设备。
ciscoasa#show crypto isakmp sa
Active SA: 2
Rekey SA: 0 (A tunnel will report 1 Active and 1 Rekey SA during rekey)
Total IKE SA: 2
1 IKE Peer: AWS_ENDPOINT_1
Type : L2L Role : initiator
Rekey : no State : MM_ACTIVE
您应该可以看到包含隧道中所指定远程网关的 src 值的一行或多行。state 值应为 MM_ACTIVE,status 应为 ACTIVE。任何项的缺乏或任何项处于其他状态均表示 IKE 未正确配置。
如需进一步排除故障,请运行下面的命令以启用可提供诊断信息的日志消息。
router#term monrouter#debug crypto isakmp
要禁用调试,请使用下面的命令。
router#no debug crypto isakmp
IPsec
使用以下命令。响应显示带正确配置的 IPsec 的客户网关设备。
ciscoasa#show crypto ipsec sa
interface: outside
Crypto map tag: VPN_crypto_map_name, seq num: 2, local addr: 172.25.50.101
access-list integ-ppe-loopback extended permit ip any vpc_subnet subnet_mask
local ident (addr/mask/prot/port): (0.0.0.0/0.0.0.0/0/0)
remote ident (addr/mask/prot/port): (vpc_subnet/subnet_mask/0/0)
current_peer: integ-ppe1
#pkts encaps: 0, #pkts encrypt: 0, #pkts digest: 0
#pkts decaps: 0, #pkts decrypt: 0, #pkts verify: 0
#pkts compressed: 0, #pkts decompressed: 0
#pkts not compressed: 0, #pkts comp failed: 0, #pkts decomp failed: 0
#pre-frag successes: 0, #pre-frag failures: 0, #fragments created: 0
#PMTUs sent: 0, #PMTUs rcvd: 0, #decapsulated frgs needing reassembly: 0
#send errors: 0, #recv errors: 0
local crypto endpt.: 172.25.50.101, remote crypto endpt.: AWS_ENDPOINT_1
path mtu 1500, ipsec overhead 74, media mtu 1500
current outbound spi: 6D9F8D3B
current inbound spi : 48B456A6
inbound esp sas:
spi: 0x48B456A6 (1219778214)
transform: esp-aes esp-sha-hmac no compression
in use settings ={L2L, Tunnel, PFS Group 2, }
slot: 0, conn_id: 4710400, crypto-map: VPN_cry_map_1
sa timing: remaining key lifetime (kB/sec): (4374000/3593)
IV size: 16 bytes
replay detection support: Y
Anti replay bitmap:
0x00000000 0x00000001
outbound esp sas:
spi: 0x6D9F8D3B (1839172923)
transform: esp-aes esp-sha-hmac no compression
in use settings ={L2L, Tunnel, PFS Group 2, }
slot: 0, conn_id: 4710400, crypto-map: VPN_cry_map_1
sa timing: remaining key lifetime (kB/sec): (4374000/3593)
IV size: 16 bytes
replay detection support: Y
Anti replay bitmap:
0x00000000 0x00000001
对于每个隧道接口,您应该可以看到 inbound esp sas 和 outbound esp sas。这一点假定已列出 SA(例如 spi: 0x48B456A6)并且 IPsec 已正确配置。
在 Cisco ASA 中,IPsec 仅在触发流量(应加密的流量)发送后才会运行。如需将 IPsec 始终保持活动,建议您配置 SLA 监视器。SLA 监视器将不断发送触发流量,使 IPsec 保持活动。
您也可以使用下面的 ping 命令强制 IPsec 开始协商并运行。
pingec2_instance_ip_address
Pinging ec2_instance_ip_address with 32 bytes of data:
Reply from ec2_instance_ip_address: bytes=32 time<1ms TTL=128
Reply from ec2_instance_ip_address: bytes=32 time<1ms TTL=128
Reply from ec2_instance_ip_address: bytes=32 time<1ms TTL=128
Ping statistics for 10.0.0.4:
Packets: Sent = 3, Received = 3, Lost = 0 (0% loss),
Approximate round trip times in milliseconds:
Minimum = 0ms, Maximum = 0ms, Average = 0ms
如需进一步排除故障,请使用下面的命令启用调试。
router#debug crypto ipsec
要禁用调试,请使用下面的命令。
router#no debug crypto ipsec
路由
向隧道的另一端发出 ping。如果这样做起作用,您的 IPsec 应已建立。如果这样做不起作用,请检查您的访问列表,然后参考前面的 IPsec 部分。
如果您无法访问实例,请核查以下信息。
-
验证是否已将访问列表配置为允许与保密图关联的流量。
您可以使用下面的命令进行这项操作。
ciscoasa#show run cryptocrypto ipsec transform-set transform-amzn esp-aes esp-sha-hmac crypto map VPN_crypto_map_name 1 match address access-list-name crypto map VPN_crypto_map_name 1 set pfs crypto map VPN_crypto_map_name 1 set peerAWS_ENDPOINT_1AWS_ENDPOINT_2crypto map VPN_crypto_map_name 1 set transform-set transform-amzn crypto map VPN_crypto_map_name 1 set security-association lifetime seconds 3600 -
使用以下命令检查访问列表。
ciscoasa#show run access-list access-list-nameaccess-list access-list-name extended permit ip anyvpc_subnetsubnet_mask -
验证访问列表是否正确。以下示例访问列表允许所有流向 VPC 子网 10.0.0.0/16 的内部流量。
access-list access-list-name extended permit ip any 10.0.0.0 255.255.0.0 -
从 Cisco ASA 设备运行 traceroute,看其是否能访问 Amazon 路由器 (例如,
AWS_ENDPOINT_1/AWS_ENDPOINT_2)。如果能访问 Amazon 路由器,则检查您在 Amazon VPC 控制台中添加的静态路由,同时检查特定实例的安全组。
如需进一步排查问题,请核查配置。
反弹隧道接口
如果隧道显示正常但流量未正常传输,则反弹(禁用和重新启用)隧道接口通常可以解决连接问题。要反弹 Cisco ASA 上的隧道接口,请执行以下操作:
-
运行以下命令:
ciscoasa# conf t ciscoasa(config)# interface tunnel X (where X is your tunnel ID) ciscoasa(config-if)# shutdown ciscoasa(config-if)# no shutdown ciscoasa(config-if)# end或者,您可以使用一行命令:
ciscoasa# conf t ; interface tunnel X ; shutdown ; no shutdown ; end -
反弹接口后,检查 VPN 连接是否已重新建立,以及流量是否已正常传输。