安全组已放行却连不上 ECS?先按这 4 步排查
【摘要】 安全组已放行却连不上 ECS,别急着关防火墙。按安全组规则、服务监听、实例防火墙、分段测试四步排查,十分钟定位故障点。
部署在 ECS 上的服务,控制台上安全组已经放行了端口,本地却还是连不上,很多人第一反应是“再放行一次”,或者直接关掉防火墙。其实连通性是一条链路,任何一环断了都会表现为“连不上”。按下面 4 步从外到内排查,通常十分钟就能定位。
1. 先确认安全组真的放对了
安全组规则改完一般立即生效,不用重启实例,但要核对三点:
- 方向是“入方向”,协议和端口与服务一致,例如 Web 服务是 TCP 8080,不要只放了 80;
- 源地址不要写错,测试时可以用自己的公网 IP 加 /32,确认通了再收紧,不要长期放 0.0.0.0/0;
- 实例确实绑定了这条安全组。如果一台实例绑定了多个安全组,要看全部规则的并集,而不是只看其中一个。
2. 再看服务有没有在监听
在实例内执行:
ss -tlnp | grep 8080
systemctl status nginx
如果 ss 没有输出,说明服务根本没在监听这个端口,问题不在网络,而在服务本身。常见原因是服务没启动、启动失败,或者只监听了 127.0.0.1。
只监听本地地址时,外部请求到不了服务。把监听地址改成 0.0.0.0 后重启服务,再用 ss -tlnp 确认。
3. 检查实例内的防火墙
云上放行了,实例内的 firewalld 或 iptables 还可能挡住:
sudo firewall-cmd --list-all
sudo firewall-cmd --add-port=8080/tcp --permanent
sudo firewall-cmd --reload
做这一步之前,先用 curl 127.0.0.1:8080 在本机测试。如果本机能通、外部不通,防火墙和安全组的嫌疑最大;如果本机也不通,先修服务,不要动网络规则。
不要为了省事直接关闭防火墙:关掉之后所有端口都暴露了,等于把安全组做的事又推倒了。
4. 最后用分段测试定性
- 本机:
curl 127.0.0.1:8080,验证服务本身; - 实例内对外:用 curl 访问任意公网地址,验证实例出方向网络;
- 本地:
curl -v 弹性公网IP:8080,验证入方向链路。
三段结果一对照,故障点就很清楚:本机不通是服务问题,本地不通但本机通是安全组或防火墙问题,实例出网也不通则要看路由和网络配置。
小结
遇到“安全组已放行却连不上”,记住顺序:安全组规则 → 服务监听 → 实例防火墙 → 分段测试。先定位再改配置,每改一步测一步,这样改动最小,也最容易回退。
【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)