测试环境:
Windows 11 Pro 22H2(稳定版)
wsl2 ubuntu2204
- 以管理员身份打开PowerShell,检查系统信息
systeminfo
确认系统信息为 Microsoft Windows 11 专业版
已开启Hyper-V
停止正在运行的wsl
wsl --shutdown
- 执行
DISM /Online /Enable-Feature /All /FeatureName:Microsoft-Hyper-V /all
可能需要重启
- 创建虚拟网络交换器
- 运行Hype-V管理器
- 在右侧选择虚拟交换机管理器
- 在管理器中选择“新建虚拟机交换机”
- 在右侧选择“外部”
- 然后点击“创建虚拟交换机”
- 在名称下输入唯一的名称,例如“WSL_external”
- 连接类型下,选择“外部网络”,选择连接到网络的网络适配器
- 确定
- 新增wsl配置文件
在powershell(以管理员方式运行)中,输入
cd ~
New-Item .wslconfig
.\.wslconfig
- 选择您选择的文本编辑器打开文件
- 如果您忘记了虚拟交换机的名称,请在 PowerShell 中运行:
Get-VMSwitch -SwitchType External | Select Name, SwitchType, NetAdapterInterfaceDescription, AllowManagementOS
例如:
Get-VMSwitch -SwitchType External | Select Name, SwitchType, NetAdapterInterfaceDescription, AllowManagementOS
Name SwitchType NetAdapterInterfaceDescription AllowManagementOS
---- ---------- ------------------------------ -----------------
WSL_external External Intel(R) Wireless-AC 9560 160MHz True
.wslconfig中添加文本
[wsl2]
networkingMode=bridged
vmSwitch=WSL_external
vmSwitch=
行定义了从 Hyper-V 到外部虚拟交换机的连接,需要设置为与我们在 Virtusl 交换机管理器中设置的虚拟(外部)交换机的名称完全相同(参见上面的输出Get-VMSwitch
)
- 保存并关闭文件
- 之后再启动wsl,wsl的ip将不再变化。
参考链接:https://github.com/luxzg/WSL2-fixes/blob/342ce94b16ea68a03fef56f0da1bab288340f4e1/networkingMode%3Dbridged.md#install-hyper-v-features-and-tools