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

VPN远程连接Node.js应用失败:ERR_CONNECTION_TIMED_OUT求助

VPN远程连接Node.js应用失败问题排查

已执行操作

  • Node.js应用配置监听所有接口,代码如下:
const express = require('express');
const app = express();
const port = 3000;

app.listen(port, '0.0.0.0', () => {
  console.log(`Server is running on http://0.0.0.0:${port}`);
});
  • Windows防火墙创建允许3000端口流量的规则
  • VPN连接正常,远程PC可ping通服务器

当前问题

  • 远程PC向服务器IP的3000端口发起TCP连接时,提示WARNING: TCP connect failed.
  • 浏览器访问时出现ERR_CONNECTION_TIMED_OUT错误

已确认信息

  • 远程PC可正常ping通服务器
  • Node.js应用日志无报错,Trend Micro杀毒软件未阻止3000端口流量
  • 服务器本地通过localhost和服务器IP均可正常访问应用,Postman请求成功

诊断与解决步骤

1. 验证端口实际监听状态

在服务器上执行以下命令,确认Node.js确实在监听所有接口的3000端口:

netstat -ano | findstr ":3000"

输出结果中应出现0.0.0.0:3000或[::]:3000,如果仅显示127.0.0.1:3000,说明应用实际未监听所有接口,需检查代码执行逻辑。

2. 检查Windows防火墙规则细节

  • 确认防火墙规则为双向允许(入站+出站),且明确覆盖TCP协议(若使用UDP需对应添加规则)
  • 检查规则是否应用到VPN对应的网络适配器(Windows防火墙规则可指定适用网络类型,需确保包含VPN网络)
  • 临时关闭Windows防火墙测试远程连接,排除规则配置疏漏

3. 排查VPN路由与子网配置

  • 确认远程PC的VPN子网与服务器所在子网无冲突
  • 在服务器执行route print,查看是否存在针对VPN子网的路由限制,导致3000端口流量无法转发
  • 检查VPN服务器端配置,是否有端口转发或ACL规则阻断3000端口流量

4. 测试端口连通性

在服务器用PowerShell测试自身3000端口连通性:

Test-NetConnection -ComputerName 服务器VPN分配的IP -Port 3000

远程PC执行同样命令确认连通状态,同时用tracert追踪数据包路径,定位阻断环节:

tracert -d 服务器IP

5. 检查Node.js应用环境

  • 确认Node.js进程无系统权限限制,可监听非本地接口
  • 排查是否存在环境配置强制绑定特定适配器(即使代码指定0.0.0.0)
  • 尝试更换端口(如3001),重新配置防火墙后测试,排除端口被隐性占用或限制的可能

6. 复查第三方安全软件

尽管已确认Trend Micro规则,仍需检查:

  • 杀毒软件的**入侵防御系统(IPS)**是否拦截VPN到3000端口的流量
  • 服务器是否存在其他安全工具(如HIDS),有无未注意到的拦截规则

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.02 00:50:06