Intro
AWS VPC為提供完整雲端網路架構設定。
服務定義 (Definitions)
Compare AWS and Azure services to Google Cloud
(Reference: Ashish Patel Medium)
-
VPC (Virtual Private Cloud)
可視為一個 AWS tenant 的虛擬網路,CIDR 限制可以參考 VPC CIDR blocksCIDR (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
AWS - VPC with Public and Private Subnets (NAT)
以上官網文件與架構圖提供完整概念。
NAT Subnet 架構
- 建立/編輯 VPC,至少兩個 Route Table:一個
0.0.0.0/0
閘道接外網閘道(IGW);另一個0.0.0.0/0
閘道先不設定(留給 NAT Gateway) - 建立一個 Public subnet (關聯到 IGW route table),與一個 Private subnet (關聯到另一個 NAT Gateway 用途 route table),而此兩個 subnets 是相互接通的 (兩邊 Route Table 的
VPC CIDR
接local
且無 Network ACL 阻擋) - 建立一個 NAT Gateway (會有一組EIP)且建在 Public subnet 中。
- 完成建立 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