记录一下那天晚上的排查过程。业务扩了十几个端口,安全组里加规则时控制台提示规则数量超出限制,可列表里看着才几十条,运维一时不知道删哪条。

刚开始盯着「规则里有大量历史遗留的单 IP 放行,没人清理」,折腾了半个多小时,排掉了。

把日志和配置对完,能解释这个现象的基本就这几处。每个安全组默认有入站和出站规则条数上限,按方向分别计算。还有一种是同一个安全组被多个实例复用,规则数早就接近配额。

还有一种情况,配额可以申请提升,但需要走工单审核。

先统计当前规则条数

curl -s 'http://100.100.100.200/latest/meta-data/security-groups'

再往下按端口和来源归并重复规则

ss -lntp | grep -vE '127.0.0.1|::1' | sort -k4

接着把连续网段合并成一条 CIDR 规则

ping -c 1 10.0.3.1 && ip route

等前面都确认过,再清理无主规则后再添加新条目

iptables -S | grep -c ACCEPT

怎么算真的好了,看的是同一批现象。安全组的规则条数降到配额以内,新端口规则保存成功,实例上的服务可以正常被外部访问。

容易忽略的是,规则设计上优先用网段和端口范围,别一个 IP 一条;超过五十条就该考虑用安全组嵌套或者前置 WAF、负载均衡收敛入口。报错文案容易误导,真正的原因往往在相邻那一层的日志里。

作者 9823189