必须配置hyper-v外部虚拟交换机并启用.wslconfig桥接模式,使wsl2获得与宿主机同网段的局域网ip(如192.168.1.x),从而被手机等设备直接访问;需确保cpu虚拟化、hyper-v及windows 10 2004+系统版本均满足要求。

要在局域网中其他设备(比如手机、另一台电脑)直接通过 IP 访问 Windows 10 上运行的 WSL2 子系统服务(如 Nginx、SSH、Python Flask),必须让 WSL2 获取与宿主机同网段的局域网 IP,而非默认的 NAT 内网地址(如 172.x.x.x)。这需要绕过 WSL2 默认的虚拟交换机,改用 Hyper-V 外部虚拟交换机实现桥接。
确认硬件与系统前提
执行 systeminfo | findstr /i "Hyper-V Requirements",确保输出中包含“已启用”和“已支持”字样;若显示“未启用”,需进入 BIOS 开启 Intel VT-x 或 AMD-V,并在 Windows 中启用 Hyper-V 功能。WSL2 桥接依赖 Hyper-V 虚拟化底层,【关闭 Hyper-V 或未开启 CPU 虚拟化将导致后续所有步骤失败】。
运行 winver 确认系统版本不低于 Windows 10 2004(内部版本 19041),否则无法加载 WSL2 内核——低版本即使强行配置桥接,也无法启动发行版。
创建 Hyper-V 外部虚拟交换机
以管理员身份打开 PowerShell,运行 Get-NetAdapter,记下你当前联网所用的物理网卡名称(例如“WLAN”或“以太网”)。
执行命令创建外部交换机:New-VMSwitch -Name "WSLBridge" -NetAdapterName "以太网" -AllowManagementOS $true,注意把“以太网”替换成上一步查到的实际网卡名;如果提示“交换机已存在”,先运行 Remove-VMSwitch "WSLBridge" -Force 清除旧配置。
该交换机将把 WSL2 实例直接接入物理网络,使子系统获得与宿主机同一网段的真实 IP(如宿主机是 192.168.1.100,WSL2 就可能拿到 192.168.1.105),这是局域网直连访问的基础。
配置 WSL2 使用桥接模式
在 Windows 用户目录下(%USERPROFILE%,即 C:\Users\你的用户名)新建或编辑文件 .wslconfig,写入以下内容:
[wsl2]<br>networkingMode=bridged<br>vmSwitch=WSLBridge
⚠️ 注意:不要添加任何空行、注释或多余空格;【networkingMode=bridged 必须小写,且不能拼错,否则 WSL2 启动时会静默忽略该配置】。
保存后,在 PowerShell 中依次执行:wsl --shutdown → wsl -d Ubuntu(将 Ubuntu 替换为你的发行版名),强制重启子系统以加载新网络模式。
验证并获取局域网可访问 IP
在 WSL2 终端中运行 ip a,查找 eth0 接口下的 inet 地址,确认其前缀与宿主机 IP 一致(如都是 192.168.1.x);若仍显示 172.x.x.x,则说明桥接未生效,需检查 .wslconfig 文件路径是否正确、vmSwitch 名称是否完全匹配、是否执行了 wsl --shutdown。
从局域网内另一台设备(如手机浏览器)直接访问 http://[WSL2的IP]:80,若能打开 Nginx 欢迎页或自定义服务,即表示桥接成功。











