WSL mirrored 網路模式設定指南

WSL 2.6.0 網路模式升級設定指南

版本需求

當前版本狀態:

  • 最新穩定版:2.5.9(存在網路設定缺陷)
  • 推薦版本:2.6.0 預覽版(支援完整 mirrored 模式)

模式對比分析

特性bridge 模式(已廢棄)mirrored 模式(推薦)
協議堆疊架構雙協議堆疊共享協議堆疊
IP 位址分配獨立 IP(Windows+WSL)共享主機 IP
連接埠資源獨立使用共享連接埠(需避免衝突)
網路效能相對較重輕量高效
設定複雜度簡單需深度設定防火牆原則

標準設定步驟

1. 網路模式設定

透過 WSL Settings 應用程式設定基礎模式:

  1. 開啟設定應用程式
  2. 選擇「Network」分頁
  3. 設定網路模式為「Mirrored」
  4. 套用設定並重新啟動 WSL

2. 防火牆原則設定

需透過 PowerShell 執行完整原則設定:

# 定義 WSL 虛擬機 GUID
$wslGuid = '{40E0AC32-46A5-438A-A0B2-2B479E8F2E90}'

# 設定防火牆原則(依序執行)
Set-NetFirewallHyperVVMSetting -Name $wslGuid -Enabled True
Set-NetFirewallHyperVVMSetting -Name $wslGuid -DefaultInboundAction Allow
Set-NetFirewallHyperVVMSetting -Name $wslGuid -DefaultOutboundAction Allow
Set-NetFirewallHyperVVMSetting -Name $wslGuid -LoopbackEnabled True
Set-NetFirewallHyperVVMSetting -Name $wslGuid -AllowHostPolicyMerge True

# 驗證設定結果
Get-NetFirewallHyperVVMSetting -Name $wslGuid

3. 連接埠對應驗證

# 範例:檢查 80 連接埠佔用情況
Get-NetTCPConnection -LocalPort 80

常見問題處理

問題 1:無法建立外部連線

  • 檢查步驟:Get-NetFirewallHyperVVMSetting 輸出中的所有欄位應為 True/Allow
  • 解決方案:依序重新執行防火牆原則設定

問題 2:連接埠衝突

  • 驗證方法:使用 netstat -ano 檢視連接埠佔用
  • 處理建議:優先釋放 Windows 端佔用連接埠,或修改 WSL 服務監聽連接埠

驗證方法

  1. 啟動 WSL 服務(如 Nginx/Apache)
  2. 從 Windows 主機存取 http://localhost:<port>
  3. 從區域網路裝置存取 http://<host-ip>:<port>

參考資料

  1. WSL 官方網路文件
  2. WSL 2.6.0 發行說明