安全组已经放行了,端口为什么还是不通?一层层往下查

举报
yd_228326260 发表于 2026/10/25 10:22:10 2026/10/25
【摘要】 安全组已经放行了,端口为什么还是不通?一层层往下查这是云服务器最常见的“明明放行了却不通”场景:控制台里安全组规则加了,浏览器 / 客户端一连还是超时。问题在于,从公网到应用之间不止安全组这一道关卡——服务没监听、本机防火墙、绑错了安全组、没绑弹性公网 IP,任何一环断了,结果看起来都一样:超时。下面按从内到外的顺序排查,每一步都有一个可验证的结论,不要跳步,也不要同时改好几处。 一、先确...

安全组已经放行了,端口为什么还是不通?一层层往下查

这是云服务器最常见的“明明放行了却不通”场景:控制台里安全组规则加了,浏览器 / 客户端一连还是超时。问题在于,从公网到应用之间不止安全组这一道关卡——服务没监听、本机防火墙、绑错了安全组、没绑弹性公网 IP,任何一环断了,结果看起来都一样:超时。

下面按从内到外的顺序排查,每一步都有一个可验证的结论,不要跳步,也不要同时改好几处。

一、先确认服务自己在监听

先登录服务器,在本机验证服务是不是真的起来了、监听在哪个地址上:

ss -tlnp | grep -E ':(80|443|8080|3306)\b'
curl -v http://127.0.0.1:8080/   # 把端口换成你自己的
systemctl status <服务名> --no-pager
  • ss 里根本没有这个端口:服务没启动、启动失败、或者配置文件里的端口不是你以为的那个——先修服务本身,安全组再对也救不了。
  • ss 显示 127.0.0.1:8080 而不是 0.0.0.0:8080:服务只监听了回环地址,本机能通、外面永远不通。改服务配置里的监听地址为 0.0.0.0 再重启服务。
  • 本机 curl 通了:服务层没问题,往外一层查。

二、再看本机防火墙:安全组之外还有一道墙

很多系统除了云上安全组,本机还开着 firewalld、iptables 或 ufw。云上放行了,本机墙没放行,照样不通:

firewall-cmd --state
firewall-cmd --list-all
iptables -L INPUT -n -v | head -n 30
ufw status verbose
  • 确认本机规则里有没有放行该端口;如果服务商镜像默认只开了 22 端口,80 / 443 / 自定义端口都要手动加。
  • 临时验证(不要长期裸奔):可以先在本机放行确认问题定位,再按最小权限收紧,只放行需要的端口和来源。

一个常见误判:关掉本机防火墙后通了,就以为是安全组问题——其实是两道墙里只修了一道。定位时分开验证,结论才可靠。

三、重点:安全组规则是不是加对了地方

这是占比最高的一类原因,逐项核对:

  1. 方向:从公网访问要的是入方向规则,出方向放行帮不上忙。
  2. 协议和端口:TCP 还是 UDP、端口范围有没有写错(例如应用是 8080,规则写成了 80)。
  3. 来源:源地址填了某个内网地址或单个 IP,却从公网其他地址访问,自然被挡住。排查阶段可临时放宽来源确认,确认后再收紧到可信地址段。
  4. 优先级:同一安全组里如果有拒绝规则排在前面,允许规则可能根本轮不到。
  5. 绑错对象:规则加在了 A 安全组,实例实际挂的是 B 安全组;或者实例换了网卡,新网卡挂的安全组还是旧的。去实例详情里确认当前主网卡实际关联的安全组是哪一个。
  6. 生效时间:安全组规则保存后一般立即生效,不需要重启实例——如果改完立刻测试还是不通,先别反复重启,回到上面几项复核。

四、公网链路:有没有弹性公网 IP、端口映射对不对

服务和安全组都没问题,却从公网连不上时,查公网入口:

  • 实例有没有绑定弹性公网 IP(EIP):没有公网 IP 的实例,公网地址本身就不存在,安全组放行再多也没用。
  • 访问的是不是 EIP 地址,而不是内网 IP 或旧的已释放地址。
  • 如果前面还有负载均衡或 NAT:确认监听器 / 转发规则的端口映射(例如公网 443 转发到后端 8080),别拿后端端口直接去连公网端口。

五、分段验证:把“不通”定位到具体一跳

不要只用浏览器反复刷新,用分段测试缩小范围:

# 服务器本机
curl -v http://127.0.0.1:8080/
# 同 VPC 内另一台机器(绕开公网入口,验证安全组内网方向)
curl -v http://<内网IP>:8080/
# 公网
curl -v http://<弹性公网IP>:8080/
  • 本机通、内网不通:大概率是安全组或本机防火墙。
  • 内网通、公网不通:查 EIP 绑定、公网入口和安全组来源(是否只放行了内网段)。
  • 全部不通:回到第一步,服务本身可能就没起来。

配合看一眼服务日志和系统日志,确认请求到底有没有到达服务器:

journalctl -u <服务名> --since "30 minutes ago" --no-pager | tail -n 50
tail -n 100 /var/log/nginx/error.log   # 以实际服务日志为准

日志里完全没有新请求,说明流量在到达应用之前就被挡住了;日志里有 502 / 连接被拒绝,说明流量到了、后端环节有问题——这是两条不同的排查线。

六、排查清单(收藏版)

  1. ss -tlnp:服务在监听吗?监听地址是 0.0.0.0 吗?
  2. 本机 curl:服务本身通吗?
  3. 本机防火墙:firewalld / iptables / ufw 放行了吗?
  4. 安全组:入方向、协议、端口、来源、优先级、绑对实例了吗?
  5. EIP:绑定了吗?访问地址对吗?
  6. 分段验证:本机 → 内网 → 公网,断点在哪一跳?

按这个顺序走,大多数“安全组放行了还是不通”都能在半小时内定位到具体一层,而不是在控制台里反复开关同一条规则。

【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0)

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。