在 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。