[AWS] VPC 設定指南 (NAT Gateway)

Intro

AWS VPC為提供完整雲端網路架構設定。


服務定義 (Definitions)

Compare AWS and Azure services to Google Cloud

Diagram
(Reference: Ashish Patel Medium)

  • VPC (Virtual Private Cloud)
    可視為一個 AWS tenant 的虛擬網路,CIDR 限制可以參考 VPC CIDR blocks

    CIDR (Classless Inter-Domain Routing): 通過可變長度的子網路遮罩來劃分 IP 地址的方法
    Private IPv4 ranges (RFC-1918): 10.0.0.0/8, 172.16.0.0/12, 192.168.0.0/16

  • Subnet
    在 VPC 內切割子網段,預設會建立(關聯)在該 VPC main route table 下

  • Route tables

    • 可視為 VPC 下單張虛擬 Route table,與 Router 概念不同
    • 一對多關聯於同 VPC 下 subnets (Network ACL & Subnet pair)
    • 建立時會預設好一組所屬 VPC 的 IP CIDR (Target: local)。同 VPC 下的多張 Route table 預設直接互通
  • Gateway

    • Internet gateways: VPC 連接外網閘道,Route table 設定此閘道下的 Instance 關聯 EIP 即可連接外網
    • NAT gateways: NAT as service,指定建立於 Public subnet (對應 route table 是接 IGW) 中,並讓 Route table 指定轉發連接外網
  • Network ACLs

    • 可視為 Subnet level Firewall,一對多關聯於同 VPC 下 subnets
    • 可用來阻隔 subnets
  • Security groups
    可視為 Instance level Firewall,一對多關聯於同 VPC 下 instances


VPC 基本網路設定

  • 建立 VPC,預設會創建一張 Main Route table
  • 建立 Internet gateway, 並將 VPC Route table 的預設 Destination (0.0.0.0/0) 設定此 Internet gateway 以開通外網連接
  • 建立 Subnet 並指定 Route table
  • 以上完成 VPC 架構設定後,創建的 instance (另須指定 Security group) 網路就會按照位於的 subnet 走

NAT Gateway

Diagram
AWS - VPC with Public and Private Subnets (NAT)

以上官網文件與架構圖提供完整概念。

NAT Subnet 架構

  1. 建立/編輯 VPC,至少兩個 Route Table:一個 0.0.0.0/0閘道接外網閘道(IGW);另一個0.0.0.0/0閘道先不設定(留給 NAT Gateway)
  2. 建立一個 Public subnet (關聯到 IGW route table),與一個 Private subnet (關聯到另一個 NAT Gateway 用途 route table),而此兩個 subnets 是相互接通的 (兩邊 Route Table 的VPC CIDRlocal且無 Network ACL 阻擋)
  3. 建立一個 NAT Gateway (會有一組EIP)且建在 Public subnet 中。
  4. 完成建立 NAT Gateway 後,再次設定 Private subnet 關聯的 Route Table,閘道增加 0.0.0.0/0接此 NAT Gateway

以上網路架構,Private subnet 下的 EC2 出 Internet (因 route table的0.0.0.0/32規則) 都會用位於 Public subnet 中的 NAT Gateway EIP 出去。

NAT Subnet + ELB 架構

如需要架構由 Internet ELB inbound 接入 EC2,但 outbound 是透過 NAT 出去 (NAT IP):

  • 承上 NAT Subnet 架構,ELB 的 AZ (Availability Zones) 接入 Public Subnets,ELB Target group 中的 Instance 選 Private Subnet 的 Instance 即可。

  • 若架構上是需要兩個 AZ (L7 ALB 至少要 map 兩個 AZ),則需要在另一個 AZ 同樣實作 Public Subnet 與 Private Subnet。

    • 單一共用 NAT Gateway (只為了讓 ALB 能使用): 新 AZ Private subnet 接原本 AZ 同一個 NAT Gateway route table),
    • Best pratice: 新 AZ Private subnet 另開一組 route table (新建 NAT gateway 於新 AZ Public subnet) ,達到 multi-AZ 架構保證,Outbound 多新的這組 NAT IP

Leave a Reply

Your email address will not be published. Required fields are marked *