WSL 的 IP 地址(172.30.x.x)是虚拟网络 IP,局域网内其他设备无法直接访问。需要通过 Windows 宿主机的 IP 访问。
在 Windows PowerShell(管理员权限)中运行:
ipconfig找到 "无线局域网适配器 WLAN" 或 "以太网适配器" 的 IPv4 地址,例如:192.168.1.100
在 Windows PowerShell(管理员权限) 中运行:
# 添加端口转发规则
netsh interface portproxy add v4tov4 listenport=3000 listenaddress=0.0.0.0 connectport=3000 connectaddress=172.30.108.211
# 查看转发规则
netsh interface portproxy show all
# 允许防火墙端口(如果需要)
New-NetFirewallRule -DisplayName "WSL Dev Server" -Direction Inbound -LocalPort 3000 -Protocol TCP -Action Allow- 本机访问:
http://localhost:3000 - 局域网访问:
http://192.168.1.100:3000(使用您的 Windows IP)
netsh interface portproxy delete v4tov4 listenport=3000 listenaddress=0.0.0.0在 Windows 用户目录(C:\Users\YourUsername\)创建 .wslconfig 文件:
[wsl2]
networkingMode=mirrored
dnsTunneling=true
firewall=true
autoProxy=true在 Windows PowerShell 中运行:
wsl --shutdown然后重新启动 WSL
镜像模式下,WSL 和 Windows 共享网络接口,可以直接使用 Windows IP 访问
在 Windows PowerShell(管理员权限) 中运行:
netsh interface portproxy add v4tov4 listenport=3000 listenaddress=0.0.0.0 connectport=3000 connectaddress=$(wsl hostname -I | cut -d' ' -f1)- 打开 "Windows Defender 防火墙"
- 点击 "高级设置"
- 检查入站规则中是否有端口 3000 的规则
- 或者临时关闭防火墙测试
在 Windows PowerShell 中:
Get-NetTCPConnection -LocalPort 3000WSL IP 可能在重启后改变,需要重新配置端口转发:
# 在 WSL 中查看 IP
hostname -IWindows 访问 localhost:3000 会自动转发到 WSL,但局域网设备需要使用 Windows IP
最简单的方法:
- 在 Windows PowerShell(管理员)运行端口转发命令
- 获取 Windows IP 地址
- 在其他设备上使用
http://Windows-IP:3000访问
一劳永逸的方法:
- 如果您使用 Windows 11,启用镜像网络模式
- 如果是 Windows 10,创建启动脚本自动配置端口转发