當你第一次接觸 AWS 雲端服務時,最讓人困惑的往往不是如何啟動一台 EC2 伺服器,而是這些網路元件之間錯綜複雜的關係:VPC、Subnet、Internet Gateway、Route Table⋯⋯這些專有名詞看起來既抽象又難懂。
但別擔心!這篇文章會用最生活化的比喻,搭配清晰的圖解和表格,帶你一步步理解 AWS 網路架構的核心概念。
讀完後,你不僅能清楚知道這些元件的功能,更能理解它們之間的關聯性,以及在實務上如何正確配置。
無論你是準備 AWS 認證考試,還是正在建置實際的雲端架構,這篇文章都能成為你最實用的參考指南。
從熟悉到創新:地端機房 vs 雲端架構
傳統地端機房架構
如果你有傳統 IT 背景,或曾經接觸過公司機房,那麼從「已知的地端架構」出發,會更容易理解「抽象的雲端概念」。
讓我們先看看傳統企業機房是如何運作的:
graph TB
subgraph DataCenter["🏢 企業機房 (On-Premises Data Center)"]
subgraph Floor1["機房一樓 - DMZ 區域"]
DMZ["🌐 DMZ 區域<br/>(對外服務區)<br/>192.168.1.0/24"]
WebServer["🖥️ Web Server<br/>(實體主機)"]
NAT_Device["🔄 NAT 設備<br/>(硬體設備,在 DMZ)"]
DMZ --> WebServer
DMZ --> NAT_Device
end
subgraph Floor2["機房二樓 - 內網區域"]
Internal["🔒 內網區域<br/>(內部服務區)<br/>192.168.2.0/24"]
DBServer["🖥️ Database Server<br/>(實體主機)"]
Internal --> DBServer
end
Router_Pub["📡 路由器 (對外)<br/>預設路由 → 防火牆"]
Router_Priv["📡 路由器 (內網)<br/>預設路由 → NAT 設備"]
Firewall["🛡️ 防火牆<br/>(硬體設備)"]
Router_Pub -.連接.-> DMZ
Router_Priv -.連接.-> Internal
Router_Pub --> Firewall
Router_Priv --> NAT_Device
NAT_Device --> Firewall
end
ISP["🌐 ISP 網路供應商"]
Firewall <--> ISP
style DataCenter fill:#f5f5f5,stroke:#424242,stroke-width:2px
style Floor1 fill:#fff3e0,stroke:#ef6c00,stroke-width:2px,stroke-dasharray: 5 5
style Floor2 fill:#fff3e0,stroke:#ef6c00,stroke-width:2px,stroke-dasharray: 5 5
style DMZ fill:#c8e6c9,stroke:#388e3c,stroke-width:2px
style Internal fill:#bbdefb,stroke:#1976d2,stroke-width:2px
style Firewall fill:#fff9c4,stroke:#f57f17,stroke-width:3px
style NAT_Device fill:#ffccbc,stroke:#d84315,stroke-width:2px
style Router_Pub fill:#f3e5f5,stroke:#7b1fa2,stroke-width:2px
style Router_Priv fill:#f3e5f5,stroke:#7b1fa2,stroke-width:2px
style ISP fill:#e1f5ff,stroke:#01579b,stroke-width:2px延伸閱讀:網路基礎架構完全指南
AWS 雲端架構
現在讓我們看看 AWS 如何用「虛擬化」的方式實現相同的功能:
注意: 一個 Region 可以有多個 VPC(預設上限 5 個),這裡僅展示單一 VPC 的架構。
graph TB
subgraph Region["🌍 AWS Region (例如:ap-northeast-1)"]
subgraph VPC["VPC - 虛擬私有雲 (10.0.0.0/16)"]
subgraph AZ_A["Availability Zone A"]
PubSub["🌐 Public Subnet<br/>10.0.1.0/24"]
EC2_Pub["💻 EC2 Instance<br/>(Public)"]
NAT["🔄 NAT Gateway<br/>(在 Public Subnet 中)"]
PubSub --> EC2_Pub
PubSub --> NAT
end
subgraph AZ_B["Availability Zone B"]
PrivSub["🔒 Private Subnet<br/>10.0.2.0/24"]
EC2_Priv["💻 EC2 Instance<br/>(Private)"]
PrivSub --> EC2_Priv
end
RT_Pub["📋 Route Table (Public)<br/>0.0.0.0/0 → IGW"]
RT_Priv["📋 Route Table (Private)<br/>0.0.0.0/0 → NAT"]
IGW["🚪 Internet Gateway"]
RT_Pub -.綁定.-> PubSub
RT_Priv -.綁定.-> PrivSub
RT_Pub --> IGW
RT_Priv --> NAT
NAT --> IGW
end
end
Internet["☁️ Internet"]
IGW <--> Internet
style Region fill:#f0f8ff,stroke:#1976d2,stroke-width:2px
style VPC fill:#e8f5e9,stroke:#2e7d32,stroke-width:3px
style AZ_A fill:#fff3e0,stroke:#ef6c00,stroke-width:2px,stroke-dasharray: 5 5
style AZ_B fill:#fff3e0,stroke:#ef6c00,stroke-width:2px,stroke-dasharray: 5 5
style PubSub fill:#c8e6c9,stroke:#388e3c,stroke-width:2px
style PrivSub fill:#bbdefb,stroke:#1976d2,stroke-width:2px
style IGW fill:#fff9c4,stroke:#f57f17,stroke-width:3px
style NAT fill:#ffccbc,stroke:#d84315,stroke-width:2px
style RT_Pub fill:#f3e5f5,stroke:#7b1fa2,stroke-width:2px
style RT_Priv fill:#f3e5f5,stroke:#7b1fa2,stroke-width:2px
style Internet fill:#e1f5ff,stroke:#01579b,stroke-width:2px📊 雲端 vs 地端完整對照表
| 概念層級 | AWS 雲端 | 傳統地端機房 | 說明 |
|---|---|---|---|
| 地理區域 | 🌍 Region | 🏢 企業機房位置 | 雲端:AWS 全球資料中心 地端:公司自有機房 |
| 網路空間 | VPC (Virtual Private Cloud) | 整個機房網路 | 雲端:虛擬私有網路 地端:實體網路設備 |
| 可用區域 | Availability Zone | 機房樓層/機櫃區 | 雲端:獨立的資料中心 地端:不同樓層或區域 |
| 子網路 | Subnet | VLAN / 網段 | 雲端:軟體定義網路 地端:交換器劃分的 VLAN |
| 公開區域 | Public Subnet | DMZ (非軍事區) | 雲端:可直接對外的子網 地端:對外服務區 |
| 私密區域 | Private Subnet | 內網區域 | 雲端:不對外的內部網路 地端:內部辦公/資料庫區 |
| 網路出口 | Internet Gateway (IGW) | 防火牆 + 路由器 | 雲端:虛擬閘道設備 地端:實體硬體設備 |
| 路由規則 | Route Table | 路由器路由表 | 雲端:軟體設定 地端:硬體路由器設定 |
| NAT 功能 | NAT Gateway | NAT 設備/伺服器 | 雲端:託管服務 地端:硬體設備或軟體 |
| 運算資源 | EC2 Instance | 實體伺服器 | 雲端:虛擬機器 地端:實體主機 |
| 安全控管 | Security Group | 防火牆規則 | 雲端:虛擬防火牆 地端:硬體防火牆 |
| 網路連線 | ENI (Elastic Network Interface) | 網路卡 (NIC) | 雲端:虛擬網路介面 地端:實體網路卡 |
流量對比範例
地端:Web Server 上網流程
Web Server (192.168.1.10)
→ DMZ 交換器
→ 路由器 (查路由表)
→ 防火牆 (檢查規則)
→ ISP 網路
→ Internet雲端:EC2 (Public) 上網流程
EC2 Instance (10.0.1.10)
→ Public Subnet
→ Route Table (查路由規則)
→ Internet Gateway
→ Internet發現了嗎? 雲端簡化了很多中間層級,但概念是相通的!
關鍵差異總結
地端機房的特點:
- ✅ 實體設備:所有設備都是真實的硬體(路由器、交換器、防火牆)
- ✅ 資本支出:需要一次性購買昂貴的硬體設備
- ✅ 維護成本:需要 IT 人員維護、更新、修理
- ✅ 擴充困難:增加設備需要採購、安裝、配置
- ✅ 故障風險:硬體故障需要人工處理
AWS 雲端的特點:
- ✅ 虛擬化:所有設備都是軟體定義的虛擬資源
- ✅ 彈性計費:用多少付多少,沒有大量前期投資
- ✅ 自動化:透過 API 或 Console 快速建立、刪除
- ✅ 快速擴充:幾分鐘內就能增加資源
- ✅ 高可用性:AWS 負責底層硬體的維護和備援
核心概念:一句話理解關鍵關係
理解了地端和雲端的對應關係後,我們來看 AWS 最核心的概念:
Internet Gateway (IGW) 是連接 VPC 到外部網際網路的出口設備。要讓 Subnet 能上網,就必須「透過 Route Table 指定 IGW」作為出口。
這句話包含了三個關鍵元件:
- IGW:網路出口(對應地端的防火牆)
- Subnet:子網路區域(對應地端的 VLAN)
- Route Table:流量規則表(對應地端的路由器路由表)
地端 vs 雲端的決策流程對比:
【地端】伺服器要上網時的判斷
1. 封包離開伺服器網卡
2. 到達交換器
3. 查詢路由器的路由表
4. 根據路由規則決定:走防火牆 or 走 NAT
5. 通過 ISP 到達 Internet
【雲端】EC2 要上網時的判斷
1. 封包離開 EC2 的 ENI
2. 進入 Subnet
3. 查詢 Route Table
4. 根據路由規則決定:走 IGW or 走 NAT Gateway
5. 到達 Internet發現了嗎? 概念完全相同,只是 AWS 把實體設備「虛擬化」了!
Internet Gateway (IGW):VPC 的網路大門
前置觀念:Region 與 VPC 的關係
在討論核心元件之前,先釐清一個重要觀念:
Region 與 VPC 的數量關係
| 問題 | 答案 |
|---|---|
| 一個 Region 可以有幾個 VPC? | 多個(預設上限 5 個,可申請提高) |
| 一個 VPC 可以跨越多個 Region 嗎? | 不可以,VPC 只存在於單一 Region |
| 不同 VPC 之間可以互相溝通嗎? | 預設不行,需透過 VPC Peering 或 Transit Gateway 連接 |
實務範例:
AWS 帳號
│
├── Region: us-east-1 (維吉尼亞)
│ ├── VPC-A (10.0.0.0/16) - 生產環境
│ ├── VPC-B (10.1.0.0/16) - 測試環境
│ └── VPC-C (10.2.0.0/16) - 開發環境
│
└── Region: ap-northeast-1 (東京)
├── VPC-D (10.10.0.0/16) - 亞洲生產環境
└── VPC-E (10.11.0.0/16) - 災難備援環境為什麼要建立多個 VPC?
- 環境隔離:生產、測試、開發環境完全分離
- 安全性:不同專案的資源互不影響
- 合規要求:符合資料隔離的法規要求
- 組織架構:不同部門使用不同 VPC
IGW 的定義與特性
Internet Gateway 是 AWS VPC 中負責連接內部網路與外部網際網路的關鍵元件。
關鍵特性:
| 特性 | 說明 | 比喻 |
|---|---|---|
| 綁定對象 | IGW 是掛在 VPC 上的 | 社區的大門是屬於整個社區的 |
| 數量限制 | 一個 VPC 最多只能綁一個 IGW | 每個社區只能有一個主要大門 |
| 必要性 | 沒有 IGW,VPC 裡的資源永遠無法對外上網 | 就像家裡沒接電信公司網路,Wi-Fi 也沒用 |
IGW 與 VPC 的關係
VPC(你的私有網路)
│
├── Internet Gateway(網路出口設備)
│ └── 連接到 Internet
│
├── Subnet A
├── Subnet B
└── Subnet C重要提醒: IGW 是「讓 EC2 能訪問 Internet」的必要元件,但它本身不會直接控制 Subnet 上網與否。真正的控制權在 Route Table。
IGW vs ENI:兩個容易混淆的網路元件
很多初學者會混淆 IGW 和 ENI,讓我們清楚區分它們:
核心差異對比表:
| 對比項目 | Internet Gateway (IGW) | ENI (Elastic Network Interface) |
|---|---|---|
| 功能定位 | VPC 層級的網路出口 | EC2 實例層級的網路介面 |
| 綁定對象 | 綁定到整個 VPC | 綁定到單一 EC2 實例 |
| 數量關係 | 一個 VPC 只能有 1 個 IGW | 一個 EC2 可以有多個 ENI |
| 主要用途 | 讓整個 VPC 可以連接 Internet | 讓 EC2 可以有網路連線能力 |
| 地端類比 | 企業機房的防火牆/路由器 | 伺服器上的網路卡 (NIC) |
| 生命週期 | 獨立於 EC2,可單獨建立/刪除 | 可獨立於 EC2,但通常隨 EC2 建立 |
| IP 位址 | 不具有 IP 位址 | 有 Private IP,可選配 Public IP |
| 可見性 | 在 VPC 層級可見 | 在 EC2 詳細資訊中可見 |
| 必要性 | VPC 要上網必須要有 | EC2 要連網必須要有 |
層級關係圖:
Internet(網際網路)
↕
Internet Gateway (IGW) ← 【VPC 層級】整個 VPC 的出入口
↕
Route Table ← 決定流量走向
↕
Subnet ← 網路區段
↕
ENI (網路介面) ← 【EC2 層級】單一實例的網路卡
↕
EC2 Instance(虛擬機器)實務範例說明:
假設你有一個 Web 應用:
- IGW 的角色:
- 位置:掛在整個 VPC 上
- 功能:讓整個 VPC 有「可以上網的能力」
- 數量:整個 VPC 只有一個
- 比喻:就像社區的大門,所有人都要通過這個門才能進出
- ENI 的角色:
- 位置:附加在每一台 EC2 上
- 功能:讓 EC2 可以「實際連上網路」
- 數量:每台 EC2 至少有一個,可以有多個
- 比喻:就像你家電腦的網路卡,沒有網卡電腦就無法連網
常見混淆釐清:
❌ 錯誤理解:「IGW 就是 EC2 的網路卡」
✅ 正確理解:IGW 是 VPC 的出口,ENI 才是 EC2 的網路介面
❌ 錯誤理解:「每個 EC2 都要有自己的 IGW」
✅ 正確理解:整個 VPC 共用一個 IGW,但每個 EC2 有自己的 ENI
❌ 錯誤理解:「ENI 負責讓 EC2 上網」
✅ 正確理解:ENI 提供網路連線能力,但能否上網由 IGW + Route Table 決定
記憶口訣:
IGW 是社區的大門(VPC 層級)
ENI 是電腦的網路卡(EC2 層級)
沒有大門,社區無法對外
沒有網卡,電腦無法連網
Subnet:網路的分區管理
什麼是 Subnet?
Subnet(子網路)是 VPC 內部的網路區段,用來組織和隔離不同的資源。
Subnet 的兩大類型:
| 類型 | 特性 | 用途 | 能否直接上網 |
|---|---|---|---|
| Public Subnet | 綁定可通往 IGW 的 Route Table | 放置需要對外服務的資源(如 Web Server) | ✅ 可以 |
| Private Subnet | 綁定不直接通往 IGW 的 Route Table | 放置內部資源(如資料庫) | ❌ 不能直接上網 |
Subnet 與 IGW 的關係
關鍵概念: Subnet 本身不能直接連 IGW,要透過 Route Table。
Subnet A(想上網)
│
├── 步驟1:綁定一張 Route Table
│
├── 步驟2:Route Table 中設定「0.0.0.0/0 → IGW」
│
└── 步驟3:流量才能通過 IGW 到達 Internet結論: IGW 只是出入口,但真正決定誰能用這個出口的,是 Route Table。
Route Table:流量的交通指揮官
Route Table 的核心功能
Route Table(路由表)就是「網段的交通規則表」,它告訴 AWS:這個 Subnet 的流量要怎麼出去?
Route Table 最核心的兩個欄位是:
| 欄位名稱 | 英文 | 說明 | 範例 |
|---|---|---|---|
| 目的地 | Destination | 我要去哪裡? 指定想要抵達的目標 IP 網段 | 10.0.0.0/16(VPC 內部)0.0.0.0/0(Internet) |
| 下一跳 | Target / Next Hop | 要通過誰才能到? 指定要經過哪個「出口/閘道」才能到達目的地 | local(直接內部連線)igw-xxxxx(走 IGW)nat-xxxxx(走 NAT) |
簡單理解:
- Destination(目的地):就像你在 Google Map 輸入「我要去台北101」
- Target(下一跳):就像 GPS 告訴你「請走國道1號」
完整範例:
【情境】EC2 想連到 Google DNS (8.8.8.8)
步驟1:EC2 發出請求
- 來源:EC2 (10.0.1.15)
- 目的地:Google (8.8.8.8)
步驟2:系統查詢 Route Table
路由表內容:
| Destination | Target |
|---|---|
| 10.0.0.0/16 | local |
| 0.0.0.0/0 | igw-xxxx |
步驟3:比對目的地 IP
Q1: 8.8.8.8 在 10.0.0.0/16 範圍內嗎?
❌ 不在(10.0.0.0/16 = 10.0.0.0 ~ 10.0.255.255)
💡 這是 VPC 內部網段,8.8.8.8 不在這個範圍
Q2: 8.8.8.8 在 0.0.0.0/0 範圍內嗎?
✅ 在!(0.0.0.0/0 = 所有 IP,包括 8.8.8.8)
💡 這代表「除了上面規則以外的所有地方」
步驟4:決定下一跳
- 找到匹配規則:
0.0.0.0/0 → igw-xxxx - 下一跳裝置:Internet Gateway
步驟5:送出流量
EC2 → Subnet → Route Table → IGW → Internet → Google (8.8.8.8)為什麼這樣設計?
路由表的規則是「從上到下、從具體到廣泛」:
- 具體規則在前:
10.0.0.0/16只涵蓋 VPC 內部 - 廣泛規則在後:
0.0.0.0/0涵蓋所有其他地方(預設路由)
類比理解:
就像問路:
Q:「我要去台北101,怎麼走?」
路由表回答:
- 如果要去「社區內(10.0.0.0/16)」→ 直接走過去(local)
- 如果要去「其他任何地方(0.0.0.0/0)」→ 走社區大門(IGW)
💡 台北101 不在社區內 → 所以走大門出去!
記憶口訣:
Destination = 終點站(我想去哪裡)
Target = 交通工具(我要搭什麼過去)
用生活場景理解路由規則
想像你住在一個社區(VPC),你寫了一張交通指示(Route Table)給社區管理員:
規則 1:內部溝通不出門
目的地:社區內部(10.0.0.0/16)
下一站:Local(本社區自己處理)意思: 如果住戶之間互相傳信、走動,直接在社區內部搞定就好,別出門。
✅ 這條是每張 Route Table 都一定會有的固定規則
✅ 代表:VPC 裡的所有資源可以互相溝通(不用出門)
規則 2:上網走正門
目的地:所有其他地方(0.0.0.0/0)
下一站:IGW(走正門)意思: 如果要上外網,不管去哪,請走正門(IGW)。
✅ 加了這條,你的 Subnet 才能稱為「Public Subnet」
規則 3:私密出口走後門
目的地:0.0.0.0/0
下一站:NAT Gateway意思: 不准直接出門,要先到 NAT 門口,從後門偷偷出網。
✅ 這是 Private Subnet 專用的路線設計
✅ EC2 可以上網(例如更新套件),但外面的人不能反過來連進來
真實 AWS Route Table 範例
一張實際的 Route Table 看起來像這樣:
| Destination | Target | 解釋 |
|---|---|---|
10.0.0.0/16 | local | 這是預設的,讓 VPC 裡面資源彼此能溝通 |
0.0.0.0/0 | igw-xxxxxx | 所有去 Internet 的流量,走 IGW |
0.0.0.0/0 | nat-xxxxxx | 去 Internet 的流量,但走 NAT Gateway(不能被回連) |
重要觀念釐清:IP 位址的角色
Route Table 中的 IP 不是指某台 EC2
很多初學者會誤以為 Route Table 中的 IP(如 10.0.0.0/16)是指某台 EC2 的 IP,但其實不是!
正確理解:
Route Table 中的 IP 是指「目的地的 IP 網段(Destination CIDR)」,是一整段網路範圍。
IP 網段的意義
| IP / CIDR 寫法 | 是什麼意思 | 舉例說明 |
|---|---|---|
10.0.0.0/16 | 你自己 VPC 的內部網段 | VPC 裡所有 EC2 的內部 IP 都在這範圍 |
0.0.0.0/0 | 代表「所有地方」(Internet) | 任何外網位址,如 google.com (8.8.8.8) |
172.31.0.0/16 | 也是內網範圍 | 根據不同 VPC 設定而變動 |
EC2 的 IP 是什麼角色?
EC2 的 IP 是:
- 發送者(Source IP)
- 它想要連「某個目標 IP」,AWS 就會去查 Route Table 幫它找出口
完整流量範例
假設你有一台 EC2:
| 內容 | 值 |
|---|---|
| EC2 IP(Private) | 10.0.1.15 |
| Subnet | 10.0.1.0/24 |
| Route Table 設定 | 10.0.0.0/16 → local0.0.0.0/0 → igw-abc123 |
當 EC2 嘗試連線時:
| 想連的 IP(Destination) | 套用哪條規則? | 會走哪個出口? |
|---|---|---|
10.0.0.8(另一台 EC2) | 10.0.0.0/16 | local(內部溝通) |
8.8.8.8(Google DNS) | 0.0.0.0/0 | IGW(出網) |
192.168.1.1(外部 VPN) | 0.0.0.0/0 | IGW(除非有額外 VPN 路由) |
整合概念:完整架構圖解
三者關係總整理
VPC(你的一個私有網路)
│
├── IGW(掛在 VPC 上的網路出口)
│
├── Subnet A(Public)
│ └── 綁 Route Table A
│ └── 規則:0.0.0.0/0 → IGW(能上網)
│
└── Subnet B(Private)
└── 綁 Route Table B
└── 規則:0.0.0.0/0 → NAT Gateway(只能內部使用)流量走向邏輯圖
[EC2 in Subnet]
│
▼
Route Table(查詢規則)
│
├── if IP 是 10.0.0.0/16 → 送給 local(不出門)
└── if IP 是 0.0.0.0/0 → 送給 IGW(出門上網)結構記憶法
| 名詞 | 是什麼 | 跟誰有關 |
|---|---|---|
| VPC | 虛擬網路整體 | 是 IGW 掛載的對象 |
| IGW | VPC 的網路出口 | 需要 Route Table 才能讓 Subnet 用 |
| Subnet | VPC 裡的子網區塊 | 綁定 Route Table 決定能不能用 IGW |
| Route Table | 指定流量怎麼走的「路由表」 | 控制 Subnet 的出口流向(IGW / NAT) |
Route Table 的綁定關係
重要原則:
| 關係類型 | 說明 |
|---|---|
| Subnet ↔ Route Table | 一個 Subnet 只能綁定一張 Route Table(1對1) |
| Route Table ↔ Subnet | 一張 Route Table 可以被多個 Subnet 共用(1對多) |
┌─────────────────┐
│ Route Table │
└────────┬────────┘
│
┌─────────────┼─────────────┐
│ │ │
┌───────┐ ┌───────┐ ┌───────┐
│Subnet A│ │Subnet B│ │Subnet C│
└───────┘ └───────┘ └───────┘實務應用範例:
| 路由表類型 | 設定規則 | 綁定的 Subnet |
|---|---|---|
| Public Route Table | 10.0.0.0/16 → local0.0.0.0/0 → IGW | Public Subnet A、B、C |
| Private Route Table | 10.0.0.0/16 → local0.0.0.0/0 → NAT Gateway | Private Subnet A、B、C |
Q5:為什麼需要 NAT Gateway?
答: NAT Gateway 讓 Private Subnet 中的 EC2 可以:
- ✅ 主動連出去上網(例如:下載更新)
- ❌ 但外部無法主動連進來(提高安全性)
結語
AWS 的網路架構乍看之下很複雜,但只要掌握 VPC、IGW、Subnet、Route Table 這四大核心元件的關係,就能理解整個運作邏輯。
記住最重要的觀念:
- VPC 是你的私有網路空間
- IGW 是對外的大門
- Subnet 是內部的分區
- Route Table 是交通指揮官
透過本文的生活化比喻和詳細圖解,相信你已經對 AWS 網路架構有了清晰的理解。接下來就是實際動手操作,在 AWS Console 中建立這些元件,親自體驗它們的運作方式!
學習建議: 可以在 AWS Free Tier 帳號中實際練習建立 VPC、Subnet、IGW 和 Route Table,透過實作來加深理解。
祝你的 AWS 學習之旅順利!🚀