Skip to content

建立 2026-09-14 更新 2026-09-14

網路

WSL 2 預設用 NAT(網路位址轉譯):發行版像一台有獨立虛擬網卡的小機器,Windows 再幫它轉連線。對「在 WSL 跑網站、用 Windows 瀏覽器開」這件事通常沒問題;對 VPN、IPv6、從區網連進來,才容易卡住。

官方說明:Accessing network applications with WSL

預設 NAT:localhost 怎麼連

在 WSL 裡啟動的服務(例如 localhost:3000 的 Node 開發伺服器),Windows 瀏覽器用 http://localhost:3000 就能開。這是最常見、也最順的方向。

反過來:Linux 裡的程式要連 Windows 上 的服務時,NAT 模式下 localhost 指的是 WSL 自己,不是 Windows。先查 Windows 主機在 WSL 眼中的 IP:

ip route show | grep -i default | awk '{ print $3}'

從 Windows 查 WSL 的 IP:

wsl hostname -I

注意大小寫:-I 才是「給別人看的位址」;-i 常會得到 127.0.1.1 這類本機佔位。

從區網其他裝置連進 WSL 2 的服務,預設不通,因為那張虛擬網卡不在你的實體 LAN 上。需要時可用 netsh interface portproxy 做連接埠轉送,或改用下面的鏡像模式。

綁服務時若希望「不只本機、連區網也進得來」,應用程式要聽 0.0.0.0 而不是只聽 127.0.0.1。這會讓區網都能連,請先想清楚安全性。

鏡像模式(Windows 11)

Windows 11 22H2 以上可在 %USERPROFILE%\.wslconfig 寫:

[wsl2]
networkingMode=mirrored

然後在 PowerShell 執行 wsl --shutdown 再重開。鏡像模式把 Windows 的網路介面「照」進 Linux,常見好處:

  • Linux 可用 127.0.0.1 連 Windows 上的服務
  • VPN 相容性較好
  • 支援 IPv6、multicast
  • 較容易從區網直接連到 WSL

公司有防火牆原則時,可能還要允許 Hyper-V 防火牆的輸入連線,官方文件有 Set-NetFirewallHyperVVMSetting 範例。

同檔案裡還有 dnsTunneling(較新的 WSL 預設常已開啟)與 autoProxy=true(讓 WSL 跟著 Windows 的 HTTP 代理)。VPN 下 DNS 失敗時,這兩項值得一試。

實務建議

  1. 本機前後端開發:先用預設 NAT,瀏覽器開 localhost
  2. 一接上公司 VPN 就沒網路:改鏡像模式,並確認 DNS tunneling。
  3. 手機或另一台電腦要打到你的 WSL 服務:鏡像模式,或 portproxy。

組態寫法見 組態檔;連線失敗見 疑難排解