許多初學者在學習 AWS 時,常常對 EC2、Subnet、ENI 這三個概念感到困惑。
大部分人以為「把 EC2 放進 Subnet 就能上網」,但實際上還有一個重要角色叫 ENI(網路介面卡)在中間扮演關鍵作用。
很多人不知道 ENI 的存在,或者不理解為什麼需要這個額外的組件。
這篇文章將用最簡單的比喻和實際例子,幫你徹底理解這三者的分工與關係,以及為什麼在災難備援架構中,正確理解這些概念如此重要。
當你完成這篇文章的閱讀後,你將能夠:
- 清楚區分 EC2、ENI、Subnet 的功能差異
- 理解它們之間的連接關係和架構邏輯
- 掌握 ENI 在高可用架構中的重要性
- 具備設計多網段、備援架構的基礎知識
核心概念解析:什麼是 EC2、ENI、Subnet?
用生活比喻理解三者關係
想像你要在一棟辦公大樓裡設置電腦網路,這時:
| AWS 資源 | 生活比喻 | 實際功能 |
|---|---|---|
| EC2 | 一台沒插網路線的電腦主機 | 負責「運算」,執行應用程式 |
| ENI | 電腦的網路卡(有插孔、IP、MAC位址) | 連結網路的「橋樑」,負責網路通訊 |
| Subnet | 辦公大樓中特定樓層的網路區段 | IP 位址池,屬於特定可用區(AZ) |
| VPC | 整棟辦公大樓的網路總架構 | 你的 AWS 私有網路空間 |
| Security Group | 大樓的門禁卡系統 | 控制網路流量進出的防火牆 |
關鍵理解點
重點:EC2 本身沒有網路功能!
這是許多初學者的盲點。EC2 只是一台虛擬電腦,它需要透過 ENI(網路卡)才能連接到網路。就像你買了一台電腦,但沒有網路卡,是無法上網的。
架構關係:三者如何協作?
正確的架構層級
Region(例如:東京)
└── VPC(你的虛擬網路空間)
└── Availability Zone(可用區 a)
└── Subnet(子網段,例如 10.0.1.0/24)
├── ENI 1(網卡 - IP: 10.0.1.11)
│ └── 掛載到 EC2 A(虛擬機器)
├── ENI 2(網卡 - IP: 10.0.1.12)
│ └── 掛載到 EC2 B(虛擬機器)
└── ENI 3(網卡 - IP: 10.0.1.13)
└── 掛載到 EC2 C(虛擬機器)連接流程
- EC2 啟動 → 需要網路功能
- 掛載 ENI → 提供網路介面
- ENI 綁定 Subnet → 從 IP 池中分配位址
- 套用 Security Group → 設定防火牆規則
- 開始網路通訊 → 完成連線
ENI 深度解析:為什麼它如此重要?
ENI 的獨特特性
ENI(Elastic Network Interface)就像一張「可以拔插的網路卡」,它有四個重要特性:
特性一:獨立 IP 和 MAC 位址
想像你有一張實體網路卡,上面寫著固定的序號(MAC)和分配到的門牌號碼(IP)。
具體例子:
- 你建立了一個 ENI,系統分配給它:
- MAC 位址:
0a:1b:2c:3d:4e:5f(網卡的身分證) - IP 位址:
10.0.1.15(網路上的門牌) - 這個 ENI 可以從 EC2-A 拔下來,插到 EC2-B 上
- IP 和 MAC 都不會改變,就像搬家時帶著同一張門牌
特性二:可重複使用
傳統觀念:EC2 掛掉 = 網路設定也消失
ENI 觀念:EC2 掛掉,但「網路卡」還在,可以插到新電腦
具體例子:
步驟1:建立 ENI-Production(IP: 52.1.2.3)
步驟2:插到 EC2-WebServer-A 上運作
步驟3:EC2-WebServer-A 當機
步驟4:拔下 ENI-Production
步驟5:插到備用的 EC2-WebServer-B
步驟6:網站恢復,IP 位址完全沒變好處: 客戶連線不會斷,DNS 不用更新
特性三:多網卡支援
就像一台電腦可以插多張網路卡,連接不同網路。
具體例子:
假設你經營一個購物網站,需要:
- 前台:讓客戶瀏覽商品
- 後台:連接資料庫和金流系統
EC2-購物網站主機
├── ENI-前台(Public Subnet)
│ ├── IP: 10.0.1.20(對外)
│ ├── 綁定彈性IP: 52.1.2.3(固定對外IP)
│ └── Security Group: 只允許 HTTP/HTTPS
└── ENI-後台(Private Subnet)
├── IP: 10.0.2.20(僅內網)
├── 無對外IP
└── Security Group: 只允許資料庫連線實際運作:
- 客戶訪問 52.1.2.3,透過前台ENI進來
- 網站需要查詢資料時,透過後台ENI連資料庫
- 兩個網路完全隔離,提高安全性
特性四:個別安全群組設定
每個 ENI 都可以有自己的「門禁管制」。
具體例子:
同一台 EC2 的雙 ENI 設定:
ENI-1(Web服務)
├── Security Group: Web-SG
├── 允許:全世界的 80, 443 port
└── 拒絕:其他所有連線
ENI-2(管理介面)
├── Security Group: Admin-SG
├── 允許:公司IP的 22, 3389 port
└── 拒絕:其他所有連線ENI 在災難備援中的實際應用場景
場景一:電商網站的IP固定需求
背景: 你經營一個線上商店,已經跟金流公司、物流公司設定好固定 IP 白名單。
問題: 如果主機壞了重建,IP會變,所有合作商都要重新設定白名單,至少停機半天。
ENI 解決方案:
平常運作:
├── ENI-Shop(IP: 52.1.2.3)
└── 掛在 EC2-Main 上跑電商系統
主機故障:
├── EC2-Main 當機(硬體故障)
├── ENI-Shop 還在(重要!)
└── 準備啟動備用主機
5分鐘內復原:
├── 啟動 EC2-Backup
├── 掛上 ENI-Shop
└── IP 52.1.2.3 立即恢復服務結果: 合作商不用改設定,客戶幾乎感覺不到中斷
場景二:雙網段隔離架構
背景: 你開發一個處理敏感資料的系統,需要將「對外服務」和「內部處理」完全分開。
設計需求:
- 前台:處理用戶請求,可以連接網際網路
- 後台:處理敏感資料,絕對不能直接連外網
ENI 雙網段設計:
應用伺服器 EC2
├── 前台 ENI
│ ├── 位於 Public Subnet(10.0.1.0/24)
│ ├── IP: 10.0.1.25
│ ├── 有 Internet Gateway,可對外連線
│ ├── Security Group: 允許 HTTPS 443
│ └── 負責接收用戶請求
└── 後台 ENI
├── 位於 Private Subnet(10.0.2.0/24)
├── IP: 10.0.2.25
├── 無 Internet Gateway,無法對外
├── Security Group: 只允許資料庫 port 5432
└── 負責處理敏感資料
實際流程:
用戶請求 → 前台ENI接收 → 應用程式處理 → 後台ENI查資料庫 → 回傳結果安全好處:
- 即使前台被駭客攻破,也無法直接存取後台網路
- 敏感資料處理過程完全與外網隔離
- 可以針對不同ENI設定不同的監控和日誌規則
Subnet 深度理解:網路區段的規劃
Subnet 到底是什麼?用社區大樓來比喻
想像你住在一個大型社區,整個社區叫做「VPC社區」,而 Subnet 就像社區裡的「A棟大樓」。
Subnet 就像一棟大樓,它決定了:
門牌號碼範圍(IP 範圍)
假設 A 棟大樓的門牌是 10.0.1.1 到 10.0.1.254,總共可以住 254 戶人家。
- 寫成網路術語就是:
10.0.1.0/24 - 意思是:這棟大樓有 254 個可用的門牌號碼
大樓位置(可用區)
每棟大樓只能蓋在社區內的一個特定區塊,不能跨區塊。
- A 棟在社區的東區(對應 AZ-a)
- B 棟在社區的西區(對應 AZ-b)
- 不能說 A 棟一半在東區,一半在西區
進出路線(網路路由)
每棟大樓都有固定的進出路線:
- 有些大樓連接大馬路,可以直接對外(Public Subnet)
- 有些大樓在內部巷弄,要透過其他路線才能對外(Private Subnet)
一棟大樓裡住了什麼?實際例子
想像 A 棟大樓(Subnet 10.0.1.0/24)裡的住戶分配:
A 棟大樓(門牌範圍:10.0.1.1~10.0.1.254)
├── 11號住戶:小明的電腦(EC2-A)
│ └── 網路線接孔-1(ENI-1,門牌10.0.1.11)
├── 12號住戶:小華的電腦(EC2-B)
│ └── 網路線接孔-2(ENI-2,門牌10.0.1.12)
├── 13號住戶:小李的工作站(EC2-C)
│ ├── 主要網路線(ENI-3,門牌10.0.1.13)
│ └── 備用網路線(ENI-4,門牌10.0.1.14)
└── 15號:預留的網路接孔(ENI-5,門牌10.0.1.15)
└── 目前沒有電腦連接,但可以隨時使用重要觀念釐清:破解常見迷思
迷思一:「一棟大樓只能住一戶人家」
❌ 錯誤想法: 一個 Subnet 只能放一台 EC2
✅ 正確理解: 就像一棟大樓可以住很多戶,一個 Subnet 可以放很多台 EC2
實際例子:
- 一個網咖的 Subnet(10.0.1.0/24)
- 可以放 50 台電腦(EC2)
- 每台都有自己的 IP:10.0.1.11、10.0.1.12…10.0.1.60
迷思二:「電腦直接擁有門牌號碼」
❌ 錯誤想法: EC2 直接擁有 IP 位址
✅ 正確理解: IP 位址屬於網路接孔(ENI),不是電腦本身
更好的比喻:辦公室座位和分機號碼
- 你(EC2)坐在辦公室的某個座位
- 座位上有電話分機(ENI),分機號碼是 2101
- 如果你換到別的座位,分機號碼 2101 還是留在原座位
- 但如果你可以「搬走整個電話機」,就能在新座位用同樣的 2101 號碼
實際操作例子:
情況1:EC2 掛掉,重建一台新的
結果:就像重新分配座位,會拿到新的分機號碼
情況2:把 ENI 拔下來插到新 EC2
結果:就像搬走整個電話機,在新座位還能用原號碼 2101迷思三:「網路設定跟著電腦走」
❌ 錯誤想法: 網路設定(防火牆)綁定在 EC2 上
✅ 正確理解: 網路設定綁定在網路接孔(ENI)上
更好的比喻:電話機的來電管制功能
- 傳統想法:「小王這個人的電話有來電管制」
- 正確想法:「2101 這支電話機設定了來電管制」
實際例子:
電話機 ENI-A 的來電管制設定:
├── 只接受公司內部來電(內線 1000-2000)
├── 拒絕所有外線來電
└── 允許特定客戶直撥(白名單號碼)
當你把這支電話機從小王桌上搬到小李桌上:
├── 小李用這支電話,所有管制規則都一樣
├── 還是只能接內線和白名單電話
└── 電話機的設定沒有因為換人用就改變實務應用:為什麼這些概念很重要?
場景:公司網路規劃
你的公司有 3 個部門,每個部門需要不同的網路權限:
VPC-公司網路
├── Subnet-業務部(10.0.1.0/24)
│ ├── 可以連外網查客戶資料
│ └── 30台 EC2,每台配一個 ENI
├── Subnet-研發部(10.0.2.0/24)
│ ├── 只能連內網,保護原始碼
│ └── 20台 EC2,每台配一個 ENI
└── Subnet-管理部(10.0.3.0/24)
├── 可以管理所有網段
└── 5台 EC2,每台配多個 ENI 連接不同網段場景:災難復原計畫
平常:
生產環境 EC2 ← ENI(固定 IP:10.0.1.100)
災難發生:
生產 EC2 故障
快速復原:
備用 EC2 ← 接上同個 ENI(IP 還是:10.0.1.100)
好處:
├── 客戶連線不會斷
├── DNS 不用改
└── 5分鐘內恢復服務這樣解釋是不是比較清楚了?Subnet 就是一棟有門牌範圍的大樓,ENI 是大樓裡的網路接孔,EC2 是插在接孔上的電腦設備。
實務操作:在 AWS Console 中看到的真實情況
建立 EC2 時,AWS 在背後做了什麼?
當你在 AWS 網頁上點「Launch Instance」建立一台新電腦時,你看到的vs系統實際做的:
你看到的操作步驟
步驟1:選擇機器規格 → t2.micro(小型電腦)
步驟2:選擇網路位置 → VPC-MyCompany / Subnet-WebServer
步驟3:設定安全群組 → 允許 HTTP、HTTPS 連線
步驟4:點擊「Launch」→ 等待 2-3 分鐘
步驟5:看到「Instance Running」→ 電腦開好了!AWS 在背後自動做的事情
系統執行:
├── 看你選了 Subnet-WebServer
├── 自動建立一張「網路卡」ENI-12345
├── 把這張網路卡插到你的新電腦上
├── 從 Subnet 的 IP 池裡抓一個號碼:10.0.1.25
├── 把安全群組設定綁定到這張網路卡上
└── 完成!電腦可以上網了
結果:
EC2-WebServer01 ← 插著 ENI-12345(IP: 10.0.1.25)重點:你以為是「電腦直接連網路」,其實是「電腦插上網路卡才連網路」
什麼時候需要「手動處理網路卡」?
情況一:準備災難備援
一般人的做法(有風險):
- 只建立一台主機,壞了再說
- 壞了重建 → IP 會變 → 客戶連不上 → 損失慘重
專業做法(用 ENI):
步驟1:手動建立一張「救命網路卡」ENI-Backup
├── 分配固定 IP:52.1.2.100(重要的對外IP)
├── 設定安全規則:只允許客戶連線
└── 先不要插到任何電腦上,放著備用
步驟2:平常運作
├── 主機 EC2-Main 用一般網路卡運作
├── ENI-Backup 暫時沒使用
└── 客戶透過 52.1.2.100 訪問你的服務
步驟3:災難發生
├── EC2-Main 掛掉了
├── 緊急啟動備用主機 EC2-Backup
├── 把 ENI-Backup 插到 EC2-Backup 上
└── 5分鐘內恢復,客戶幾乎沒感覺情況二:同一台電腦需要連接兩個不同網路
實際業務場景:
你的購物網站需要:
- 前台:客戶瀏覽商品(要能連外網)
- 後台:處理訂單和金流(只能連內網,安全考量)
解決方案:
購物網站主機 EC2-Shop
├── 網路卡-1(ENI-Frontend)
│ ├── IP: 10.0.1.50(前台網路)
│ ├── 可以連接外網
│ └── 處理客戶的瀏覽請求
└── 網路卡-2(ENI-Backend)
├── IP: 10.0.2.50(後台網路)
├── 不能連外網
└── 只能連接內部資料庫在 AWS 網頁上實際怎麼操作?
查看你現在有哪些「網路卡」
操作步驟:
1. 登入 AWS Console
2. 搜尋「EC2」→ 點進去
3. 左側選單找到「Network Interfaces」
4. 你會看到一個清單,每一行就是一張「網路卡」
清單會顯示:
├── ENI ID: eni-12345678(網路卡編號)
├── IP Address: 10.0.1.25(這張卡的IP)
├── Subnet: subnet-abc123(插在哪棟大樓)
├── Instance: i-987654321(插在哪台電腦)
└── Status: In-use(正在使用中)手動建立一張「備用網路卡」
操作步驟:
1. 在 Network Interfaces 頁面
2. 點「Create Network Interface」
3. 填寫設定:
├── Description: 備用網路卡-購物網站
├── Subnet: 選擇你要的大樓(subnet-web)
├── Private IP: 可選特定號碼或自動分配
└── Security Groups: 選擇防火牆規則
4. 點「Create」
5. 完成!現在你有一張沒插在任何電腦上的網路卡把網路卡插到電腦上
操作步驟:
1. 在 Network Interfaces 清單中
2. 選擇你要的網路卡(打勾)
3. 點「Actions」→「Attach」
4. 選擇要插到哪台電腦:
├── Instance: 選擇目標電腦(EC2)
└── Device Index: 通常選 1(第二張網路卡)
5. 點「Attach」
6. 完成!這台電腦現在有兩張網路卡了設定固定的對外 IP(彈性 IP)
為什麼需要?
├── 一般 IP:電腦重開可能會變
├── 彈性 IP:永遠不變,適合對外服務
└── 就像申請市話專線 vs 用手機號碼的差別
操作步驟:
1. 左側選單找「Elastic IPs」
2. 點「Allocate Elastic IP address」→ 申請一個固定IP
3. 選擇剛申請的 IP → Actions → Associate
4. 選擇要綁定的網路卡(ENI)
5. 完成!現在這張網路卡有固定對外 IP 了實際檢查:你的 EC2 真的有 ENI 嗎?
簡單驗證步驟:
1. 進入你的 EC2 詳細頁面
2. 往下滾動找到「Networking」區塊
3. 你會看到:
├── Network Interface: eni-xxxxxxxx(這就是網路卡ID!)
├── Private IP: 10.0.x.x(內網IP)
├── Public IP: 52.x.x.x(外網IP,如果有的話)
└── Security Groups: sg-xxxxxxxx(防火牆設定)
這證明:你的 EC2 確實是透過 ENI 連網的!常見問題與疑難排解
觀念釐清 Q&A
Q: 為什麼不能直接讓 EC2 連到 Subnet?
A: 因為網路功能需要專門的介面(ENI)來處理。這樣設計讓網路配置更靈活,可以獨立管理。
Q: ENI 可以跨 Subnet 使用嗎?
A: 不行。每個 ENI 建立時就綁定特定 Subnet,不能移到其他 Subnet。
Q: 一台 EC2 最多可以有幾個 ENI?
A: 依 EC2 機型而定,小型約 2-3 個,大型可達 15 個以上。
實務設計建議
單一網段應用
簡單網站:EC2 + 1個ENI + Public Subnet雙網段隔離
企業應用:EC2 + 前台ENI(Public) + 後台ENI(Private)高可用備援
關鍵服務:主機群 + 可移動ENI + 自動切換腳本結語
理解 EC2、ENI、Subnet 的關係是 AWS 網路架構的基礎。記住這個核心邏輯:
EC2(運算)→ ENI(網路介面)→ Subnet(網路區段)→ VPC(網路空間)
每一層都有其專門功能,分層設計讓你能建構更靈活、可靠的雲端架構。
在災難備援場景中,ENI 的可移動性更是實現快速故障切換的關鍵技術。
掌握了這些概念後,你就具備了設計 AWS 高可用架構的重要基礎。
接下來可以開始實作練習,將理論轉化為實際的操作經驗。