EC2实例Node服务监听3004端口报EADDRNOTAVAIL及访问超时问题求助
问题原因与解决方案
1. 监听公网IP报错EADDRNOTAVAIL的原因
EC2实例的公网IP是AWS网络层分配/绑定的,不会直接写入实例操作系统的网卡配置,所以你不能直接在服务中监听公网IP,监听0.0.0.0是正确配置,代表监听实例所有网卡的请求。
2. 3004端口访问超时的排查解决步骤
- 优先检查EC2实例关联的安全组入站规则,这是最常见的故障原因:
你的3000端口可正常访问,说明安全组仅开放了3000端口的访问权限,你需要在安全组入站规则中新增一条规则:允许TCP协议的3004端口,源地址可先设置为0.0.0.0/0(测试可用后可根据需求收紧访问范围)。 - 确认VPC网络ACL配置:
如果你修改过默认的网络ACL规则,需要检查入站、出站规则是否允许3004端口的TCP流量通过,默认VPC的网络ACL是全量放行所有流量,未修改过可跳过本步。 - 验证服务本身运行正常:
在EC2实例内部执行curl http://127.0.0.1:3004,如果能正常返回Hello World,说明服务监听配置没有问题,故障确实出在外部网络放行规则。 - 确认ufw规则生效:
执行ufw status查看输出中是否存在3004端口的ALLOW规则,确认规则没有误配置为UDP协议。 - 确认端口监听状态正常:
执行netstat -tulpn | grep 3004,确认Node进程确实在监听0.0.0.0:3004上。
按照上述步骤排查后,绝大多数情况是安全组未放行问题,配置安全组规则后即可正常访问。
内容的提问来源于stack exchange,提问作者Nish animal69
相关产品推荐
相关产品推荐

