AWS EC2 Windows实例端点暴露问题:已配置安全组仍无法外部访问
可能的问题及排查步骤
安全组规则验证
确认绑定到EC2实例的launch-wizard-1安全组入站规则:- 协议为TCP,端口范围是
5000 - 源地址设置为
0.0.0.0/0(允许所有公网IP访问)或者你的本地公网IP - 务必确认该安全组已关联到目标EC2实例,避免修改了错误的安全组
- 协议为TCP,端口范围是
Windows本地防火墙限制
Windows默认防火墙会拦截外部端口访问,需添加入站规则:- 打开Windows Defender防火墙 -> 高级设置
- 新建入站规则,选择端口,指定TCP 5000端口
- 允许连接,应用到所有网络类型
也可以暂时关闭防火墙测试(测试完成后立即开启),验证是否是防火墙导致的问题
C#应用绑定地址检查
虽然你声明应用绑定0.0.0.0:5000,但实际可能配置错误。在EC2实例中执行命令:netstat -ano | findstr :5000如果结果显示监听地址是
127.0.0.1:5000,说明应用仅绑定本地回环地址,需修改应用配置:- 在Program.cs中添加
builder.WebHost.UseUrls("http://0.0.0.0:5000") - 或在appsettings.json中设置
"Urls": "http://0.0.0.0:5000"
- 在Program.cs中添加
VPC网络ACL检查
检查EC2实例所在子网的网络ACL:- 入站规则允许TCP 5000端口的流量(源
0.0.0.0/0) - 出站规则允许TCP 1024-65535端口的响应流量(目标
0.0.0.0/0)
网络ACL是无状态的,入站和出站规则必须同时配置正确
- 入站规则允许TCP 5000端口的流量(源
公网访问权限验证
- 确认EC2实例的公网IP未变更(普通公网IP会在实例重启后改变,建议使用弹性IP固定)
- 检查实例所在子网的路由表是否包含指向Internet网关(IGW)的路由条目,确保实例处于公有子网
应用运行状态确认
在EC2实例内部重新访问http://127.0.0.1:5000/do-something,确认应用正常响应。同时通过netstat获取的PID,执行tasklist | findstr <PID>验证应用进程是否持续运行
内容的提问来源于stack exchange,提问作者user680891
相关产品推荐
相关产品推荐

