

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

# 疑難排解 NAT 閘道
<a name="nat-gateway-troubleshooting"></a>

以下主題可協助您在建立或使用 NAT 閘道時可能遇到的常見問題進行疑難排解。

**Topics**
+ [NAT 閘道建立失敗](#nat-gateway-troubleshooting-failed)
+ [NAT 閘道配額](#nat-gateway-troubleshooting-quota)
+ [彈性 IP 地址配額](#nat-gateway-troubleshooting-limits)
+ [不支援此可用區域](#nat-gateway-troubleshooting-unsupported-az)
+ [NAT 閘道無法顯示](#nat-gateway-troubleshooting-gateway-removed)
+ [NAT 閘道沒有回應 ping 命令](#nat-gateway-troubleshooting-ping)
+ [執行個體無法存取網路](#nat-gateway-troubleshooting-no-internet-connection)
+ [TCP 連線到目標失敗](#nat-gateway-troubleshooting-tcp-issues)
+ [Traceroute 輸出沒有顯示 NAT 閘道私有 IP 地址](#nat-gateway-troubleshooting-traceroute)
+ [網際網路連線在 350 秒之後卸除](#nat-gateway-troubleshooting-timeout)
+ [無法建立 IPsec 連線](#nat-gateway-troubleshooting-ipsec)
+ [無法初始化更多的連線](#nat-gateway-troubleshooting-simultaneous-connections)

## NAT 閘道建立失敗
<a name="nat-gateway-troubleshooting-failed"></a>

**問題**  
您建立 NAT 閘道並進入 `Failed` 狀態。

**注意**  
失敗的 NAT 閘道會自動刪除 (通常是在大約一小時內)。

**原因**  
建立 NAT 閘道時發生錯誤。回傳的狀態訊息提供錯誤的原因。

**解決方案**  
若要檢視錯誤訊息，請開啟 Amazon VPC 主控台，然後選擇 **NAT 閘道**。選取 NAT 閘道的選項按鈕，然後在 **Details** (詳細資訊) 索引標籤上尋找 **State message** (狀態訊息)。

下表列出導致 Amazon VPC 主控台中指出之錯誤的可能原因。在您套用任何指示的補救步驟之後，您可以嘗試再次建立 NAT 閘道。


| 顯示的錯誤 | 原因 | 解決方案 | 
| --- | --- | --- | 
| 子網路擁有的可用地址數不足以建立此 NAT 閘道 | 您指定的子網路中沒有任何可用的私有 IP 地址。NAT 閘道需要網路界面具備從子網路的範圍配置的私有 IP 地址。 | 透過 Amazon VPC 主控台的子網路頁面檢查您的子網路中有多少可用的 IP 地址。您可以在詳細窗格中檢視子網路的 可用的 IPs。若要在您的子網路中建立可用的 IP 地址，您可以刪除未使用的網路界面，或是終止您不再需要的執行個體。 | 
| 網路 vpc-xxxxxxxx 沒有連接的網際網路閘道 | NAT 閘道必須在具備網際網路閘道的 VPC 中建立。 | 建立網際網路閘道並連接到您的 VPC。如需詳細資訊，請參閱[將網際網路存取新增至子網路](working-with-igw.md)。 | 
| 彈性 IP 地址 eipalloc-xxxxxxxx 已建立關聯 | 您指定的彈性 IP 地址已與其他資源建立關聯，因此無法與此 NAT 閘道建立關聯。 | 檢查與彈性 IP 地址關聯的資源。到 Amazon VPC 主控台的彈性 IP 頁面，檢視執行個體 ID 或網路介面 ID 指定的值。若您不需要針對該資源使用彈性 IP 地址，您可以取消其關聯。或者，將新的彈性 IP 地址配置到您的帳戶。如需詳細資訊，請參閱[開始使用彈性 IP 位址](WorkWithEIPs.md)。 | 

## NAT 閘道配額
<a name="nat-gateway-troubleshooting-quota"></a>

當您嘗試建立 NAT 閘道時，得到下列錯誤。

```
Performing this operation would exceed the limit of 5 NAT gateways
```

**原因**  
您已達到該可用區域 NAT 閘道的數量配額。

**解決方案**

如果您已達到帳戶的此 NAT 閘道配額，您可以執行下列其中一項動作：
+ 使用 Service Quotas 主控台要求增加[每個可用區域配額的 NAT 閘道](https://console.aws.amazon.com/servicequotas/home/services/vpc/quotas/L-FE5A380F)。
+ 檢查您 NAT 閘道的狀態。`Pending`、`Available` 或 `Deleting` 狀態都會計入您的配額。如果您最近刪除 NAT 閘道，等待數分鐘待其狀態從 `Deleting` 變為 `Deleted`。然後嘗試建立新的 NAT 閘道。
+ 若您在特定可用區域中不需要 NAT 閘道，請嘗試在您尚未到達配額的可用區域內建立 NAT 閘道。

如需詳細資訊，請參閱 [Amazon VPC 配額](amazon-vpc-limits.md)。

## 彈性 IP 地址配額
<a name="nat-gateway-troubleshooting-limits"></a>

**問題**  
當您嘗試為公有 NAT 閘道配置彈性 IP 地址時，會發生以下錯誤。

```
The maximum number of addresses has been reached.
```

**原因**  
您已達到該區域帳戶彈性 IP 地址的數量配額。

**解決方案**  
如果您已達彈性 IP 地址的配額，您可以從其他資源取消與彈性 IP 地址的關聯。或者，您可以使用 Service Quotas 主控台要求增加[彈性 IP 配額](https://console.aws.amazon.com/servicequotas/home/services/ec2/quotas/L-0263D0A3)。

## 不支援此可用區域
<a name="nat-gateway-troubleshooting-unsupported-az"></a>

**問題**  
當您嘗試建立 NAT 閘道時，得到下列錯誤：`NotAvailableInZone`。

**原因**  
您可能會在受到限制的可用區域 (即擴展功能受限的區域) 中嘗試建立 NAT 閘道。

**解決方案**  
我們無法支援這些可用區域內的 NAT 閘道。您可以在不同的可用區域中建立 NAT 閘道，並將其用於受限制區域中的私有子網路。您也可以將您的資源移動到未受限制的可用區域，讓您的資源及 NAT 閘道位於相同的區域內。

## NAT 閘道無法顯示
<a name="nat-gateway-troubleshooting-gateway-removed"></a>

**問題**  
您已建立 NAT 閘道，但無法在 Amazon VPC 主控台中顯示。

**原因**  
建立 NAT 閘道期間可能發生錯誤，建立失敗。大約一小時後，您便可在 Amazon VPC 主控台中看見狀態為 `Failed` 的 NAT 閘道。在一小時後，會自動刪除。

**解決方案**  
請檢閱 [NAT 閘道建立失敗](#nat-gateway-troubleshooting-failed) 中的資訊，並嘗試建立新的 NAT 閘道。

## NAT 閘道沒有回應 ping 命令
<a name="nat-gateway-troubleshooting-ping"></a>

**問題**  
當您嘗試從網際網路 (例如您的家用電腦) 或您 VPC 中的執行個體 ping NAT 閘道的彈性 IP 地址或私有 IP 地址時，您將無法取得回應。

**原因**  
NAT 閘道只會將來自私有子網路中執行個體的流量傳遞至網際網路。

**解決方案**  
若要測試您的 NAT 閘道是否正常運作，請參閱 [測試公有 NAT 閘道](nat-gateway-scenarios.md#public-nat-gateway-testing)。

## 執行個體無法存取網路
<a name="nat-gateway-troubleshooting-no-internet-connection"></a>

**問題**  
您已建立公有 NAT 閘道並依照步驟測試，但 `ping` 指令錯誤，或您的執行個體在私有子網路中無法存取網路。

**原因**  
導致此問題的原因可能為下列其中一項：
+ NAT 閘道尚未準備好服務流量。
+ 您的路由表未正確設定。
+ 您的安全群組或網路 ACLs 正阻擋輸入或傳輸流量。
+ 您正在使用不支援的通訊協定。

**解決方案**  
檢查下列資訊：
+ 檢查 NAT 閘道處於 `Available` 狀態。在 Amazon VPC 主控台中，前往 **NAT 閘道**頁面並在詳細資訊窗格中檢視狀態資訊。若 NAT 閘道處於失敗狀態，表示在建立時可能發生錯誤。如需詳細資訊，請參閱 [NAT 閘道建立失敗](#nat-gateway-troubleshooting-failed)。
+ 確認您已正確設定路由表：
  + NAT 閘道必須位於具備可將網際網路流量路由至網際網路閘道之路由表的公有子網路中。
  + 您的執行個體必須位於具備可將網際網路流量路由至 NAT 閘道之路由表的私有子網路中。
  + 檢查是否沒有其他路由表項目將所有或部分的網際網路流量路由至其他非 NAT 閘道的裝置。
+ 確認您私有執行個體的安全群組規則允許傳出網際網路流量。若要使 `ping` 命令正常運作，規則也必須允許傳出 ICMP 流量。

   NAT 閘道本身允許所有傳出流量及接收傳出請求之回應所產生的流量 (因此其具有狀態)。
+ 確認與私有子網路和公有子網路關聯的網路 ACL 沒有封鎖傳入或傳出網際網路流量的規則。若要使 `ping` 命令正常運作，規則也必須允許傳入和傳出 ICMP 流量。

  您可以啟用流程日誌，協助您診斷因網路 ACL 或安全群組規則而遭到卸除的連線。如需詳細資訊，請參閱 [使用 VPC 流量日誌來記錄 IP 流量](flow-logs.md)。
+ 若您使用 `ping` 命令，請確認您要 ping 的主機已啟用 ICMP。如果 ICMP 沒有啟用，您將無法接收回覆封包。若要測試此作業，請從您電腦的命令列終端機執行相同的 `ping` 命令。
+ 檢查您的執行個體是否能夠 ping 其他資源，例如：位於私有子網路內的其他執行個體 (假設安全群組規則允許此行為)。
+ 確認您的連線只使用 TCP、UDP 或 ICMP 通訊協定。

## TCP 連線到目標失敗
<a name="nat-gateway-troubleshooting-tcp-issues"></a>

**問題**  
您的部分執行個體 TCP 連線位於私有子網路，透過 NAT 閘道指定到特定目標成功，但是有部分失敗或逾時。

**原因**  
導致此問題的原因可能為下列其中一項：
+ 目標端點正在回應分段的 TCP 封包。NAT 閘道不支援 TCP 或 ICMP 的 IP 分段。如需詳細資訊，請參閱 [比較 NAT 執行個體和 NAT 閘道](vpc-nat-comparison.md)。
+ `tcp_tw_recycle` 選項可在遠端伺服器上啟用，已知當 NAT 裝置後方有多個連線時會導致問題。

**解決方案**  
驗證您正在嘗試連線的端點以分散的 TPC 封包回應，執行以下步驟：

1. 在公有子網路 IP 地址使用執行個體來從特定端點觸發大小足以引發分散的回應。

1. 使用 `tcpdump` 公用程式驗證端點傳送分散式封包。
**重要**  
您必須使用位於公有子網路中的執行個體執行這些檢查。您無法使用原始連線失敗的執行個體，或是位於 NAT 閘道或 NAT 執行個體後方私有子網路內的執行個體。

   傳送或接收大型 ICMP 封包的診斷工具會報告封包遺失。例如，`ping -s 10000 example.com` 命令無法在 NAT 閘道後方正常運作。

1. 若端點傳送的是分散式 TCP 封包，您可以改為使用 NAT 執行個體而非 NAT 閘道。

如果能存取遠端伺服器，您可以透過執行下列步驟驗證 `tcp_tw_recycle` 選項是否啟用：

1. 從伺服器端，執行下列命令：

   ```
   cat /proc/sys/net/ipv4/tcp_tw_recycle
   ```

   如果輸出是 `1`，則 `tcp_tw_recycle` 選項已啟用。

1. 如果 `tcp_tw_recycle` 已啟用，我們建議將其停用。如果您需要重新使用連線，`tcp_tw_reuse` 是更安全的選項。

如果您無法存許遠端伺服器，您可以透過在私有子網路中暫時停用執行個體的 `tcp_timestamps` 選項進行測試。然後再一次連線至遠端伺服器。如果連線成功，則先前錯誤的原因可能是因為 `tcp_tw_recycle` 在遠端伺服器上已啟用。如果可能，聯繫遠端伺服器的擁有者來驗證此選項已啟用，然後要求將其停用。

## Traceroute 輸出沒有顯示 NAT 閘道私有 IP 地址
<a name="nat-gateway-troubleshooting-traceroute"></a>

**問題**  
您的執行個體可存取網際網路，但當您執行 `traceroute` 命令時，輸出沒有顯示 NAT 閘道的私有 IP 地址。

**原因**  
您的執行個體會使用不同閘道存取網際網路，例如網際網路閘道。

**解決方案**  
在您執行個體所在子網路的路由表中，檢查下列資訊：
+ 確認其中有將網際網路流量傳送至 NAT 閘道的路由。
+ 確認其中沒有更明確的路由，將網際網路流量傳送至其他裝置 (例如虛擬私有閘道或網際網路閘道)。

## 網際網路連線在 350 秒之後卸除
<a name="nat-gateway-troubleshooting-timeout"></a>

**問題**  
您的執行個體可以存取網路，但連線在 350 秒後卸除。

**原因**  
若使用 NAT 閘道的連線閒置達 350 秒或以上，連線便會逾時。

如果連線逾時，NAT 閘道會對 NAT 閘道後的任何資源傳回 RST 封包來嘗試繼續連線 (不會傳送 FIN 封包)。

**解決方案**  
您可以在連線上初始化更多流量來防止連線遭到卸除。或者，您可以在執行個體上啟用 TCP 存留並且值小於 350 秒。

## 無法建立 IPsec 連線
<a name="nat-gateway-troubleshooting-ipsec"></a>

**問題**  
您無法建立 IPsec 連線至目標。

**原因**  
NAT 閘道目前不支援 IPsec 通訊協定。

**解決方案**  
您可以使用 NAT-Traversal (NAT-T) 將 IPsec 流量封裝於 UDP 中。NAT 閘道支援 UDP 通訊協定。請務必測試您的 NAT-T 和 IPsec 組態，確認您的 IPsec 流量並未遭到卸除。

## 無法初始化更多的連線
<a name="nat-gateway-troubleshooting-simultaneous-connections"></a>

**問題**  
您有透過 NAT 閘道的現有目標連線，但您無法建立更多連線。

**原因**  
您可能已達單一 NAT 閘道同時連線的上限。如需詳細資訊，請參閱 [NAT 閘道基本概念](nat-gateway-basics.md)。若您私有子網路中的執行個體建立大量的連線，您便可能達到此限制。

**解決方案**  
執行以下任意一項：
+ 在每個可用區域建立 NAT 閘道，將您的用戶端分配至這些區域。
+ 在公有子網路中建立額外的 NAT 閘道，將您的用戶端分割到多個私有子網路中，並且每個都具有連至不同 NAT 閘道的路由。
+ 限制您用戶端可連線到目標的建立連線數。
+ 使用 CloudWatch 中的 [`IdleTimeoutCount`](vpc-nat-gateway-cloudwatch.md) 指標來監控閒置連線的增量。關閉閒置連線已釋出容量。
+ 建立具有多個 IP 位址的 NAT 閘道，或將次要 IP 位址新增至現有的 NAT 閘道。每個新 IPv4 地址可支援最多 55,000 個並行連線。如需詳細資訊，請參閱 [建立 NAT 閘道](nat-gateway-working-with.md#nat-gateway-creating) 或 [編輯次要 IP 地址關聯](nat-gateway-working-with.md#nat-gateway-edit-secondary) 。