WSL 2 配置桥接网络。桥接网络需要指定一个 Hyper-V 虚拟交换机,以便 WSL 2 虚拟机可以直接连接到物理网络。
以下是解决这个问题的步骤:
1. 检查 Hyper-V 虚拟交换机
首先,确保你已经创建了一个外部虚拟交换机(External Virtual Switch),并将其用于 WSL 2。
步骤:
- 打开 PowerShell(以管理员身份运行)。
- 运行以下命令查看现有的虚拟交换机:
Get-VMSwitch
- 如果外部虚拟交换机不存在,可以使用以下命令创建一个:
New-VMSwitch -Name "WSLBridge" -NetAdapterName "以太网" -AllowManagementOS $true
WSLBridge
是虚拟交换机的名称,可以根据需要修改。注意!!!:以太网
是物理网络适配器的名称,确保替换为实际的适配器名称(可以通过Get-NetAdapter
查看)。
2. 配置 WSL 2 使用桥接网络
在 .wslconfig
文件中指定 wsl2.vmSwitch
参数,以使用刚刚创建的虚拟交换机。
步骤:
- 打开
.wslconfig
文件(如果不存在,请在用户目录下创建:C:\Users\<你的用户名>\.wslconfig
)。 - 添加以下内容:
[wsl2] networkingMode=bridged vmSwitch=WSLBridge
WSLBridge
是虚拟交换机的名称,确保与之前创建的虚拟交换机名称一致。
- 保存文件。
3. 重启 WSL 2
应用配置后,需要重启 WSL 2 以使更改生效。
步骤:
- 打开 PowerShell 或命令提示符。
- 运行以下命令关闭 WSL 2:
wsl --shutdown
- 重新启动 WSL 2(wsl --list 查看安装的虚拟机):
wsl -d Ubuntu-24.04
4. 验证桥接网络
确认桥接网络是否配置成功。
步骤:
- 在 WSL 2 中运行以下命令检查 IP 地址:
ip addr show eth0
- 确保 IP 地址与物理网络在同一子网中。
5. 常见问题排查
- 虚拟交换机未正确创建:确保虚拟交换机的类型为“外部”,并且绑定了正确的物理网络适配器。
- 权限问题:确保以管理员身份运行 PowerShell。
- Hyper-V 服务未启用:检查 Hyper-V 功能是否已启用,并确保相关服务正在运行(如
Hyper-V 虚拟机管理
)。
6. 回退到默认网络模式
如果桥接网络配置失败,WSL 2 会回退到 networkingMode=None
。此时,WSL 2 将无法访问外部网络。如果需要恢复默认的 NAT 网络模式,可以删除 .wslconfig
中的 networkingMode
和 vmSwitch
配置,然后重启 WSL 2。
通过以上步骤,你应该能够成功为 WSL 2 配置桥接网络。如果问题仍然存在,请检查系统日志(如 Event Viewer
)以获取更多错误信息,或者尝试更新 WSL 2 和 Hyper-V 的驱动程序。