排查 Cisco ASA 客户网关设备的 AWS Site-to-Site VPN 连接问题 - AWS Site-to-Site VPN

排查 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_ACTIVEstatus 应为 ACTIVE。任何项的缺乏或任何项处于其他状态均表示 IKE 未正确配置。

如需进一步排除故障,请运行下面的命令以启用可提供诊断信息的日志消息。

router# term mon router# 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 sasoutbound esp sas。这一点假定已列出 SA(例如 spi: 0x48B456A6)并且 IPsec 已正确配置。

在 Cisco ASA 中,IPsec 仅在触发流量(应加密的流量)发送后才会运行。如需将 IPsec 始终保持活动,建议您配置 SLA 监视器。SLA 监视器将不断发送触发流量,使 IPsec 保持活动。

您也可以使用下面的 ping 命令强制 IPsec 开始协商并运行。

ping ec2_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 部分。

如果您无法访问实例,请核查以下信息。

  1. 验证是否已将访问列表配置为允许与保密图关联的流量。

    您可以使用下面的命令进行这项操作。

    ciscoasa# show run crypto
    crypto 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 peer AWS_ENDPOINT_1 AWS_ENDPOINT_2 crypto map VPN_crypto_map_name 1 set transform-set transform-amzn crypto map VPN_crypto_map_name 1 set security-association lifetime seconds 3600
  2. 使用以下命令检查访问列表。

    ciscoasa# show run access-list access-list-name
    access-list access-list-name extended permit ip any vpc_subnet subnet_mask
  3. 验证访问列表是否正确。以下示例访问列表允许所有流向 VPC 子网 10.0.0.0/16 的内部流量。

    access-list access-list-name extended permit ip any 10.0.0.0 255.255.0.0
  4. 从 Cisco ASA 设备运行 traceroute,看其是否能访问 Amazon 路由器 (例如,AWS_ENDPOINT_1/AWS_ENDPOINT_2)。

    如果能访问 Amazon 路由器,则检查您在 Amazon VPC 控制台中添加的静态路由,同时检查特定实例的安全组。

  5. 如需进一步排查问题,请核查配置。

反弹隧道接口

如果隧道显示正常但流量未正常传输,则反弹(禁用和重新启用)隧道接口通常可以解决连接问题。要反弹 Cisco ASA 上的隧道接口,请执行以下操作:

  1. 运行以下命令:

    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
  2. 反弹接口后,检查 VPN 连接是否已重新建立,以及流量是否已正常传输。