一、文档概述
1. 适用环境
- 宿主系统:Windows 10 专业版 / 企业版、Windows 11 全版本
- WSL 版本:WSL 2
- 虚拟机系统:Ubuntu 26.04
2. 实现目标
默认 WSL2 使用 NAT 网络,局域网其他设备无法直接访问 Ubuntu。本文通过 Hyper-V 外置虚拟交换机 + WSL 桥接模式 + netplan 静态 IP 配置,让 WSL 虚拟机获取局域网同网段独立 IP,实现内网所有设备直接连通、访问 WSL 服务。
3. 前置约束说明
家庭版 Windows 无 Hyper-V 功能,无法使用本方案;仅专业版 / 企业版支持 Hyper-V 虚拟化组件。
二、Windows 宿主环境前置配置
步骤 1:安装 / 升级 WSL 到 WSL2
powershell
# 一键安装wsl
wsl –install
# 设置默认版本为WSL2
wsl –set-default-version 2
# 查看已安装发行版与wsl版本
wsl –list –verbose
powershell
wsl –set Ubuntu-26.04 2
步骤 2:开启系统 Hyper-V 虚拟化组件
- Hyper-V(完整目录全部子项勾选)
- 虚拟机平台
步骤 3:Hyper-V 创建外部虚拟交换机(桥接核心)
- 交换机类型:外部
- 交换机名称:自定义(示例:wsl-bridge,后文配置需严格同名)
- 外部网络:选择当前正在使用的有线 / 无线物理网卡(插网线选有线网卡)
- 勾选「允许管理操作系统共享此网络适配器」,点击应用创建。
关键注意:交换机名称大小写、字符必须和.wslconfig内vmSwitch参数完全一致,名称不一致会触发VmSwitch找不到网络报错。
步骤 4:配置 WSL 全局配置文件 .wslconfig
ini
[wsl2]
# 开启桥接网络模式
networkingMode=bridged
# Hyper-V外部交换机名称,和上面创建名称严格匹配
vmSwitch=wsl-bridge
# 关闭自动DHCP,使用虚拟机内静态IP
dhcp=false
三、Ubuntu 26.04 虚拟机内部网络配置
步骤 1:开启 WSL systemd、锁定 DNS 不被自动覆盖
编辑 WSL 虚拟机配置文件 /etc/wsl.conf
bash
运行
sudo nano /etc/wsl.conf
完整配置内容:
ini
[boot]
# 启用systemd,netplan、systemd-networkd依赖该功能
systemd=true
[user]
# 设置默认登录用户名
default=你的WSL用户名
[network]
# 禁止WSL宿主自动覆盖/etc/resolv.conf,防止DNS配置丢失
generateResolvConf=false
快捷键 Ctrl+O 保存、Ctrl+X 退出编辑器。
步骤 2:Netplan 配置静态桥接 IP
bash
运行
sudo nano /etc/netplan/01-wslbridge.yaml
yaml
network:
version: 2
renderer: networkd
ethernets:
eth0:
dhcp4: no
# 静态IP/子网掩码,替换为你的局域网网段地址
addresses: [192.168.0.222/24]
# DNS解析服务器
nameservers:
addresses: [114.114.114.114,202.98.192.67]
# 默认网关(路由器内网地址)
routes:
– to: default
via: 192.168.0.1
metric: 100
mtu: 1500
optional: true
参数说明:
- addresses:自定义局域网空闲静态 IP,避免和其他设备 IP 冲突
- via:填写路由器网关地址,决定外网访问路由
- renderer: networkd:桥接模式配套网络渲染器,不可改为 NetworkManager
- optional: true:开机不存在网卡时不会阻塞系统启动
bash
运行
sudo chown root:root /etc/netplan/01-wslbridge.yaml
sudo chmod 600 /etc/netplan/01-wslbridge.yaml
bash
运行
# 校验yaml语法
sudo netplan generate
# 生效静态网络配置
sudo netplan apply
四、完整重启生效流程(必须操作)
所有 Windows 与虚拟机配置修改完成后,必须彻底关闭 WSL 再重新进入,配置才能全部加载:
powershell
wsl –shutdown
powershell
wsl
五、连通性验证方案
进入 Ubuntu 虚拟机内依次执行测试命令,分层定位网络故障:
bash
运行
ip a
bash
运行
ping 192.168.0.1
bash
运行
ping 114.114.114.114
bash
运行
ping www.baidu.com
六、常见报错与解决方案
报错 1:wsl: 找不到 VmSwitch xxx WSL_E_VMSWITCH_NOT_FOUND
原因:.wslconfig 中vmSwitch交换机名称与 Hyper-V 交换机名称大小写 / 字符不一致。 解决:核对交换机名称,完全匹配后执行wsl –shutdown重启 WSL。
报错 2:netplan 警告 Permissions for xxx.yaml are too open
原因:yaml 文件权限对外开放,不符合 netplan 安全规范。 解决:执行权限修正命令 sudo chmod 600 /etc/netplan/01-wslbridge.yaml。
报错 3:ping 域名提示 Temporary failure in name resolution
原因:WSL 自动覆盖/etc/resolv.conf,DNS 丢失。 解决:确认/etc/wsl.conf已添加generateResolvConf=false,重启 WSL。
报错 4:systemd-networkd is not running
原因:未开启systemd=true,netplan 依赖的网络服务未启动。 解决:修改wsl.conf开启 systemd,完全重启 WSL。
七、补充关键注意事项
八、文档信息
- 适配系统:Win10 专业版 / 企业版、Win11、WSL2、Ubuntu 26.04
- 实现效果:WSL 虚拟机分配局域网独立静态 IP,内网任意设备直连访问
- 核心技术栈:Hyper-V 外部虚拟交换机 + WSL2 桥接模式 + Netplan 静态网络 + systemd




