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

WSL2上Node.js服务无法通过局域网供手机访问的问题求助

问题:WSL2中运行的Node.js服务无法通过局域网供手机访问

我已完成以下常规配置,但仍无法实现手机通过局域网访问WSL2内的Express服务:

  • Express服务已绑定0.0.0.0:
server.listen(PORT, '0.0.0.0', ()=> {
    console.log(`⚡️ listening on ${PORT}`);
})
  • 按教程执行了:
    • 为3001端口创建Windows防火墙例外
    • 管理员PowerShell中配置端口代理:netsh interface portproxy add v4tov4 listenport=3001 listenaddress=0.0.0.0 connectport=3001 connectaddress=(wsl hostname -I)
    • 手机连接同一WiFi,尝试访问Windows IPv4地址:3001、localhost:3001等均超时
  • 当前异常现象:
    • 仅本地电脑通过localhost可访问服务
    • 本地电脑用0.0.0.0:3001或127.0.0.1:3001也无法访问

排查与修复步骤

1. 确认WSL2的真实IP地址

wsl hostname -I可能返回多网卡IP,需手动确认:

  • 在WSL2终端执行ip addr show eth0,提取inet字段后的IP(通常为172.x.x.x格式)
  • 用该IP重新配置端口代理:
netsh interface portproxy add v4tov4 listenport=3001 listenaddress=0.0.0.0 connectport=3001 connectaddress=172.xx.xx.xx
  • 执行netsh interface portproxy show all验证规则是否正确添加

2. 严格检查Windows防火墙规则

  • 确保入站规则允许所有远程IP访问TCP 3001端口,而非仅本地
  • 同时检查出站规则,为3001端口添加例外
  • 可临时关闭Windows Defender防火墙测试,确认是否为防火墙阻断(测试后务必重启)

3. 验证WSL2内部的服务可用性

  • 在WSL2终端执行curl 172.xx.xx.xx:3001(替换为实际WSL IP),确认服务能正常响应
  • 若此步骤失败,检查Express的PORT变量是否正确设置为3001

4. 排查网络环境冲突

  • 确认电脑与手机处于同一网段(如电脑IP为192.168.1.100,手机应为192.168.1.x)
  • 若电脑同时连接有线与WiFi,确保端口代理监听WiFi网卡IP,或直接用0.0.0.0监听所有网卡
  • 关闭VPN、代理软件,这类工具可能篡改路由规则

5. 重置端口代理规则

若旧规则存在冲突,清空后重新配置:

netsh interface portproxy reset
netsh interface portproxy add v4tov4 listenport=3001 listenaddress=0.0.0.0 connectport=3001 connectaddress=172.xx.xx.xx

6. 跳过端口代理直接测试

尝试用手机访问WSL2的IP:3001,若能访问则说明端口代理配置有误。注意:WSL2 IP重启后可能变化,需重新获取配置。


内容的提问来源于stack exchange,提问作者Null Salad

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.03 02:12:43