在 WSL 2 中,默認使用 NAT 網絡模式,這會導致 WSL 實例和宿主機所在的局域網無法直接互通。要讓 WSL 2 和宿主機所在的局域網互通,可以通過以下步驟配置 wsl.conf
并結合宿主機網絡設置,啟用 WSL 2 的橋接模式:
-
修改
wsl.conf
啟用橋接模式
在 WSL 2 的發行版中創建或編輯/etc/wsl.conf
,添加以下內容:[network] generateResolvConf=false # 禁止自動生成 resolv.conf(可選) hostname=mywsl2 # 自定義主機名(可選) generateHosts=true # 允許生成 hosts 文件(可選)
-
在 Windows 宿主機上配置 Hyper-V 虛擬交換機
-
打開
PowerShell(管理員)
,運行以下命令,查詢正在使用的網卡:Get-NetAdapter
在網卡列表中確認需要橋接的網卡,比如”以太網“。
-
打開
PowerShell(管理員)
,運行以下命令創建外部虛擬交換機:New-VMSwitch -Name "WSLBridge" -NetAdapterName "以太網" -AllowManagementOS $true
-NetAdapterName "以太網"
中的“以太網”替換為你要橋接的網卡的名稱(通過上一步的Get-NetAdapter
查看)。
-
如果提示已存在交換機,可以先刪除舊的(自行判斷):
Remove-VMSwitch "WSLBridge" -Force
-
-
修改 WSL 2 的默認虛擬交換機
-
創建或編輯
%USERPROFILE%\.wslconfig
文件,指定使用橋接交換機:[wsl2] networkingMode=bridged vmSwitch=WSLBridge
-
-
重啟 WSL
-
在 PowerShell 中運行:
wsl --shutdown # 這一步很重要,不shutdown重啟可能會不生效 wsl -d <發行版名稱> # 重新啟動
-
-
驗證網絡互通
- 在 WSL 2 中運行
ifconfig
或ip a
,確認 IP 地址和宿主機在同一局域網段。 - 從局域網其他設備可以直接訪問 WSL 2 的服務(如 SSH、Web 服務)。
- 在 WSL 2 中運行
至此,實現了wsl2實例與宿主機處于同一網段,且可以被局域網中其他設備訪問。如果后面再出現無法訪問的情況,可以嘗試重啟WSL。