如何使用 NAT 閘道設定 AWS Network Firewall?

上次更新日期:2023 年 2 月 27 日

我想要將 AWS Network Firewall 設定為使用 NAT 閘道檢查流量。

簡短描述

AWS Network Firewall 可針對 Amazon Virtual Private Cloud (Amazon VPC) 內的資源進出流量提供更精細的控制。為了保護 Amazon VPC 資源,您可以在自己的子網路中部署網路防火牆端點,並透過這些端點路由工作負載執行個體流量。為此,請執行下列動作:

  • 建立 VPC
  • 建立防火牆
  • 設定流量路由

備註:Network Firewall 無法檢查部署防火牆端點所在之相同子網路中的工作負載。

解決方案

建立 VPC

  1. 開啟 Amazon VPC 主控台
  2. 在 VPC 儀表板上,按一下建立 VPC
  3. VPC 設定下,輸入下列項目:
    選擇 VPC 等等
    名稱標籤自動產生下,輸入 VPC 的名稱。在此範例中,VPC 的名稱為 Protected_VPC_10.0.0.0_16-vpc。如果選取自動產生選項,該名稱將作為名稱標籤新增至 VPC 中的所有資源。
    對於 IPv4 CIDR 區塊,請輸入 10.0.0/16
    對於 IPv6 CIDR 區塊,請選擇無 IPv6 CIDR 區塊
    對於租用,選擇預設
    對於可用區域 (AZ) 數目,請選擇 2
    自訂 AZ下,選擇兩個可用區域。在此範例中,選取 us-east-2aus-east-2b
    對於公有子網路的數目選擇 2
    對於私有子網路的數目選擇 4。其中兩個私有子網路用於防火牆,另外兩個用於工作負載子網路。
    對於 NAT 閘道 ($),請選擇每個 AZ 1 個。NAT 閘道會自動部署在公有子網路中。
    對於 VPC 端點,請選擇
  4. 選擇建立 VPC
  5. 依據其用途命名子網路:
    這兩個公有子網路用於 NAT 閘道,在此範例中分別名為 Public_Subnet_AZaPublic_Subnet_AZb
    兩個私有子網路用於防火牆端點,在此範例中分別名為 Firewall_Subnet_AZaFirewall_Subnet_AZb
    另外兩個私有子網路用於工作負載端點,在此範例中分別名為 Private_Subnet_AZaPrivate_Subnet_AZb

建立防火牆

  1. 在瀏導覽窗格的網路防火牆下,選擇防火牆
  2. 選擇建立防火牆
  3. 建立防火牆下,輸入下列內容:
    輸入防火墻的名稱。在此範例中,防火牆的名稱為 Network-Firewall-Test
    對於 VPC,選擇 Protected_VPC_10.0.0.0_16-vpc
    對於防火牆子網路,請選擇第一個可用區域 (us-east-2a),然後為子網路選擇 Firewall_Subnet_AZa。接下來,選擇新增子網絡,針對第二個可用區域 (us-east-2b) 重複上述步驟,並為子網路選擇 Firewall_Subnet_AZb
    對於關聯的防火牆政策,選擇建立並關聯空的防火牆政策
    對於新防火牆政策名稱,輸入新政策的名稱。
  4. 選擇建立防火牆。每個子網路都必須有唯一的路由表。四個私有子網路具有與其相關聯的唯一路由表,而公有子網路則共用路由表。您必須使用網際網路閘道的靜態路由來建立新的路由表,並將其與其中一個公有子網路產生關聯。

設定流量路由

流量流動方式如下:

  • 從 AZa 中的工作負載執行個體起始的流量會轉送到 AZa 中的防火牆端點。
  • AZa 中的防火牆端點會將流量路由到 AZa 中的 NAT 閘道。
  • AZa 中的 NAT 閘道會將流量轉送至與 VPC 相關聯的網際網路閘道。
  • 網際網路閘道將流量轉送到網際網路。

反向流量沿相反方向遵循相同的路徑流動:

  • 將來自網際網路的流量傳回連接至 VPC 的網際網路閘道。VPC 只能連接一個網際網路閘道。
  • 網際網路閘道將流量轉送至 AZa 中的 NAT 閘道。網際網路閘道會依據工作負載可用區域做出流量轉送決定。由於流量的目的地位於 AZa 中,因此網際網路閘道會選取 AZa 中的 NAT 閘道以轉送流量。無需為網際網路閘道維護路由表。
  • AZa 中的 NAT 閘道會將流量轉送至 AZa 中的防火牆端點。
  • AZa 中的防火牆端點將流量轉送至 AZa 中的工作負載。

備註:網際網路閘道可針對從網際網路傳回工作負載執行個體的封包識別 NAT 閘道。

建立 VPC 和防火牆之後,您必須設定路由表。設定路由表時,請記住下列事項:

  • AZa 中的私有子網路 (Private_Subnet_AZa) 會將所有傳往網際網路的流量轉送至 AZa 中的防火牆端點 (Firewall_Subnet_AZa)。對 AZb 中的私有子網路和 AZb 中的防火牆端點重複此步驟。
  • AZa 中的防火牆子網路 (Firewall_Subnet_AZa) 會將所有傳往網際網路的流量轉送至 AZa 中的 NAT 閘道 (Public_Subnet_AZa)。對 AZb 中的防火牆子網路和 AZb 中的 NAT 閘道重複此步驟。
  • AZa 中的公有子網路 (Public_Subnet_AZa) 會將所有流量轉送至連接至 VPC 的網際網路閘道。
  • 沿著相同的路徑以反方向傳回流量。

備註:流量會保留在相同的可用區域中,因此網路防火牆會同時透過相同的防火牆端點進行輸出和輸入流量路由。這可讓每個可用區域中的防火牆端點對封包進行狀態檢查。

以下是路由表的範例組態。

Public_Subnet_RouteTable_AZa (子網路關聯:Public_Subnet_AZa)

目的地 目標
0.0.0.0/0 網際網路閘道
10.0.0.0/16 本機
10.0.128.0/20 AZa 中的防火牆端點

備註:在此範例中,10.0.128.0/20 是 Private_Subnet_AZa 的 CIDR。

Public_Subnet_RouteTable_AZb (子網路關聯:Public_Subnet_AZb)

目的地 目標
0.0.0.0/0 網際網路閘道
10.0.0.0/16 本機
10.0.16.0/20 AZa 中的防火牆端點

備註:在此範例中,10.0.16.0/20 是 Private_Subnet_AZb 的 CIDR。

Firewall_Subnet_RouteTable_AZa (子網路關聯:Firewall_Subnet_AZa)

目的地 目標
0.0.0.0/0 Public_Subnet_AZa 中的 NAT 閘道
10.0.0.0/16 本機

Firewall_Subnet_RouteTable_AZb (子網路關聯:Firewall_Subnet_AZb)

目的地 目標
0.0.0.0/0 Public_Subnet_AZa 中的 NAT 閘道
10.0.0.0/16 本機

Private_Subnet_RouteTable_AZa (子網路關聯:Private_Subnet_AZa)

目的地 目標
0.0.0.0/0 AZa 中的防火牆端點
10.0.0.0/16 本機

Private_Subnet_RouteTable_AZb (子網路關聯:Private_Subnet_AZb)

目的地 目標
0.0.0.0/0 AZb 中的防火牆端點
10.0.0.0/16 本機

若要驗證路由是否設定正確,可以在其中一個私有子網路中部署 EC2 執行個體,以測試您的網際網路連線。如果沒有在網路防火牆政策中設定任何規則,則不會檢查流量,並且其可以傳送至網際網路。確認路由、安全群組和網路存取控制清單 (網路 ACL) 已設定之後,請將規則新增至防火牆政策。

備註:您也可以設定 Network Firewall,將來自網際網路的流量路由經過防火牆,然後到達 NAT 閘道。如需更多資訊,請參閲具有網際網路閘道和 NAT 閘道的架構