安全组已经放行了,端口为什么还是不通?一层层往下查
【摘要】 安全组已经放行了,端口为什么还是不通?一层层往下查这是云服务器最常见的“明明放行了却不通”场景:控制台里安全组规则加了,浏览器 / 客户端一连还是超时。问题在于,从公网到应用之间不止安全组这一道关卡——服务没监听、本机防火墙、绑错了安全组、没绑弹性公网 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 / 自定义端口都要手动加。
- 临时验证(不要长期裸奔):可以先在本机放行确认问题定位,再按最小权限收紧,只放行需要的端口和来源。
一个常见误判:关掉本机防火墙后通了,就以为是安全组问题——其实是两道墙里只修了一道。定位时分开验证,结论才可靠。
三、重点:安全组规则是不是加对了地方
这是占比最高的一类原因,逐项核对:
- 方向:从公网访问要的是入方向规则,出方向放行帮不上忙。
- 协议和端口:TCP 还是 UDP、端口范围有没有写错(例如应用是 8080,规则写成了 80)。
- 来源:源地址填了某个内网地址或单个 IP,却从公网其他地址访问,自然被挡住。排查阶段可临时放宽来源确认,确认后再收紧到可信地址段。
- 优先级:同一安全组里如果有拒绝规则排在前面,允许规则可能根本轮不到。
- 绑错对象:规则加在了 A 安全组,实例实际挂的是 B 安全组;或者实例换了网卡,新网卡挂的安全组还是旧的。去实例详情里确认当前主网卡实际关联的安全组是哪一个。
- 生效时间:安全组规则保存后一般立即生效,不需要重启实例——如果改完立刻测试还是不通,先别反复重启,回到上面几项复核。
四、公网链路:有没有弹性公网 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 / 连接被拒绝,说明流量到了、后端环节有问题——这是两条不同的排查线。
六、排查清单(收藏版)
ss -tlnp:服务在监听吗?监听地址是0.0.0.0吗?- 本机
curl:服务本身通吗? - 本机防火墙:firewalld / iptables / ufw 放行了吗?
- 安全组:入方向、协议、端口、来源、优先级、绑对实例了吗?
- EIP:绑定了吗?访问地址对吗?
- 分段验证:本机 → 内网 → 公网,断点在哪一跳?
按这个顺序走,大多数“安全组放行了还是不通”都能在半小时内定位到具体一层,而不是在控制台里反复开关同一条规则。
【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)