NAT 閘道 - Amazon Virtual Private Cloud

NAT 閘道

您可以使用網路位址轉譯 (NAT) 閘道讓私有子網路中的執行個體連線至網際網路或其他 AWS 服務,但防止網際網路啟動與這些執行個體的連線。如需 NAT 的詳細資訊,請參閱「NAT」。

您將需要為您帳戶中建立及使用的 NAT 閘道支付費用。適用的費率為 NAT 閘道的每小時用量率及資料處理率。同時也適用 Amazon EC2 資料傳輸費。如需詳細資訊,請參閱 Amazon VPC 定價

NAT 閘道不支援 IPv6 流量 —,請改用傳出限定 (僅限輸出) 的網際網路閘道。如需詳細資訊,請參閱「輸出限定網際網路閘道」。

NAT 閘道基本概念

若要建立 NAT 閘道,您必須指定 NAT 閘道所在的公有子網路。如需公有與私有子網路的詳細資訊,請參閱 子網路路由。您也必須在建立時指定要與 NAT 閘道建立關聯的彈性 IP 地址。彈性 IP 地址與 NAT 閘道相關聯後即無法更改。在您建立 NAT 閘道之後,您必須更新與您一或多個私有子網路關聯的路由表,將網際網路的流量指向 NAT 閘道。這可讓您私有子網路中的執行個體與網際網路通訊。

每個 NAT 閘道都是在特定的可用區域內建立,並且使用該區域中的備援實作。您能夠在可用區域中建立的 NAT 閘道數量具有配額。如需更多詳細資訊,請參閱 Amazon VPC 配額

注意

若您在多個可用區域中皆有資源,且他們都共享同一個 NAT 閘道,則若 NAT 閘道的可用區域未運作時,其他可用區域中的資源都會喪失網際網路存取權。若要建立獨立於可用區域外的架構,請在每個可用區域中建立 NAT 閘道,然後設定您的路由,確保資源使用相同可用區域內的 NAT 閘道。

若您不再需要 NAT 閘道,您可以予以刪除。刪除 NAT 閘道會取消關聯其彈性 IP 地址,但不會從您的帳戶釋出地址。

下圖說明具備 NAT 閘道的 VPC 架構。主路由表會將來自私有子網路中執行個體的網際網路流量傳送至 NAT 閘道。NAT 閘道會使用 NAT 閘道的彈性 IP 地址做為來源 IP 地址,將流量傳送到網際網路閘道。


          含公有和私有子網路以及 NAT 閘道的 VPC

NAT 閘道規則與限制

NAT 閘道具有以下特性及限制:

  • NAT 閘道支援 5 Gbps 的頻寬,並可自動擴展至 45 Gbps。若您需要更多頻寬,您可以透過將您的資源分割到多個子網路,並在每個子網路中建立 NAT 閘道,來分散工作負載。

  • 您僅能將一個彈性 IP 地址與一個 NAT 閘道建立關聯。您無法在建立 NAT 閘道之後取消與彈性 IP 地址的關聯。若要針對您的 NAT 閘道使用不同的彈性 IP 地址,您必須使用需要的地址建立新的 NAT 閘道、更新您的路由表,然後刪除現有的 NAT 閘道 (若不再需要的話)。

  • NAT 閘道支援以下通訊協定:TCP、UDP 和 ICMP。

  • 您無法建立安全群組與 NAT 閘道的關聯。您可以使用私有子網路中執行個體的安全群組,來控制進出這些執行個體的流量。

  • 您可以使用網路 ACL 控制流入及流出 NAT 閘道所在之子網路的流量。網路 ACL 適用於 NAT 閘道的流量。NAT 閘道使用連接埠 1024–65535。如需詳細資訊,請參閱 網路 ACL

  • 當建立 NAT 閘道時,它會接收到從您子網路 IP 地址範圍獲得自動指派私有 IP 地址的網路界面。您可以在 Amazon EC2 主控台中檢視 NAT 閘道的網路界面。如需詳細資訊,請參閱檢視網路界面的詳細資訊。您無法修改此網路界面的屬性。

  • NAT 閘道無法由與您 VPC 關聯的 ClassicLink 連線存取。

  • 您無法透過 VPC 互連連線、Site-to-Site VPN 連接或 AWS Direct Connect 將流量路由至 NAT 閘道。NAT 閘道無法由這些連線另一端的資源使用。

  • NAT 閘道可支援最多 55,000 個連至每個唯一目標的同時連線。若您每秒建立大約 900 個連至單一目標的連線 (即每分鐘約 55,000 個連線),也適用此限制。若目標 IP 地址、目標連接埠,或是通訊協定 (TCP/UDP/ICMP) 發生變更,您可以建立額外 55,000 個連線。針對超過 55,000 個連線的情況,因連接埠配置錯誤而產生連線錯誤的機率可能會提升。這些錯誤可透過檢視您 NAT 閘道的 ErrorPortAllocation CloudWatch 指標來監控。如需詳細資訊,請參閱使用 Amazon CloudWatch 監控 NAT 閘道

從 NAT 執行個體遷移

若您已在使用 NAT 執行個體,您可以使用 NAT 閘道予以取代。若要執行此作業,您可以在相同子網路中建立 NAT 閘道做為您的 NAT 執行個體,然後使用指向 NAT 閘道的路由取代您路由表中指向 NAT 執行個體的現有路由。若要針對 NAT 閘道使用您目前用於 NAT 執行個體的相同彈性 IP 地址,您必須先取消與您 NAT 執行個體之彈性 IP 地址的關聯,然後在建立閘道時將其與您的 NAT 閘道建立關聯。

注意

若您將您的路由從 NAT 執行個體變更為 NAT 閘道,或者您取消彈性 IP 地址與您 NAT 執行個體的關聯,則任何目前連線都會遭到卸除,需要重新建立。請確認您沒有任何執行中的關鍵任務 (或其他透過 NAT 執行個體操作的任務)。

傳送流量到相同區域中的 Amazon S3 或 DynamoDB 的最佳實務

為避免在存取位於相同區域的 Amazon S3 與 DynamoDB 時發生 NAT 閘道的資料處理費用,請設定閘道端點並將流量經由閘道端點路由,而非經由 NAT 閘道。使用閘道端點不需付費。如需詳細資訊,請參閱閘道 VPC 端點

使用 NAT 閘道

您可以使用 Amazon VPC 主控台來建立、檢視及刪除 NAT 閘道。您也可以使用 Amazon VPC 精靈來建立具有公有子網路、私有子網路,以及 NAT 閘道的 VPC。如需詳細資訊,請參閱具公有和私有子網路 (NAT) 的 VPC

正在建立 NAT 閘道

若要建立 NAT 閘道,您必須指定子網路及彈性 IP 地址。確認彈性 IP 地址目前並未與執行個體或網路界面建立關聯。若您要從 NAT 執行個體遷移至 NAT 閘道,並希望一樣使用 NAT 執行個體的彈性 IP 地址,您必須先取消 NAT 執行個體與地址的關聯。

建立 NAT 閘道

  1. https://console.aws.amazon.com/vpc/ 開啟 Amazon VPC 主控台。

  2. 在導覽窗格中,選擇 NAT Gateways (NAT 閘道)Create NAT Gateway (建立 NAT 閘道)

  3. 指定要建立 NAT 閘道的子網路,然後選取要和 NAT 閘道建立關聯的彈性 IP 地址配置 ID。

  4. (選用) 新增或移除標籤。

    [新增標籤] 選擇 Add tag (新增標籤),並執行下列動作:

    • 對於 Key (金鑰),輸入金鑰名稱。

    • 對於 Value (值),輸入金鑰值

    [移除標籤] 選擇標籤 Key (金鑰) 和 Value (值) 右邊的刪除按鈕 (「x」)。

  5. 選擇 建立 NAT 閘道

  6. NAT 閘道會顯示於主控台中。稍待片刻之後,其狀態會變更為 Available,表示準備好供您使用。

若 NAT 閘道的狀態變更為 Failed 狀態,表示在建立過程中發生錯誤。如需詳細資訊,請參閱「NAT 閘道建立失敗」。

正在更新路由表

在您建立 NAT 閘道之後,您必須更新您私有子網路的路由表,使其將網際網路流量指向 NAT 閘道。我們會使用最具體且符合流量的路由,從而判斷如何路由流量 (最長的字首相符)。如需詳細資訊,請參閱 路由優先順序

建立 NAT 閘道的路由

  1. https://console.aws.amazon.com/vpc/ 開啟 Amazon VPC 主控台。

  2. 在導覽窗格中,選擇 Route Tables (路由表)

  3. 選取與您私有子網路關聯的路由表,然後選擇 Routes (路由)Edit (編輯)

  4. 選擇 Add another route (新增其他路由)。針對 Destination (目標),輸入 0.0.0.0/0。針對 Target (目標),選取您 NAT 閘道的 ID。

    注意

    若您要從使用 NAT 執行個體遷移,可以使用指向 NAT 閘道的路由取代指向 NAT 執行個體的現有路由。

  5. 選擇 Save (儲存)。

若要確保您的 NAT 閘道可存取網際網路,與您 NAT 閘道所在之子網路關聯的路由表必須包含將網際網路流量指向網際網路閘道的路由。如需詳細資訊,請參閱 建立自訂路由表。若您刪除 NAT 閘道,NAT 閘道路由會繼續處於 blackhole 狀態,直到您刪除或更新路由。如需詳細資訊,請參閱 從路由表新增和移除路由

刪除 NAT 閘道

您可以使用 Amazon VPC 主控台刪除 NAT 閘道。在您刪除 NAT 閘道之後,其項目仍會在 Amazon VPC 主控台中顯示一小段時間 (通常是一個小時),之後便會自動移除。您無法自行移除此項目。

刪除 NAT 閘道

  1. https://console.aws.amazon.com/vpc/ 開啟 Amazon VPC 主控台。

  2. 在導覽窗格中,選擇 NAT Gateways (NAT 閘道)

  3. 選取 NAT 閘道,然後選擇 Actions (動作)Delete NAT Gateway (刪除 NAT 閘道)

  4. 在確認對話方塊中,選擇 Delete NAT Gateway (刪除 NAT 閘道)

測試 NAT 閘道

在您建立 NAT 閘道並更新您的路由表之後,您可以從您私有子網路中的執行個體 ping 網際網路上的幾個遠端位址,測試其是否能連線到網際網路。如需如何執行此作業的範例,請參閱 測試網際網路連線

若您可以連線到網際網路,您也可以執行下列測試來判斷網際網路流量是否已透過 NAT 閘道路由:

  • 您可以從私有子網路中的執行個體追蹤流量的路由。若要執行此作業,請從您私有子網路中的 Linux 執行個體執行 traceroute 命令。在輸出中,您會在其中一個躍點看見 NAT 閘道的私有 IP 地址 (通常是第一個躍點)。

  • 在您從私有子網路中的執行個體連線到來源 IP 地址時,使用可顯示地址的第三方網站或工具。來源 IP 地址應為您 NAT 閘道的彈性 IP 地址。您可以透過在 Amazon VPC 主控台中的 NAT Gateways (NAT 閘道) 頁面上檢視其資訊,來取得您 NAT 閘道的彈性 IP 地址及私有 IP 地址。

若先前的測試失敗,請參閱 為 NAT 閘道進行疑難排解

測試網際網路連線

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

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

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

  3. 在本機電腦上設定 SSH 代理程式轉送,然後連線到公有子網路中的堡壘主機。如需詳細資訊,請參閱 設定 Linux 或 macOS 的 SSH 代理程式轉送設定 Windows (PuTTY) 的 SSH 代理程式轉送

  4. 從您的堡壘主機連線到您私有子網路中的執行個體,然後從您私有子網路中的執行個體測試網際網路連線。如需詳細資訊,請參閱 測試網際網路連線

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

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

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

    ssh-add -c mykeypair.pem

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

    ssh-add -K mykeypair.pem
  2. 使用 -A 選項連線到您公有子網路中的執行個體,以啟用 SSH 代理程式轉送,並使用執行個體的公有地址,如下列範例所示:

    ssh -A ec2-user@54.0.0.123

設定 Windows (PuTTY) 的 SSH 代理程式轉送

  1. 如果您尚未安裝 Pageant,請至 PuTTY 下載頁面下載及安裝。

  2. 將您的私有金鑰轉換成 .ppk 格式。如需詳細資訊,請參閱 Linux 執行個體的 Amazon EC2 使用者指南 中的使用 PuTTYgen 轉換私密金鑰

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

  4. 啟動 PuTTY 工作階段,並使用其公有 IP 地址連線至您公有子網路中的執行個體。如需詳細資訊,請參閱連接至 Linux 執行個體。在 Auth (身份驗證) 類別中,確認您已選取 Allow agent forwarding (允許代理程式轉送) 選項,並將 Private key file for authentication (身份驗證的私有金鑰檔案) 方塊維持空白。

測試網際網路連線

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

    ssh ec2-user@10.0.1.123
  2. 從私有執行個體,針對啟用 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 命令失敗,請參閱 執行個體無法存取網路

  3. (選用) 若您不再需要您的執行個體,請予以終止。如需詳細資訊,請參閱 Linux 執行個體的 Amazon EC2 使用者指南 中的終止您的執行個體

控制 NAT 閘道的使用方式

根據預設,IAM 使用者沒有使用 NAT 閘道的許可。您可以建立 IAM 使用者政策,將建立、描述和刪除 NAT 閘道的許可授予使用者。我們目前不支援任何 ec2:*NatGateway* API 操作的資源層級許可。如需 Amazon VPC 的 IAM 政策之詳細資訊,請參閱Amazon VPC 的 Identity and Access Management

為 NAT 閘道加上標籤

您可為您的 NAT 閘道新增標籤,以利您根據組織需求識別或分類。如需使用標籤的資訊,請參閱 Linux 執行個體的 Amazon EC2 使用者指南 中的為您的 Amazon EC2 資源加上標記

NAT 閘道支援成本分配標籤。因此,您也可以使用標籤整理您的 AWS 帳單,並反映您自己的成本結構。如需詳細資訊,請參閱 AWS Billing and Cost Management 使用者指南 中的使用成本分配標籤。如需使用標籤設定成本配置報告的詳細資訊,請參閱關於 AWS 帳戶帳單中的每月成本配置報告

API 和 CLI 概觀

您可以使用命令列或 API 執行此頁面所述的任務。如需命令列界面的詳細資訊與可用的 API 操作清單,請參閱 存取 Amazon VPC

建立 NAT 閘道

為 NAT 閘道新增標籤

描述 NAT 閘道

刪除 NAT 閘道