網路
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:
從 Windows 查 WSL 的 IP:
注意大小寫:-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 寫:
然後在 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 失敗時,這兩項值得一試。
實務建議
- 本機前後端開發:先用預設 NAT,瀏覽器開
localhost。 - 一接上公司 VPN 就沒網路:改鏡像模式,並確認 DNS tunneling。
- 手機或另一台電腦要打到你的 WSL 服務:鏡像模式,或 portproxy。