You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Windows 11下如何从局域网设备访问WSL2中的Node.js应用?

解决Win11 WSL2下局域网设备无法访问应用的问题

核心原因

WSL2默认采用NAT网络架构,与Windows主机处于不同网段,导致局域网设备通过Windows本地IP发起的请求无法穿透到WSL2内部的服务——这就是你本地能正常访问、但其他设备连不上的关键原因。

解决方案

1. 先确保应用监听所有网卡(必做)

绝大多数开发服务器默认仅绑定localhost(127.0.0.1),仅允许本地访问。你需要修改应用的启动配置,让它监听0.0.0.0:

  • Node.js/React/Vue项目:在启动命令后追加--host 0.0.0.0,比如npm start -- --host 0.0.0.0,或在框架配置文件中设置host: '0.0.0.0'
  • 其他语言服务:调整服务绑定地址为0.0.0.0,而非仅127.0.0.1

2. 配置Windows到WSL2的端口转发

打开管理员权限的PowerShell,执行以下操作:

  • 获取WSL2的内部IP:
    wsl hostname -I
    
    取输出的第一个IP(类似172.17.0.2)
  • 添加端口转发规则,将Windows的3000端口映射到WSL2的3000端口:
    netsh interface portproxy add v4tov4 listenport=3000 listenaddress=0.0.0.0 connectport=3000 connectaddress=刚才获取的WSL2IP
    
  • 允许该端口通过防火墙:
    netsh advfirewall firewall add rule name="WSL2 PWA测试端口" dir=in action=allow protocol=TCP localport=3000
    

3. 可选:切换到网桥模式(更稳定的长期方案)

Win11支持WSL2使用网桥网络,让WSL2直接获取局域网IP,无需端口转发:

  • 新建或编辑C:\Users\你的用户名\.wslconfig文件,添加以下内容:
    [wsl2]
    networkMode=bridged
    adapterName=你的网卡名称(比如"以太网"或"Wi-Fi",可在Windows设置-网络和Internet中查看)
    
  • 重启WSL生效:
    wsl --shutdown
    
  • 重启后在WSL终端执行ip addr,找到局域网IP(类似192.168.2.xxx),局域网设备直接访问这个IP:3000即可

验证

  1. 启动应用,确认服务已监听0.0.0.0:3000
  2. 在手机/其他设备上访问对应IP和端口,测试连接

内容的提问来源于stack exchange,提问作者Patrick C

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.28 17:12:51