
默认情况下,Node.js 服务仅绑定到 localhost,导致同一局域网内的其他设备无法访问;只需显式指定监听地址为 0.0.0.0 即可实现 LAN 可达。
默认情况下,node.js 服务仅绑定到 localhost,导致同一局域网内的其他设备无法访问;只需显式指定监听地址为 `0.0.0.0` 即可实现 lan 可达。
要使你的 Node.js 应用在局域网中被其他设备(如手机、笔记本、另一台 Ubuntu 或 Windows 电脑)访问,关键在于服务监听地址的配置,而非路由器或 ISP(如 AT&T)防火墙设置——局域网内部通信通常不受运营商级防火墙限制,真正起作用的是本机操作系统防火墙和 Node.js 的绑定地址。
✅ 正确绑定到所有网络接口
你当前的代码:
httpServer.listen(portNumber, function(){ console.log('listening on port:: ' + portNumber) })
默认等价于:
httpServer.listen(portNumber, '127.0.0.1', ...)
即仅监听回环地址(localhost),外部设备自然无法连接。
修复方式:显式指定 0.0.0.0 作为 host 参数:
const portNumber = 8080;
const host = '0.0.0.0'; // ← 关键修改:监听所有 IPv4 接口
httpServer.listen(portNumber, host, () => {
console.log(`✅ Server running on http://${getLocalIP()}:${portNumber}`);
console.log(`? Accessible from other LAN devices via http://<your-machine-ip>:${portNumber}`);
});</your-machine-ip>
? 提示:0.0.0.0 表示“监听本机所有 IPv4 网络接口”,包括有线网卡(如 192.168.1.x)、Wi-Fi(如 10.0.0.x)等。它不是一个真实 IP,而是一个通配符地址。
? 获取本机局域网 IP(供其他设备访问)
在终端运行以下命令,查出你的机器在局域网中的实际 IP:
hostname -I | awk '{print $1}'
# 或
ip -4 addr show | grep -oP '(?<p>假设输出为 192.168.1.23,那么其他设备只需在浏览器中输入 http://192.168.1.23:8080 即可访问。</p><h3>⚠️ 注意事项与常见排查</h3>
-
Ubuntu 防火墙(UFW)可能拦截端口:
若启用 UFW,请放行端口:sudo ufw allow 8080 sudo ufw status verbose # 确认规则生效
-
不要混淆 127.0.0.1 与 0.0.0.0:
127.0.0.1 仅限本机;0.0.0.0 才支持跨设备访问。某些框架(如 Express)若使用 app.listen(),同样需传入 host:app.listen(portNumber, '0.0.0.0', () => { ... }); 避免在生产环境裸奔 0.0.0.0:
开发阶段 LAN 调试安全可行;上线时建议配合反向代理(Nginx)、HTTPS 和身份验证,切勿直接暴露敏感服务到公网。AT&T 网关/路由器无需特殊配置:
局域网设备间通信走的是本地交换(二层),不经过 WAN 口或运营商防火墙。图中所示 AT&T 管理页仅控制外网入站规则,对 LAN 访问无影响。
完成以上修改后重启应用,即可从局域网任意设备稳定访问 —— 这是 Node.js 本地开发跨设备联调的标准实践。











