

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 對與 Cisco ASA 客戶閘道裝置的 AWS Site-to-Site VPN 連線進行故障診斷
<a name="Cisco_ASA_Troubleshooting"></a>

當您對 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
<a name="ASA_IKE"></a>

使用下列 命令。回應顯示客戶閘道裝置的 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 mon
router# debug crypto isakmp
```

使用下列命令停用除錯。

```
router# no debug crypto isakmp
```

## IPsec
<a name="ASA_IPsec"></a>

使用下列 命令。回應顯示客戶閘道裝置的 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 開始交涉和啟動。

```
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
```

## 路由
<a name="ASA_Tunnel"></a>

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
   ```

1. 使用以下命令檢查存取清單。

   ```
   ciscoasa# show run access-list access-list-name
   ```

   ```
   access-list access-list-name extended permit ip any vpc_subnet subnet_mask
   ```

1. 確認此存取清單是否正確。下列範例存取清單允許連往 VPC 子網路 10.0.0.0/16 的所有內部流量。

   ```
   access-list access-list-name extended permit ip any 10.0.0.0 255.255.0.0
   ```

1. 從 Cisco ASA 裝置執行追蹤路由，查看它是否連接到 Amazon 路由器 (例如 *AWS\$1ENDPOINT\$11*/*AWS\$1ENDPOINT\$12*)。

   如果這連上 Amazon 路由器，則檢查您在 Amazon VPC 主控台中新增的靜態路由，以及特定執行個體的安全群組。

1. 如需進一步故障診斷，請檢閱組態。

## 退信通道界面
<a name="ASA_Tunnel-bounce"></a>

如果通道似乎已啟動，但流量未正常流動，通道界面通常會彈跳 （停用和重新啟用） 來解決連線問題。若要退信 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
   ```

1. 啟動界面後，請檢查 VPN 連接是否已重新建立，以及流量現在是否正確流動。