[2026必修] WSL2 網路不再卡頓!開啟 Mirrored Mode 徹底解決 VPN 與 Port 轉發惡夢

約 4 分鐘閱讀

各位老鐵、全端工程師、被 Docker 網路搞瘋的極客們大家好,我是站長。

現在是 2026 年,Windows Subsystem for Linux 2 (WSL2) 早就已經是開發標配。但是,你是不是還在忍受那個「半殘」的網路架構?
每次在 WSL2 跑 npm run dev,都要手動去查虛擬 IP;公司 VPN 一開,WSL2 直接斷網;想讓區網同事連你的 API,還得寫 PowerShell 腳本搞 Port Forwarding(連接埠轉發)。

這一切的痛苦,都源自於 WSL2 傳統的 NAT (網路位址轉譯) 架構。

但在 Windows 11 24H2,微軟終於把 「Mirrored Mode (鏡像網路模式)」 扶正了!這是自 WSL 問世以來最大的網路底層革命。今天站長要教你如何拋棄舊時代的 workaround,用正規方式讓 Linux 與 Windows 共用同一個 IP,實現「真正的合體」。

更新時間:2026/01/26 | 驗證環境:Windows 11 24H2 (Build 26100.x) / WSL 版本 2.4.x

⚡ 站長快讀:重點與數據 (Key Takeaways)

  • 核心痛點: 舊版 WSL2 使用 NAT,導致 IP 變動、無法支援 IPv6、且被 VPN 軟體阻擋。
  • 解決方案: 啟用 Mirrored Mode。這會移除虛擬網卡,讓 Linux 介面直接「鏡像」宿主機的實體網路介面。
  • 關鍵優勢:
    • 共用 IP: localhost (127.0.0.1) 在 Windows 和 Linux 之間完全互通。
    • IPv6 支援: 終於不用再關閉 IPv6 來避開 bug。
    • VPN 穿透: 企業級 VPN (如 Cisco, GlobalProtect) 不再導致 WSL 斷網。
  • 硬性門檻: Windows 11 24H2 或更高版本。

1. [背景知識] 為什麼 NAT 模式是萬惡之源?

在 2024 年以前,WSL2 就像一台躲在路由器(Hyper-V 虛擬交換器)後面的獨立電腦。

  • 情境 A: 你在 WSL 跑 Web Server (Port 3000)。Windows 瀏覽器打 localhost:3000 有時會通,但有時得打 172.x.x.x:3000
  • 情境 B: 你想從手機連電腦測試網頁。你得用 netsh interface portproxy 指令把 Port 打通,重開機後 IP 變了,又要重設一次。

Mirrored Mode 的出現,直接把這層虛擬路由器「拆了」。WSL2 看到的網路環境,就是 Windows 看到的環境。

2. [實戰教學] 編輯 .wslconfig 解鎖隱藏功能

這個功能預設是關閉的(為了相容舊版行為)。我們需要手動編輯全域設定檔。

Step 1: 建立或編輯設定檔

此檔案位於你的使用者根目錄。請開啟 PowerShell 或檔案總管:

# Open .wslconfig with Notepad
# 註釋:開啟位於使用者目錄下的全域設定檔,若無此檔案請建立
notepad $env:UserProfile\.wslconfig

Step 2: 寫入關鍵參數

請將以下內容完整複製並貼上。這些參數是站長經過多次踩坑後總結的「黃金組合」:

# .wslconfig Content

[wsl2]

# 啟用鏡像網路模式 networkingMode=mirrored # 讓 WSL 的 DNS 查詢透過 Windows 解析 (解決公司內網解析問題) dnsTunneling=true # 讓 Windows 防火牆規則自動套用到 WSL (安全性提升) firewall=true # 自動同步 Windows 的 HTTP Proxy 設定 (企業用戶救星) autoProxy=true # (選用) 釋放記憶體更積極 memory=16GB

站長解釋:

  • dnsTunneling=true: 必開。不然在複雜的 VPN 環境下,WSL 會解不出網域名稱。
  • firewall=true: 這代表你在 Windows Defender 防火牆設定的規則,會同步保護 Linux,不用再搞 iptables

Step 3: 重啟 WSL 讓設定生效

設定檔存檔後,必須完全關閉 WSL 虛擬機才能生效。

# Shutdown WSL completely
# 註釋:強制關閉所有 WSL 實體
wsl --shutdown

# 註釋:等待 5 秒後,重新進入 WSL
wsl

3. [驗證與進階] 真的成功了嗎?

進入 WSL (Ubuntu/Debian) 後,輸入 ifconfigip addr

  • 舊版 (NAT): 你會看到 eth0 的 IP 是 172.17.x.x 這種虛擬段。
  • 新版 (Mirrored): 你會看到與 Windows 一模一樣的實體 IP (例如你的 Wi-Fi IP 192.168.1.100)。

災情預警與排除

  1. Docker 用戶注意:
    如果你是用 Docker Desktop,它預設有自己的網路層。建議在 Docker Desktop 設定中,開啟 “Use WSL 2 networking” (如果有的話) 或直接在 WSL 內部安裝 Docker Engine (推薦,效能更好)。
  2. 防毒軟體擋路:
    部分第三方的防毒軟體 (Kaspersky, McAfee) 可能會把鏡像流量視為攻擊。如果遇到連線被拒,請暫時移除第三方防毒,回歸 Microsoft Defender (它對 24H2 支援最好)。

4. 常見問題 (FAQ)

  • Q: 開了 Mirrored Mode,我的 Hyper-V 虛擬機也會變嗎?
    • A: 不會。這設定只針對 WSL2。標準的 Hyper-V VM 還是走虛擬交換器。
  • Q: 為什麼 systemd 啟動的服務,我在 Windows 還是連不到?
    • A: 請檢查該服務綁定的 IP。如果它綁定 127.0.0.1,現在 Windows 也可以直接連 127.0.0.1 了!以前反而是要綁定 0.0.0.0 Windows 才連得到,現在反而簡單了。
  • Q: 這能解決 WSL 吃光記憶體的問題嗎?
    • A: 網路模式跟記憶體無關。但你可以在 .wslconfig 中加入 autoMemoryReclaim=gradual (24H2 新功能),讓它閒置時自動把 RAM 還給 Windows。

5. 結論

微軟在 2026 年終於把 WSL2 的最後一塊拼圖——「網路」給補齊了。Mirrored Mode 讓 Linux 子系統真正融入了主機,不再是個總是需要「打洞」的孤島。

如果你的開發環境還卡在「寫腳本轉發 Port」或「開 VPN 就斷網」的石器時代,請立刻升級 Windows 11 24H2 並套用這篇教學。這單我推,絕對是有感升級。