無法從外部瀏覽器訪問WSL2 Localhost

無法從使用同一個wifi網路(LAN)的外部瀏覽器(ex:行動裝置)開啟本地WSL2虛擬機器執行的node.js伺服網頁 localhost:3000網頁僅能在本地(電腦)瀏覽器瀏覽,無法在其他裝置(例如手機、平板)的瀏覽器瀏覽。 例如: 在連上同一網路的手機開啟 http://172.17.10.206:3000 無法顯示網頁。 且每次重啟WSL的IP都不同。 具體原因在於WSL2會針對其虛擬網路使用網路位址轉譯 (NAT) 服務,其網路位址是動態變化的,每次重啟都會變更IP。 網路運作模式也是WSL(WSL 1)和WSL2的不同之一,使用WSL就沒有這樣的問題,參考: 使用 WSL 1 而非 WSL 2 的例外狀況 。 大致上有幾種思路作為解決方式: A. 從WSL2"降級"至WSL。 B. 使用netsh進行Windows端口轉發。為避免每次電腦重啟後失效,需在工作排程器加入規則腳本,參考: https://github.com/microsoft/WSL/issues/4150#issuecomment-504209723 C. 橋接模式(Bridge Mode)。 最後我選擇相較之下單純穩定的Native Bridge Solution,將網卡修改為橋接模式,參考網友的方法: https://github.com/microsoft/WSL/issues/4150#issuecomment-1135474390 前置作業 從 Windows 應用商店安裝 WSL 的預覽版( preview version of WSL) 在 Windows 中確認開啟 WSL和 Hyper-V、Hypervisor 路徑:應用程式->選用功能->更多Windows功能->開啟或關閉Windows功能 以PowerShell關閉正在執行中的WSL 指令: wsl --shutdown 接下來要創建橋接 Hyper-V 的適配器(bridged Hyper-V adapter) 步驟 1.啟用橋接網絡。 記得先關閉正在執行中的WSL。 搜尋並開啟Hyper-V管理員,選中本機(MSI),動作 -> 虛擬交換機管理員,新增一個名為"Bridge"的虛擬交換機,連...