AWS VPC 入門教學:虛擬私有雲架設、子網路、安全設定【2025】

AWS VPC 入門教學:虛擬私有雲架設、子網路、安全設定【2025】
為什麼你的資料庫不應該有公開 IP?為什麼 Web Server 和 Database 要放在不同的子網路?為什麼同樣的安全群組設定,有時能連線有時不能?這些問題的答案都在 VPC。
VPC 是 AWS 網路架構的基礎。理解 VPC,你才能設計出安全、可靠的雲端架構。這篇文章會帶你從頭認識 VPC——從基本概念、核心元件,到實際建立一個標準的三層架構。
什麼是 AWS VPC?
VPC(Virtual Private Cloud)是你在 AWS 雲端的私有網路。你可以把它想像成在 AWS 資料中心裡劃出一塊專屬於你的區域,有自己的 IP 範圍、子網路、路由規則。
VPC 的核心價值
1. 隔離性
VPC 與 VPC 之間完全隔離。你的資源不會被其他用戶看到或存取。
2. 控制權
你可以完全控制網路設定:
- IP 位址範圍
- 子網路劃分
- 路由表
- 網路閘道
- 安全規則
3. 連接性
VPC 可以連接到:
- 網際網路(透過 Internet Gateway)
- 企業內網(透過 VPN 或 Direct Connect)
- 其他 VPC(透過 VPC Peering 或 Transit Gateway)
VPC vs 傳統網路
| 面向 | 傳統企業網路 | AWS VPC |
|---|---|---|
| 建置時間 | 數週到數月 | 幾分鐘 |
| 擴展性 | 受限於硬體 | 幾乎無限 |
| 設定方式 | 實體設備 + CLI | AWS Console / API |
| 成本 | 硬體 + 維護 | 用多少付多少 |
| 跨區域 | 需要專線 | 原生支援 |
為什麼需要 VPC?
當你在 AWS 上建立 EC2、RDS、Lambda 等資源時,它們需要一個網路環境。VPC 就是這個環境。
沒有 VPC 的問題:
- 所有資源都暴露在公網
- 無法控制資源之間的存取
- 無法連接企業內網
- 無法滿足合規要求
有 VPC 的好處:
- 資料庫放在私有子網路,只有應用層能存取
- Web Server 在公有子網路,可接受網際網路流量
- 明確的安全邊界和流量控制
- 符合金融、醫療等產業法規
VPC 核心元件
要理解 VPC,需要先認識這些核心元件:
子網路(Subnet)
子網路是 VPC 內的 IP 位址區塊。每個子網路對應一個可用區(AZ)。
公有子網路 vs 私有子網路
| 特性 | 公有子網路 | 私有子網路 |
|---|---|---|
| 可接收網際網路流量 | 是 | 否 |
| 可主動連到網際網路 | 是(透過 IGW) | 要透過 NAT Gateway |
| 適合放什麼 | Web Server、Bastion Host | Database、App Server |
| 路由表指向 | Internet Gateway | NAT Gateway |
子網路規劃範例:
VPC: 10.0.0.0/16(65,536 個 IP)
│
├── Public Subnet 1: 10.0.1.0/24(256 IP)- AZ-a
├── Public Subnet 2: 10.0.2.0/24(256 IP)- AZ-b
├── Private Subnet 1: 10.0.11.0/24(256 IP)- AZ-a
├── Private Subnet 2: 10.0.12.0/24(256 IP)- AZ-b
├── DB Subnet 1: 10.0.21.0/24(256 IP)- AZ-a
└── DB Subnet 2: 10.0.22.0/24(256 IP)- AZ-b
路由表(Route Table)
路由表決定網路流量要往哪裡送。每個子網路都會關聯一個路由表。
公有子網路的路由表:
| 目的地 | 目標 |
|---|---|
| 10.0.0.0/16 | local(VPC 內部) |
| 0.0.0.0/0 | igw-xxxxx(Internet Gateway) |
私有子網路的路由表:
| 目的地 | 目標 |
|---|---|
| 10.0.0.0/16 | local |
| 0.0.0.0/0 | nat-xxxxx(NAT Gateway) |
Internet Gateway(IGW)
Internet Gateway 讓 VPC 內的資源可以與網際網路通訊。
特點:
- 每個 VPC 只能有一個 IGW
- 高可用,由 AWS 管理
- 免費(不收取閘道本身的費用)
- 支援 IPv4 和 IPv6
使用條件:
- VPC 附加 IGW
- 子網路路由表有指向 IGW 的路由
- 執行個體有公有 IP 或 Elastic IP
- 安全群組允許流量
NAT Gateway
NAT Gateway 讓私有子網路的資源可以主動連到網際網路(例如下載更新),但網際網路無法主動連入。
特點:
- 單向:只能從內到外
- 部署在公有子網路
- 高可用(單 AZ),建議每個 AZ 一個
- 收費:每小時 $0.045 + 資料處理費
架構示意:
網際網路
│
▼
┌───────────────┐
│Internet Gateway│
└───────┬───────┘
│
┌───────────────┼───────────────┐
│ │ │
▼ ▼ ▼
┌─────────┐ ┌─────────┐ ┌─────────┐
│ Public │ │ Public │ │ NAT │
│ Subnet │ │ Subnet │ │ Gateway │
│(Web 層) │ │(Web 層) │ │ │
└─────────┘ └─────────┘ └────┬────┘
│
┌─────────────────┘
▼
┌─────────┐
│ Private │
│ Subnet │
│(App/DB) │
└─────────┘
安全群組(Security Group)
安全群組是執行個體層級的防火牆,控制進出執行個體的流量。
特點:
- 有狀態(Stateful):允許進入的流量,回應自動允許出去
- 預設拒絕所有進入流量
- 預設允許所有外出流量
- 只能設定允許規則,不能設定拒絕規則
常見設定範例:
| 類型 | 協定 | Port | 來源 | 說明 |
|---|---|---|---|---|
| SSH | TCP | 22 | 10.0.0.0/16 | 只允許 VPC 內 SSH |
| HTTP | TCP | 80 | 0.0.0.0/0 | 允許所有人 HTTP |
| HTTPS | TCP | 443 | 0.0.0.0/0 | 允許所有人 HTTPS |
| MySQL | TCP | 3306 | sg-app | 只允許 App 層安全群組 |
網路 ACL(NACL)
NACL 是子網路層級的防火牆,作為第二道防線。
特點:
- 無狀態(Stateless):進出規則要分開設定
- 規則有順序號碼,從小到大評估
- 可以設定允許和拒絕規則
- 預設 NACL 允許所有流量
Security Group vs NACL:
| 面向 | Security Group | NACL |
|---|---|---|
| 層級 | 執行個體 | 子網路 |
| 狀態 | 有狀態 | 無狀態 |
| 規則類型 | 只能允許 | 允許和拒絕 |
| 規則評估 | 全部評估 | 按順序評估 |
| 預設 | 拒絕所有入、允許所有出 | 允許所有 |
一般建議: 主要用 Security Group 控制,NACL 作為額外防護層。
子網路規劃
好的子網路規劃是 VPC 設計的關鍵。
CIDR 區塊規劃
CIDR(Classless Inter-Domain Routing)定義 IP 位址範圍。
常用 CIDR:
| CIDR | IP 數量 | 適用場景 |
|---|---|---|
| /16 | 65,536 | VPC |
| /20 | 4,096 | 大型子網路 |
| /24 | 256 | 標準子網路 |
| /28 | 16 | 小型子網路 |
私有 IP 範圍(RFC 1918):
- 10.0.0.0 - 10.255.255.255(10.0.0.0/8)
- 172.16.0.0 - 172.31.255.255(172.16.0.0/12)
- 192.168.0.0 - 192.168.255.255(192.168.0.0/16)
規劃建議:
- VPC 用 /16(預留足夠空間)
- 子網路用 /24(256 IP,實際可用 251 個)
- 避免與企業內網 IP 範圍重疊
公有子網路 vs 私有子網路
公有子網路:
- 路由表有指向 IGW 的 0.0.0.0/0 路由
- 執行個體可獲得公有 IP
- 適合:Web Server、Bastion Host、NAT Gateway
私有子網路:
- 路由表沒有直接到 IGW 的路由
- 執行個體只有私有 IP
- 適合:Application Server、Database、內部服務
多可用區設計
為了高可用性,建議在至少兩個 AZ 部署資源。
標準三層架構:
VPC: 10.0.0.0/16
┌─────────────────────────────────────────────┐
│ │
│ AZ-a AZ-b │
│ ┌─────────────┐ ┌─────────────┐ │
│ │ Public │ │ Public │ │
│ │ 10.0.1.0/24 │ │ 10.0.2.0/24 │ │
│ │ [ALB] │──────────│ [ALB] │ │
│ └──────┬──────┘ └──────┬──────┘ │
│ │ │ │
│ ┌──────▼──────┐ ┌──────▼──────┐ │
│ │ Private │ │ Private │ │
│ │ 10.0.11.0/24│ │ 10.0.12.0/24│ │
│ │ [EC2] │──────────│ [EC2] │ │
│ └──────┬──────┘ └──────┬──────┘ │
│ │ │ │
│ ┌──────▼──────┐ ┌──────▼──────┐ │
│ │ DB Subnet │ │ DB Subnet │ │
│ │ 10.0.21.0/24│ │ 10.0.22.0/24│ │
│ │ [RDS] │◄─────────│ [RDS] │ │
│ └─────────────┘ Primary └─────────────┘ │
│ Standby │
└─────────────────────────────────────────────┘
VPC 安全設定
安全群組設計原則
1. 最小權限原則
只開放必要的 port,來源盡可能限縮。
❌ 錯誤:開放 0.0.0.0/0 存取資料庫
✓ 正確:只允許應用層安全群組存取資料庫
2. 分層設計
每一層有自己的安全群組:
| 層級 | 安全群組 | 允許來源 |
|---|---|---|
| Web 層 | sg-web | 0.0.0.0/0 (80, 443) |
| App 層 | sg-app | sg-web (8080) |
| DB 層 | sg-db | sg-app (3306) |
3. 使用安全群組引用
不要用 IP,用安全群組 ID 作為來源:
❌ 來源:10.0.11.0/24
✓ 來源:sg-app
好處:即使 IP 變動,規則仍然有效。
安全群組範例
Web Server(sg-web):
| 方向 | 類型 | Port | 來源/目標 |
|---|---|---|---|
| 入 | HTTP | 80 | 0.0.0.0/0 |
| 入 | HTTPS | 443 | 0.0.0.0/0 |
| 入 | SSH | 22 | sg-bastion |
| 出 | All | All | 0.0.0.0/0 |
Application Server(sg-app):
| 方向 | 類型 | Port | 來源/目標 |
|---|---|---|---|
| 入 | Custom | 8080 | sg-web |
| 入 | SSH | 22 | sg-bastion |
| 出 | MySQL | 3306 | sg-db |
| 出 | HTTPS | 443 | 0.0.0.0/0 |
Database(sg-db):
| 方向 | 類型 | Port | 來源/目標 |
|---|---|---|---|
| 入 | MySQL | 3306 | sg-app |
| 出 | All | All | 0.0.0.0/0 |
NACL 最佳實踐
通常保持預設 NACL(允許所有)即可,主要靠 Security Group 控制。
需要用 NACL 的場景:
- 需要明確拒絕特定 IP
- 合規要求需要子網路層級控制
- 作為額外的安全防線
NACL 設定範例:
| 規則 # | 方向 | 類型 | Port | 來源 | 動作 |
|---|---|---|---|---|---|
| 100 | 入 | HTTP | 80 | 0.0.0.0/0 | 允許 |
| 110 | 入 | HTTPS | 443 | 0.0.0.0/0 | 允許 |
| 120 | 入 | SSH | 22 | 10.0.0.0/16 | 允許 |
| 130 | 入 | Custom | 1024-65535 | 0.0.0.0/0 | 允許 |
| * | 入 | All | All | 0.0.0.0/0 | 拒絕 |
注意:因為無狀態,需要允許臨時 port(1024-65535)讓回應流量進來。
網路架構對了,安全性自然提升
VPC 設計看似簡單,但魔鬼藏在細節裡。子網路怎麼劃分?安全群組怎麼設計?NAT Gateway 要幾個?這些決定會影響安全性、效能和成本。
CloudInsight 團隊有豐富的 VPC 架構經驗,預約免費諮詢,讓我們幫你設計安全、高效的網路架構。
VPC 建立步驟教學
以下是建立標準三層架構 VPC 的完整步驟。
步驟一:建立 VPC
- 前往 AWS Console > VPC
- 點擊「Create VPC」
- 選擇「VPC and more」(會自動建立子網路、路由表等)
設定:
- Name tag:
my-vpc - IPv4 CIDR:
10.0.0.0/16 - Number of AZs:2
- Number of public subnets:2
- Number of private subnets:2
- NAT gateways:In 1 AZ(省錢)或 1 per AZ(高可用)
- VPC endpoints:None(之後需要再加)
- 點擊「Create VPC」
步驟二:檢視建立的資源
AWS 會自動建立:
- 1 個 VPC
- 2 個公有子網路
- 2 個私有子網路
- 1 個 Internet Gateway
- 1-2 個 NAT Gateway
- 對應的路由表
步驟三:驗證路由表
公有子網路路由表應該有:
| 目的地 | 目標 |
|---|---|
| 10.0.0.0/16 | local |
| 0.0.0.0/0 | igw-xxxxx |
私有子網路路由表應該有:
| 目的地 | 目標 |
|---|---|
| 10.0.0.0/16 | local |
| 0.0.0.0/0 | nat-xxxxx |
步驟四:建立安全群組
Web 層安全群組(sg-web):
- VPC > Security Groups > Create security group
- 設定:
- Name:sg-web
- VPC:my-vpc
- Inbound rules:
- HTTP (80) from 0.0.0.0/0
- HTTPS (443) from 0.0.0.0/0
App 層安全群組(sg-app):
- 設定:
- Name:sg-app
- VPC:my-vpc
- Inbound rules:
- Custom TCP (8080) from sg-web
DB 層安全群組(sg-db):
- 設定:
- Name:sg-db
- VPC:my-vpc
- Inbound rules:
- MySQL (3306) from sg-app
步驟五:測試連通性
建立測試 EC2:
- 在公有子網路建立 EC2(選擇 sg-web)
- 確認可以從網際網路 SSH 連入
- 確認可以 ping 外部網站
測試私有子網路:
- 在私有子網路建立 EC2(選擇 sg-app)
- 透過公有子網路的 EC2 跳轉連入
- 確認可以 ping 外部網站(透過 NAT Gateway)
- 確認外部無法直接連入
VPC 最佳實踐
網路設計
1. 預留足夠 IP 空間
- VPC 用 /16
- 為未來擴展預留子網路
2. 跨多個 AZ 部署
- 至少 2 個 AZ
- 關鍵服務考慮 3 個 AZ
3. 使用 VPC Flow Logs
- 記錄所有網路流量
- 用於安全分析和故障排除
安全設計
1. 分層防護
- Security Group:主要控制
- NACL:額外防線
- WAF:應用層防護
2. 限制 SSH/RDP 存取
- 使用 Bastion Host
- 或使用 Systems Manager Session Manager(更安全)
3. 定期審查安全群組
- 移除不需要的規則
- 避免 0.0.0.0/0 存取敏感 port
成本優化
1. NAT Gateway 費用
- 每小時 $0.045 + $0.045/GB
- 可能是 VPC 中最大的費用項目
- 考慮使用 NAT Instance(更便宜但要自己管)
2. VPC Endpoint
- 存取 S3、DynamoDB 等服務不需要走 NAT Gateway
- Gateway Endpoint:免費(S3、DynamoDB)
- Interface Endpoint:收費
3. 跨 AZ 流量
- 同 AZ 內流量免費
- 跨 AZ 流量 $0.01/GB
- 設計時考慮資料流向
常見問題
為什麼 EC2 無法連到網際網路?
檢查清單:
- ✓ EC2 在公有子網路?
- ✓ 子網路路由表有指向 IGW?
- ✓ EC2 有公有 IP 或 Elastic IP?
- ✓ 安全群組允許出站流量?
- ✓ NACL 允許流量?
私有子網路如何存取網際網路?
使用 NAT Gateway:
- 在公有子網路建立 NAT Gateway
- 私有子網路路由表加入 0.0.0.0/0 → NAT Gateway
VPC Peering vs Transit Gateway?
- VPC Peering:1 對 1 連接,免費但不支援傳遞路由
- Transit Gateway:中央樞紐,支援多 VPC,收費
少量 VPC 用 Peering,多 VPC 用 Transit Gateway。
如何連接企業內網?
選項:
- Site-to-Site VPN:透過網際網路加密連線
- Direct Connect:專線連接,更穩定但成本高
- Client VPN:遠端用戶連入 VPC
下一步
VPC 是所有 AWS 架構的基礎。掌握 VPC,你就能設計出安全、可靠的雲端環境。
建議的學習路徑:
- 實作:建立三層架構 VPC,部署簡單應用
- 安全:設計分層安全群組
- 連接:嘗試 VPC Peering
- 進階:Transit Gateway、Direct Connect
VPC 架構需要第二意見?
網路架構的錯誤可能導致安全漏洞或意外的高額費用。CloudInsight 團隊幫助過數百家企業設計 VPC 架構,從新建到遷移都有豐富經驗。
預約免費架構諮詢,讓我們幫你檢視和優化 VPC 設計。
延伸閱讀
- AWS 完整指南:服務介紹、費用、證照、台灣資源全面解析
- AWS EC2 完整教學:執行個體類型、定價、實作指南
- AWS S3 完整教學:儲存類別、費用計算、實作指南
- AWS Lambda 入門指南:無伺服器運算教學、定價、使用場景
- AWS 費用完整指南:定價模式、計算器教學、省錢技巧
插圖:VPC 架構總覽圖
場景描述: VPC 架構總覽圖。一個大框代表 VPC,內部分成公有子網路和私有子網路。顯示 Internet Gateway 在 VPC 邊界連接網際網路,NAT Gateway 在公有子網路,箭頭顯示流量方向。標示 EC
視覺重點:
- 主要內容清晰呈現
必須出現的元素:
- 依據描述中的關鍵元素
需要顯示的中文字: 無
顏色調性: 專業、清晰
避免元素: 抽象圖形、齒輪、發光特效
Slug:
vpc-architecture-overview
插圖:Security Group 與 NACL 比較圖
場景描述: Security Group 與 NACL 比較圖。左側顯示 Security Group 包圍單一 EC
視覺重點:
- 主要內容清晰呈現
必須出現的元素:
- 依據描述中的關鍵元素
需要顯示的中文字: 無
顏色調性: 專業、清晰
避免元素: 抽象圖形、齒輪、發光特效
Slug:
security-group-vs-nacl
插圖:三層架構詳細圖
場景描述: 三層架構詳細圖。垂直排列三層:Web 層(公有子網路,有 ALB)、App 層(私有子網路,有 EC
視覺重點:
- 主要內容清晰呈現
必須出現的元素:
- 依據描述中的關鍵元素
需要顯示的中文字: 無
顏色調性: 專業、清晰
避免元素: 抽象圖形、齒輪、發光特效
Slug:
vpc-three-tier-architecture
插圖:VPC 路由說明圖
場景描述: VPC 路由說明圖。以流程圖呈現一個封包從網際網路到私有子網路 EC
視覺重點:
- 主要內容清晰呈現
必須出現的元素:
- 依據描述中的關鍵元素
需要顯示的中文字: 無
顏色調性: 專業、清晰
避免元素: 抽象圖形、齒輪、發光特效
Slug:
vpc-routing-explained
相關文章
AWS AI 服務完整指南:Bedrock、SageMaker、AI 證照介紹【2025】
AWS AI 服務完整解析,涵蓋 Bedrock 生成式 AI(Claude、Llama 模型)、SageMaker 機器學習平台、Kiro AI 開發工具,以及 AWS AI Practitioner 證照介紹與三大雲 AI 服務比較。
AWSAWS 證照完整攻略:2025 考試指南、準備方法、價值分析
AWS 證照值得考嗎?本文完整解析 2025 年 AWS 證照體系(12 張證照)、各證照適用對象、考試費用、準備方法、薪資影響,以及證照順序建議。
AWSAWS 完整指南:服務介紹、費用、證照、台灣資源全面解析【2025】
AWS 是什麼?本文完整解析 Amazon Web Services 核心服務(EC2、S3、Lambda)、費用計算、證照考試、台灣代理商與資源,以及與 Azure、GCP 的比較。