本地设备无法连接AWS EC2(Ubuntu)实例上运行的TCP服务器问题求助
排查解决思路
- 检查EC2实例系统内部防火墙配置
Ubuntu默认启用ufw防火墙,该规则优先级高于AWS安全组,执行sudo ufw status查看运行状态:
如果返回状态为active,执行sudo ufw allow 50007/tcp放行对应端口,临时测试也可执行sudo ufw disable关闭防火墙验证。 - 确认服务监听地址正确
在EC2实例上执行ss -tulpn | grep 50007,检查返回的监听地址是否为0.0.0.0:50007或:::50007,确认服务没有仅绑定本地回环地址。 - 核实实例网络属性
确认EC2实例部署在公有子网,已分配公网IP/弹性公网IP,你客户端使用的IP地址和EC2实例上执行curl ifconfig.me返回的公网IP一致。 - 检查VPC网络ACL配置
安全组是实例级有状态规则,网络ACL是子网级无状态规则:
确认实例所属子网关联的ACL入站规则放行了50007端口的TCP请求,出站规则放行了1024-65535范围的临时端口响应。默认VPC的ACL默认全量放行,如果你手动修改过规则需要单独配置。 - 排除端口被运营商拦截问题
部分地区ISP会封禁非常规端口的外来请求,你可以将服务端口改为8080、8000这类常用测试端口,重新配置安全组和ufw规则后再测试连通性,测试时使用nc -zv 实例公网IP 端口命令验证TCP连通性,不要用ping(ping是ICMP协议,和TCP端口连通性无关)。
内容的提问来源于stack exchange,提问作者P i
相关产品推荐
相关产品推荐

