你剛裝好一台虛擬機,Ubuntu 桌面跑起來了,開瀏覽器想試試——結果完全連不上網路。
打開網路設定,IP 顯示 169.254.x.x(自動分配的 link-local 位址,代表根本沒拿到 IP)。你切換了幾個網路選項,有的能上網但區網裝置看不到 VM,有的 VM 之間可以互通但外網打不開。每個虛擬化軟體的名稱還不太一樣——VMware 叫 NAT、Hyper-V 叫 Default Switch、VirtualBox 又多了個「Internal Network」。
這篇文章就是要把這件事一次講清楚。虛擬機的網路模式其實就三種核心概念:NAT、Bridge、Host-Only。搞懂這三種模式的封包流向,不管你用哪套軟體,都能在 30 秒內選對設定。
這篇適合誰
| 如果你是... | 建議閱讀段落 |
|---|---|
| 剛裝好 VM 但連不上網路 | 全篇,從基本概念開始 |
| 知道 NAT 但不確定什麼時候該用 Bridge | NAT 模式 → Bridge 模式 → 比較表 |
| 想在 VM 裡架 Server 讓區網其他設備連入 | Bridge 模式 → 實作切換 |
| 想做隔離測試環境(惡意軟體分析、網路實驗) | Host-Only 模式 |
| 已經懂概念,想查各軟體的對應名稱 | 各軟體對應名稱 |
| VM 網路出問題,想快速排除 | FAQ |
🧩 虛擬機網路基本概念
在講三種模式之前,先建立一個心智模型。
你的實體電腦有一張實體網卡(Physical NIC),插著網路線或連著 WiFi,透過路由器上網。當你建立一台虛擬機時,虛擬化軟體會模擬一張虛擬網卡(Virtual NIC)給 VM 用。VM 的作業系統看到這張虛擬網卡,就跟看到真的網卡一樣——可以設 IP、可以跑 DHCP、可以 ping。
但虛擬網卡的另一端接到哪裡,就是「網路模式」在決定的事。
想像你住在一棟大樓:
- 實體網卡 = 大樓的對外大門,連接到外面的馬路(實體網路)
- 虛擬網卡 = 每間房間的房門
- 虛擬交換器(Virtual Switch) = 大樓內部的走廊系統
三種網路模式,就是三種不同的「走廊接法」:
| 模式 | 比喻 |
|---|---|
| NAT | 所有房間共用大樓的門牌號碼,管理員(host)幫忙轉信 |
| Bridge | 每間房間有自己的門牌號碼,直接面對馬路 |
| Host-Only | 房間之間可以互通,但大門封死,完全不對外 |
接下來逐一拆解。
🔀 NAT 模式
NAT(Network Address Translation) 是最常見的預設模式。VM 住在一個由 Host 管理的私有子網路裡,Host 充當路由器,幫 VM 把封包轉發到外部網路。
封包流向
VM (10.0.2.15)
↓ 封包:src=10.0.2.15, dst=8.8.8.8
虛擬 NAT 路由器(Host 內建)
↓ 改寫封包:src=192.168.1.100(Host 的 IP), dst=8.8.8.8
實體網卡
↓
路由器 → 網際網路
↓ 回程封包
虛擬 NAT 路由器
↓ 還原封包:src=8.8.8.8, dst=10.0.2.15
VM 收到回應
VM 對外的封包,Source IP 會被 Host 改寫成 Host 自己的 IP。對外部網路來說,所有流量都像是從 Host 發出的——外部設備根本不知道 VM 的存在。
優點
- 零設定就能上網:裝好 VM 就能瀏覽網頁、apt update、pip install
- 不受區網環境影響:就算你在咖啡廳用公共 WiFi,NAT 模式一樣能正常上網
- 安全性高:外部裝置無法主動連入 VM,等於天然防火牆
缺點
- 區網裝置找不到 VM:你的手機、另一台電腦、NAS 都無法直接 ping 到 VM
- VM 之間不一定互通:不同 VM 可能在不同的 NAT 子網路裡(取決於軟體設定)
- 不適合架 Server:別人連不進來,自然沒辦法架 web server 給人測試
最適合的場景
- 日常開發:在 VM 裡寫程式、跑 npm install、測試 API
- 學習 Linux:裝個 Ubuntu Desktop 練指令
- 跑自動化腳本:不需要被外部連入
一句話記法: NAT = VM 躲在 Host 後面上網,外面看不到 VM。
🌉 Bridge 模式
Bridge(橋接) 模式讓 VM 直接接上你的實體網路,就像在區網裡多插了一台電腦。VM 會從你家路由器的 DHCP 拿到一個獨立的 IP 位址。
封包流向
VM (192.168.1.150) ← 路由器分配的獨立 IP
↓ 封包:src=192.168.1.150, dst=8.8.8.8
虛擬橋接器(直通實體網卡)
↓ 封包不改寫,原樣送出
實體網卡
↓
路由器 → 網際網路
同時:
手機 (192.168.1.50) → ping 192.168.1.150 → 直接到達 VM ✅
NAS (192.168.1.200) → http://192.168.1.150:8080 → 直接到達 VM ✅
Bridge 模式不做任何位址轉換。VM 的封包直接透過實體網卡送到區網,路由器看到的就是一台獨立的裝置。你在路由器的 DHCP Client List 裡甚至能看到 VM 的 MAC 位址。
優點
- 完整的區網存在感:其他裝置可以直接用 IP 連到 VM
- 適合架 Server 測試:在 VM 裡跑 Nginx,手機就能打開
http://192.168.1.150 - VM 之間天然互通:多台 Bridge 模式的 VM 都在同一個區網裡
缺點
- 依賴實體網路環境:如果你的 WiFi AP 不支援多 MAC(某些公共 WiFi 會擋),Bridge 就拿不到 IP
- WiFi 限制:某些無線網卡不支援 Bridge 模式(特別是 USB WiFi dongle),因為 WiFi 協定層對虛擬 MAC 的支援不如有線
- IP 消耗:每台 VM 佔一個 IP,如果你的 DHCP 範圍很小可能會用完
- 安全曝露:VM 直接暴露在區網,跟實體電腦一樣需要防火牆保護
最適合的場景
- 在 VM 裡架 Web Server / API Server,讓其他裝置測試
- 模擬真實的多機環境(例如測試 NAS 備份、Ansible 部署)
- 需要 VM 跟實體設備互通的任何情境
一句話記法: Bridge = VM 跟你的電腦平起平坐,各自有門牌。
🏠 Host-Only 模式
Host-Only 模式建立一個完全隔離的虛擬網路。VM 只能跟 Host 通訊,以及跟同一個 Host-Only 網路裡的其他 VM 通訊。完全沒有外網。
封包流向
VM-A (192.168.56.10) ←→ VM-B (192.168.56.11) ✅ 互通
VM-A (192.168.56.10) ←→ Host (192.168.56.1) ✅ 互通
VM-A (192.168.56.10) → 路由器 / 網際網路 ❌ 不通
外部裝置 → VM-A ❌ 不通
Host-Only 網路就像一個密封的房間,只有 Host 持有鑰匙。VM 可以跟 Host 互傳檔案(例如透過 SCP 或 HTTP),但完全碰不到外面的世界。
優點
- 完全隔離:VM 不會意外連到外網,也不會被外部攻擊
- 可控的實驗環境:多台 VM 組成封閉的測試叢集
- Host 仍可管理:透過 SSH 或其他方式從 Host 連入 VM
缺點
- 沒有網際網路:VM 無法 apt update、下載套件、查文件
- 需要手動設定:如果 VM 要裝軟體,得先在 Host 下載好再複製進去
最適合的場景
- 惡意軟體分析:在隔離環境裡觀察行為,不怕擴散
- 網路攻防演練:自己架一組攻擊機 + 靶機
- 敏感資料處理:確保 VM 裡的資料不會外洩
一句話記法: Host-Only = VM 關在密室裡,只有 Host 能進去看。
📊 三種模式完整比較表
| 項目 | NAT | Bridge | Host-Only |
|---|---|---|---|
| VM 的 IP 來源 | 虛擬 DHCP(Host 內建) | 實體路由器 DHCP | 虛擬 DHCP(Host 內建) |
| IP 範例 | 10.0.2.15 |
192.168.1.150 |
192.168.56.10 |
| VM → 外網 | ✅ 透過 NAT 轉發 | ✅ 直接連線 | ❌ 不通 |
| 外網 → VM | ❌ 除非設定 Port Forwarding | ✅ 直接連線 | ❌ 不通 |
| Host → VM | ✅(需查 VM 的 NAT IP) | ✅ 用區網 IP | ✅ 用 Host-Only IP |
| VM → Host | ✅ | ✅ | ✅ |
| VM ↔ VM | ⚠️ 取決於是否在同一 NAT 網段 | ✅ 同一區網 | ✅ 同一 Host-Only 網段 |
| 區網裝置 → VM | ❌ | ✅ | ❌ |
| 設定難度 | 最簡單(預設就能用) | 中等(需要有實體網路) | 簡單(但沒網路) |
| 安全性 | 高(天然隔離) | 低(直接曝露) | 最高(完全隔離) |
| 最佳用途 | 開發、學習、日常使用 | 架 Server、多機測試 | 安全測試、隔離實驗 |
進階組合技: 很多人會幫一台 VM 同時掛兩張虛擬網卡——一張設 NAT(讓 VM 能上網),一張設 Host-Only(讓 Host 方便連入 VM)。這是非常實用的做法,兼顧上網需求和管理便利性。
🔄 各軟體對應名稱
三種核心概念在不同虛擬化軟體裡的名稱略有不同,這是很多新手困惑的來源:
| 概念 | VMware Workstation | Hyper-V | VirtualBox |
|---|---|---|---|
| NAT | NAT (VMnet8) | Default Switch | NAT |
| Bridge | Bridged (VMnet0) | External Switch | Bridged Adapter |
| Host-Only | Host-Only (VMnet1) | Internal Switch | Host-Only Adapter |
| VM 之間隔離 | — | Private Switch | Internal Network |
Hyper-V 的特殊之處
Hyper-V 的名稱最容易搞混,特別說明:
- Default Switch:Windows 10 以後內建的虛擬交換器,行為類似 NAT。VM 可以上網,但外部看不到 VM。它的特別之處是 IP 範圍每次重開機可能會變。
- External Switch:綁定到一張實體網卡,等同 Bridge 模式。建立時需要指定用哪張實體網卡。
- Internal Switch:只有 Host 和 VM 能互通,VM 不能上網,等同 Host-Only。
- Private Switch:連 Host 都無法連入,只有 VM 之間互通。這是比 Host-Only 更嚴格的隔離。
VirtualBox 的額外選項
VirtualBox 還有兩個進階模式:
- Internal Network:類似 Hyper-V 的 Private Switch,VM 之間互通但 Host 碰不到
- NAT Network:改良版 NAT,同一個 NAT Network 裡的 VM 可以互相通訊(預設 NAT 模式不行)
🛠️ 實作:怎麼切換網路模式
VMware Workstation
- 在 VM 關機或開機狀態下,點選 VM → Settings
- 選擇 Network Adapter
- 右側直接切換:NAT / Bridged / Host-Only / Custom
- 如果選 Bridged,建議點 Configure Adapters 指定要橋接哪張實體網卡(避免自動選到錯的)
- 點 OK,VM 內部執行
sudo dhclient或重新啟動網路服務即可拿到新 IP
Hyper-V
- 先在 Hyper-V Manager → Virtual Switch Manager 建立所需的交換器類型
- 建立 External Switch 時,選擇要綁定的實體網卡,勾選「Allow management operating system to share this network adapter」
- 回到 VM 設定 → Network Adapter → 在下拉選單選擇對應的 Virtual Switch
- 套用後 VM 會自動重新取得 IP
注意: Hyper-V 建立 External Switch 時會短暫斷網幾秒(因為要重新綁定實體網卡),這是正常現象,不要慌張直接關掉。
VirtualBox
- 在 VM 關機狀態下,點選 Settings → Network
- Adapter 1 下拉選擇 Attached to:NAT / Bridged Adapter / Host-Only Adapter
- 如果選 Bridged,在 Name 下拉選擇實體網卡
- 點 OK,開機後自動取得 IP
VirtualBox 最多可以掛 4 張虛擬網卡(Adapter 1-4),每張可以設定不同模式。前面提到的「NAT + Host-Only 雙網卡」組合,就是在 Adapter 1 設 NAT、Adapter 2 設 Host-Only。
❓ FAQ
Q1:Bridge 模式拿不到 IP 怎麼辦?
最常見的原因:
- 橋接到錯的網卡:檢查是否橋接到你正在用的那張(有線 vs WiFi)
- WiFi 不支援:某些 WiFi 網卡(特別是 USB dongle)不支援 Bridge 的 MAC 虛擬化。解法:改用有線網路,或改用 NAT
- 路由器 DHCP 耗盡:登入路由器看 DHCP 範圍是否已滿
- 防火牆阻擋:Host 的防火牆可能擋住了橋接流量。暫時關閉防火牆測試看看
Q2:NAT 模式下,區網其他設備要怎麼連到 VM?
預設是不行的。但可以透過 Port Forwarding 實現:
- VMware:Edit → Virtual Network Editor → NAT Settings → Port Forwarding
- VirtualBox:VM Settings → Network → Advanced → Port Forwarding
例如把 Host 的 8080 port 轉發到 VM 的 80 port,區網裝置連 http://你的Host-IP:8080 就能到達 VM 的 Web Server。
Q3:兩台 VM 互相 ping 不到?
先確認兩台 VM 的網路模式:
- 都是 NAT:VirtualBox 預設每台 VM 有獨立的 NAT 網路,需要改用 NAT Network 才能互通。VMware 預設共用 VMnet8,通常可以互通
- 都是 Host-Only:應該要能互通。檢查 VM 內部的防火牆設定(Ubuntu 的
ufw、Windows 的防火牆) - 一台 NAT 一台 Bridge:不同網段,無法直接互通
Q4:WiFi 環境下 Bridge 模式不穩定?
WiFi 的 Bridge 模式本來就比較不穩定。原因是 WiFi 協定(802.11)對 MAC 位址的處理跟有線不同,很多 AP 會擋不認識的 MAC。
實務建議:
- 有線環境用 Bridge
- WiFi 環境用 NAT + Port Forwarding
- 或用 NAT + Host-Only 雙網卡繞過問題
Q5:NAT 模式下 VM 可以用 VPN 嗎?
可以。VM 透過 NAT 連上網後,在 VM 內安裝 VPN 客戶端正常使用即可。VPN 流量會被 NAT 轉發出去,跟普通上網流量沒有區別。
但如果你是想讓 VM 走 Host 的 VPN,情況比較複雜:NAT 模式下 VM 通常會自動走 Host 的 VPN 隧道(因為 Host 的路由表改變了),但 Bridge 模式下 VM 有獨立路由,不會走 Host 的 VPN。
Q6:Docker / K8s 實驗該用哪種模式?
- 單機 Docker 練習:NAT 就夠了。Docker 自己有 port mapping(
-p 8080:80),在 VM 內操作即可 - 多節點 K8s 叢集:建議用 Bridge。多台 VM 需要互通、需要穩定 IP,Bridge 最適合。或者用 Host-Only + 手動設定靜態 IP 也行(避免 DHCP IP 漂移)
- K8s + 需要外網拉 image:Bridge 模式最方便。或用 NAT + Host-Only 雙網卡(NAT 上網、Host-Only 叢集內部通訊)
✨ 結語
虛擬機的網路設定看起來選項很多,但核心概念就這三種。NAT 讓 VM 躲在 Host 後面安全上網,Bridge 讓 VM 走進區網跟其他設備平起平坐,Host-Only 把 VM 關進密室做實驗。
下次 VM 網路不通的時候,不用再亂按設定碰運氣。先問自己一個問題:「我需要 VM 被誰看到?」——只要自己上網就選 NAT,要讓區網設備連進來就選 Bridge,完全不想讓任何人碰到就選 Host-Only。三秒鐘就能做出正確的選擇。
🔗 延伸閱讀
- VMware Workstation Pro 免費版完整教學:安裝、快照、網路模式 — VMware 的 NAT/Bridged/Host-Only 實際操作步驟
- Hyper-V 完整教學:啟用設定到虛擬交換器 — Hyper-V 的 External/Internal/Private Switch 建立方式
- WSL2 + Ubuntu 開發環境完整教學 — 不需要虛擬機也能跑 Linux 的輕量替代方案
- 虛擬機比較:VMware vs Hyper-V vs VirtualBox 怎麼選? — 三大桌面虛擬化軟體的完整比較