

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

# API 閘道使用案例
<a name="nat-gateway-scenarios"></a>

以下是公有和私有 NAT 閘道的範例使用案例。

**Topics**
+ [從私有子網存取網際網路](#public-nat-internet-access)
+ [使用允許清單中的 IP 地址存取您的網路](#private-nat-allowed-range)
+ [實現重疊網路之間的通訊](#private-nat-overlapping-networks)

## 從私有子網存取網際網路
<a name="public-nat-internet-access"></a>

您可以使用公有 NAT 閘道讓私有子網中的執行個體能將傳出流量傳送到網際網路，同時阻止網際網路建立與執行個體的連線。

**Topics**
+ [概要](#public-nat-gateway-overview)
+ [路由](#public-nat-gateway-routing)
+ [測試公有 NAT 閘道](#public-nat-gateway-testing)

### 概要
<a name="public-nat-gateway-overview"></a>

以下圖表說明此使用案例。有兩個可用區域，每個可用區域中皆有兩個子網。每個子網的路由表決定流量的路由方式。在可用區域 A 中，公有子網中的執行個體可以經由通往網際網路閘道的路由到達網際網路，而私有子網中的執行個體沒有通往網際網路的路由。在可用區域 B 中，公有子網包含一個 NAT 閘道，私有子網中的執行個體可經由通往公有子網中 NAT 閘道的路由到達網際網路。私有與公有 NAT 閘道皆會將執行個體的來源私有 IPv4 位址映射至私有 NAT 閘道的私有 IPv4 位址；但如果是公有 NAT 閘道，網際網路閘道會將公有 NAT 閘道的私有 IPv4 位址映射至與 NAT 閘道相關聯的彈性 IP 位址。傳送回應流量至執行個體時，無論是公有或私有 NAT 閘道，NAT 閘道都會將地址轉譯回原始來源 IP 地址。

![具有公有和私有子網、NAT 閘道和網際網路閘道的 VPC。](http://docs.aws.amazon.com/zh_tw/vpc/latest/userguide/images/public-nat-gateway-diagram.png)


請注意，如果可用區域 A 的私有子網路中的執行個體也需要連線至網際網路，您可以建立從此子網路到可用區域 B 的 NAT 閘道的路由。或者，您也可以在每個包含需要網際網路存取資源的可用區域中建立 NAT 閘道，以提高彈性。如需範例圖表，請參閱[範例：在私有子網路和 NAT 具有伺服器的 VPC](vpc-example-private-subnets-nat.md)。

### 路由
<a name="public-nat-gateway-routing"></a>

與可用區域 A 中公有子網相關聯的路由表如下。第一個項目是本機路由；讓子網中的執行個體能使用私有 IP 地址與 VPC 中的其他執行個體通訊。第二個項目會將所有其他子網流量傳送到網際網路閘道，使子網中的執行個體能夠存取網際網路。


| 目標 | Target | 
| --- | --- | 
| {{VPC CIDR}} | 區域 | 
| 0.0.0.0/0 | {{internet-gateway-id}} | 

與可用區域 A 中私有子網相關聯的路由表如下。項目是本機路由，讓子網中的執行個體能使用私有 IP 地址與 VPC 中的其他執行個體通訊。此子網中的執行個體無法存取網際網路。


| 目標 | Target | 
| --- | --- | 
| {{VPC CIDR}} | 本機 | 

與可用區域 B 中公有子網相關聯的路由表如下。第一個項目是本機路由，讓子網中的執行個體能使用私有 IP 地址與 VPC 中的其他執行個體通訊。第二個項目會將所有其他子網流量傳送到網際網路閘道，使子網中的 NAT 閘道能夠存取網際網路。


| 目標 | Target | 
| --- | --- | 
| {{VPC CIDR}} | 區域 | 
| 0.0.0.0/0 | {{internet-gateway-id}} | 

與可用區域 B 中私有子網相關聯的路由表如下。第一個項目是本機路由；讓子網中的執行個體能使用私有 IP 地址與 VPC 中的其他執行個體通訊。第二個項目會將所有其他子網的流量傳送到 NAT 閘道。


| 目標 | Target | 
| --- | --- | 
| {{VPC CIDR}} | 區域 | 
| 0.0.0.0/0 | {{nat-gateway-id}} | 

如需詳細資訊，請參閱[管理子網路路由表](WorkWithRouteTables.md)。

### 測試公有 NAT 閘道
<a name="public-nat-gateway-testing"></a>

在您建立 NAT 閘道並更新您的路由表之後，您可以從您私有子網中的執行個體 ping 網際網路上的遠端地址，測試其是否能連線到網際網路。如需如何執行此作業的範例，請參閱 [測試網際網路連線](#nat-gateway-testing-example)。

若您可以連線到網際網路，您也可以測試網際網路流量是否透過 NAT 閘道路由傳送：
+ 從私有子網中的執行個體追蹤流量的路由。若要執行此作業，請從您私有子網中的 Linux 執行個體執行 `traceroute` 命令。在輸出中，您會在其中一個躍點 (通常是第一個躍點) 看見 NAT 閘道的私有 IP 地址。
+ 在您從私有子網中的執行個體連線到來源 IP 地址時，使用可顯示地址的第三方網站或工具。來源 IP 位址應為 NAT 閘道的彈性 IP 位址。

如果這些測試失敗，請參閱[疑難排解 NAT 閘道](nat-gateway-troubleshooting.md)。

#### 測試網際網路連線
<a name="nat-gateway-testing-example"></a>

以下範例會示範私有子網中的執行個體可否連線到網際網路的測試方式。

1. 在您的公有子網中啟動執行個體 (以此做為堡壘主機)。在啟動精靈中，確認您已選取 Amazon Linux AMI，並指派一個公有 IP 地址給您的執行個體。確認您的安全群組規則允許來自您本機網路 IP 地址範圍的傳入 SSH 流量，以及目標為您私有子網 IP 地址範圍的傳出 SSH 流量 (您也可以針對此測試對傳入和傳出 SSH 流量使用 `0.0.0.0/0`)。

1. 在您的私有子網中啟動執行個體。在啟動精靈中，確認您已選取 Amazon Linux AMI。請勿指派公有 IP 地址給您的執行個體。確認您的安全群組規則允許來自您在公有子網中啟動之執行個體私有 IP 地址的傳入 SSH 流量，以及所有傳出 ICMP 流量。您所選擇的金鑰對必須與您用來在公有子網中啟動執行個體的金鑰對相同。

1. 在本機電腦上設定 SSH 代理程式轉送，然後連線到公有子網中的堡壘主機。如需詳細資訊，請參閱 [設定 Linux 或 macOS 的 SSH 代理程式轉送](#ssh-forwarding-linux) 或 [設定 Windows 的 SSH 代理程式轉送](#ssh-forwarding-windows)。

1. 從您的堡壘主機連線到您私有子網中的執行個體，然後從您私有子網中的執行個體測試網際網路連線。如需詳細資訊，請參閱 [測試網際網路連線](#test-internet-connection)。<a name="ssh-forwarding-linux"></a>

**設定 Linux 或 macOS 的 SSH 代理程式轉送**

1. 從您的本機電腦，將您的私有金鑰新增至身分驗證代理程式。

   針對 Linux，請使用以下命令。

   ```
   ssh-add -c mykeypair.pem
   ```

   針對 macOS，請使用以下命令。

   ```
   ssh-add -K mykeypair.pem
   ```

1. 使用 `-A` 選項連線到您公有子網中的執行個體，以啟用 SSH 代理程式轉送，並使用執行個體的公有地址，如下列範例所示：

   ```
   ssh -A ec2-user@{{54.0.0.123}}
   ```<a name="ssh-forwarding-windows"></a>

**設定 Windows 的 SSH 代理程式轉送**  
您可以使用 Windows 中可用的 OpenSSH 用戶端，或安裝您偏好的 SSH 用戶端 (例如 PuTTY)。

------
#### [ OpenSSH ]

如本文所述，安裝 OpenSSH for Windows：[OpenSSH for Windows 入門](https://learn.microsoft.com/en-us/windows-server/administration/openssh/openssh_install_firstuse)。然後將您的金鑰新增到身分驗證代理程式。如需詳細資訊，請參閱《[OpenSSH for Windows 中的金鑰型身分驗證](https://learn.microsoft.com/en-us/windows-server/administration/openssh/openssh_keymanagement)》。

------
#### [ PuTTY ]

1. 如果您尚未安裝 Pageant，請轉至 [PuTTY 下載頁面](https://www.chiark.greenend.org.uk/~sgtatham/putty/)下載及安裝。

1. 將您的私有金鑰轉換成 .ppk 格式。如需詳細資訊，請參閱《Amazon EC2 使用者指南》**中的[使用 PuTTYgen 轉換私有金鑰](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/connect-linux-inst-from-windows.html#putty-private-key)。

1. 啟動 Pageant，在任務列的 Pageant 圖示 (可能隱藏) 上按一下滑鼠右鍵，然後選擇 **Add Key (新增金鑰)**。選取您建立的 .ppk 檔案，如需要則輸入密碼短語，然後選擇 **Open** (開啟)。

1. 啟動 PuTTY 工作階段，並使用其公有 IP 地址連線至您公有子網中的執行個體。如需詳細資訊，請參閱[使用 PuTTY 連線至 Linux 執行個體](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/connect-linux-inst-from-windows.html)。在 **Auth** (身分驗證) 類別中，確認您已選取 **Allow agent forwarding** (允許代理程式轉送) 選項，並將 **Private key file for authentication** (身分驗證的私有金鑰檔案) 方塊維持空白。

------<a name="test-internet-connection"></a>

**測試網際網路連線**

1. 從您公有子網中的執行個體，使用其私有 IP 地址連線到您私有子網中的執行個體，如下列範例所示：

   ```
   ssh ec2-user@{{10.0.1.123}}
   ```

1. 從私有執行個體，針對啟用 ICMP 的網站執行 `ping` 命令，以測試您是否能連線至網際網路。

   ```
   ping ietf.org
   ```

   ```
   PING ietf.org (4.31.198.44) 56(84) bytes of data.
   64 bytes from mail.ietf.org (4.31.198.44): icmp_seq=1 ttl=47 time=86.0 ms
   64 bytes from mail.ietf.org (4.31.198.44): icmp_seq=2 ttl=47 time=75.6 ms
   ...
   ```

   按下鍵盤上的 **Ctrl\+C** 取消 `ping` 命令。若 `ping` 命令失敗，請參閱 [執行個體無法存取網路](nat-gateway-troubleshooting.md#nat-gateway-troubleshooting-no-internet-connection)。

1. (選用) 若您不再需要您的執行個體，請予以終止。如需詳細資訊，請參閱*《Amazon EC2 使用者指南》*中的[終止您的執行個體](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/terminating-instances.html)。

## 使用允許清單中的 IP 地址存取您的網路
<a name="private-nat-allowed-range"></a>

您可以使用私有 NAT 閘道，利用允許清單中的地址集區，實現從 VPC 對內部部署網路的通訊。您可以經由具有允許清單 IP 地址範圍內 IP 地址的私有 NAT 閘道，路由來自以內部部署網路為目的地的子網的流量，而不用從允許清單 IP 地址範圍中為每個執行個體指派單獨的 IP 地址。

**Topics**
+ [概要](#private-nat-allowed-range-overview)
+ [Resources](#private-nat-allowed-range-resources)
+ [路由](#private-nat-allowed-range-routing)

### 概要
<a name="private-nat-allowed-range-overview"></a>

下圖顯示執行個體如何透過 存取內部部署資源 Site-to-Site VPN。來自執行個體的流量透過 VPN 連接路由到虛擬私有閘道、客戶閘道，然後到內部部署網路中的目的地。但是，假設目的地僅允許來自特定 IP 地址範圍 (例如 100.64.1.0/28) 的流量，此將阻止來自這些執行個體的流量到達內部部署網路。

![使用 Site-to-Site VPN 連線存取內部部署網路。](http://docs.aws.amazon.com/zh_tw/vpc/latest/userguide/images/allowed-range.png)


下圖顯示此案例組態的重要元件。VPC 具有其原始 IP 地址範圍和允許的 IP 地址範圍。VPC 具有來自允許 IP 地址範圍的子網以及一個私有 NAT 閘道。會將來自以內部部署網路為目的地的執行個體的流量發送至 NAT 閘道，然後再路由到 VPN 連接。內部部署網路會接收來自具有 NAT 閘道來源 IP 地址 (來自允許的 IP 地址範圍內) 的執行個體的流量。

![透過私有 NAT 閘道路由的 VPC 子網路流量](http://docs.aws.amazon.com/zh_tw/vpc/latest/userguide/images/private-nat-allowed-range.png)


### Resources
<a name="private-nat-allowed-range-resources"></a>

建立或更新資源，如下所示：
+ 將允許的 IP 地址範圍關聯至 VPC。
+ 從允許的 IP 地址範圍內在 VPC 中建立子網。
+ 在新子網中建立私有 NAT 閘道。
+ 使用執行個體更新子網的路由表，以便將以內部部署網路為目的地的流量發送至 NAT 閘道。將路由新增至具有私有 NAT 閘道的子網的路由表，其會將以內部部署網路為目的地的流量發送至虛擬私有閘道。

### 路由
<a name="private-nat-allowed-range-routing"></a>

以下為與第一個子網相關聯的路由表。每個 VPC CIDR 都有一個本地路由。本地路由讓子網中的資源能使用私有 IP 地址與 VPC 中的其他資源通訊。第三個條目將以內部部署網路為目的地的流量發送至私有 NAT 閘道。


| 目標 | 目標 | 
| --- | --- | 
| {{10.0.0.0/16}} | 本機 | 
| {{100.64.1.0/24}} | 本機 | 
| {{192.168.0.0/16}} | {{nat-gateway-id}} | 

以下為與第二個子網相關聯的路由表。每個 VPC CIDR 都有一個本地路由。本地路由讓子網中的資源能使用私有 IP 地址與 VPC 中的其他資源通訊。第三個條目將以內部部署網路為目的地的流量發送至虛擬私有閘道。


| 目標 | 目標 | 
| --- | --- | 
| {{10.0.0.0/16}} | 本機 | 
| {{100.64.1.0/24}} | 本機 | 
| {{192.168.0.0/16}} | {{vgw-id}} | 

## 實現重疊網路之間的通訊
<a name="private-nat-overlapping-networks"></a>

您可以使用私有 NAT 閘道實現網路之間的通訊，即使網路具有重疊的 CIDR 範圍。例如，假設 VPC A 中的執行個體需要存取由 VPC B 中執行個體提供的服務。

![兩個 VPC 具有重疊的 CIDR 範圍。](http://docs.aws.amazon.com/zh_tw/vpc/latest/userguide/images/overlapping-networks.png)


**Topics**
+ [概要](#private-nat-overlapping-networks-overview)
+ [Resources](#private-nat-overlapping-networks-resources)
+ [路由](#private-nat-overlapping-networks-routing)

### 概要
<a name="private-nat-overlapping-networks-overview"></a>

下圖顯示此案例組態的重要元件。首先，IP 管理團隊要決定哪些位址範圍可以重疊 (不可路由位址範圍)，哪些範圍不能重疊 (可路由位址範圍)。IP 管理團隊根據請求，從可路由地址範圍的集區中將地址分配給專案。

每個 VPC 都有其不可路由的原始 IP 地址範圍，以及 IP 管理團隊指派給該 VPC 的可路由 IP 地址範圍。VPC A 具有一個來自其可路由範圍的子網以及一個私有 NAT 閘道。私有 NAT 閘道從其子網取得其 IP 地址。VPC B 具有一個來自其可路由範圍的子網以及一個 Application Load Balancer。Application Load Balancer 從其子網取得其 IP 地址。

以 VPC B 不可路由子網中的執行個體為目的地之來自 VPC A 不可路由子網中的執行個體的流量經由私有 NAT 閘道發送，然後路由至傳輸閘道。傳輸閘道將流量發送至 Application Load Balancer，由其將流量路由至 VPC B 不可路由子網中的其中一個目標執行個體。從轉換閘道到 Application Load Balancer 的流量具有私有 NAT 閘道的來源 IP 地址。因此，來自負載平衡器的回應流量使用私有 NAT 閘道的地址作為其目的地。將回應流量發送至傳輸閘道，然後路由至私有 NAT 閘道，其會將目的地轉換為 VPC A 不可路由子網中的執行個體。

![具有私有 NAT 閘道和傳輸閘道的 VPC，用於與重疊 CIDR 進行 VPC 間通訊](http://docs.aws.amazon.com/zh_tw/vpc/latest/userguide/images/private-nat-overlapping-networks.png)


### Resources
<a name="private-nat-overlapping-networks-resources"></a>

建立或更新資源，如下所示：
+ 將分派到的可路由 IP 地址範圍與其各自的 VPC 相關聯。
+ 在 VPC A 中從其可路由 IP 地址範圍中建立子網，並在此新子網中建立私有 NAT 閘道。
+ 在 VPC B 中從其可路由 IP 地址範圍中建立子網，並在此新子網中建立 Application Load Balancer。註冊不可路由子網中的執行個體以及目標群組，以便用於負載平衡器。
+ 建立傳輸閘道以連接至 VPC。確認停用路由傳播。將每個 VPC 連接至傳輸閘道時，應使用 VPC 的可路由地址範圍。
+ 更新 VPC A 中不可路由子網的路由表，以便將以 VPC B 可路由地址範圍為目的地的所有流量發送至私有 NAT 閘道。更新 VPC A 中可路由子網的路由表，以便將以 VPC B 可路由地址範圍為目的地的所有流量發送至傳輸閘道。
+ 更新 VPC B 中可路由子網的路由表，以便將以 VPC A 可路由地址範圍為目的地的所有流量發送至傳輸閘道。

### 路由
<a name="private-nat-overlapping-networks-routing"></a>

以下為 VPC A 中不可路由子網的路由表。


| 目標 | 目標 | 
| --- | --- | 
| {{10.0.0.0/16}} | 本機 | 
| {{100.64.1.0/24}} | 本機 | 
| {{100.64.2.0/24}} | {{nat-gateway-id}} | 

以下為 VPC A 中可路由子網的路由表。


| 目標 | 目標 | 
| --- | --- | 
| {{10.0.0.0/16}} | 本機 | 
| {{100.64.1.0/24}} | 本機 | 
| {{100.64.2.0/24}} | {{transit-gateway-id}} | 

以下為 VPC B 中不可路由子網的路由表。


| 目標 | 目標 | 
| --- | --- | 
| {{10.0.0.0/16}} | 本機 | 
| {{100.64.2.0/24}} | 本機 | 

以下為 VPC B 中可路由子網的路由表。


| 目標 | 目標 | 
| --- | --- | 
| {{10.0.0.0/16}} | 本機 | 
| {{100.64.2.0/24}} | 本機 | 
| {{100.64.1.0/24}} | {{transit-gateway-id}} | 

以下為傳輸閘道路由表。


| CIDR | 連接 | 路由類型 | 
| --- | --- | --- | 
| {{100.64.1.0/24}} | {{VPC A 的連接}} | 靜態 | 
| {{100.64.2.0/24}} | {{VPC B 的連接}} | 靜態 | 