首页/云/云网络与负载均衡速查/网络 ACL 规则方向与序号

网络 ACL 规则方向与序号

ACL 规则按序号从小到大匹配、命中即生效,未匹配的流量被拒绝;入站与出站各维护一份独立规则列表。规划时放行规则在前、末尾显式拒绝,规则集才可读、可审计。

ACL 规则方向与序号

网络 ACL 是作用在子网层面的无状态访问控制:入站与出站各维护一份独立的规则列表,规则按序号从小到大匹配、命中即生效,未匹配的流量被拒绝。无状态意味着返回流量不会自动放行,必须在反方向单独加规则。因为 ACL 影响整个子网的所有实例,影响面大于安全组,变更窗口与留档要求也更严格。

规则示例(数据库子网)

序号方向规则内容说明
10入站允许 TCP 3306 源自 10.10.0.0/16应用层访问数据库
20入站允许 TCP 1-65535 源自 10.10.0.0/16内网管理端口
100入站拒绝全部兜底显式拒绝
10出站允许 TCP 1024-65535 目的 10.10.0.0/16返回流量端口段
100出站拒绝全部兜底拒绝

基本信息

作用范围子网级别,子网内所有实例
有无状态无状态,返回流量需单独放行
匹配方式按序号从小到大,命中即停
与安全组关系两层同时判定,都通过才放行

典型使用场景

  • 给数据库子网加一层子网级防线,作为安全组之外的兜底
  • 隔离区管控:限制 DMZ 子网只能向指定网段发起连接
  • 合规要求:按等保对关键子网做显式拒绝与审计留痕
  • 与安全组分工:ACL 管子网级的粗粒度方向,安全组管实例级的精细端口

验证双向流量

验证双向流量
sudo tcpdump -ni any 'host 10.10.1.10 and tcp port 3306' -c 20
# 双向都有包但业务异常:问题多半不在 ACL
# 若只有单向包:检查反方向规则是否放行返回流量
sudo tcpdump -ni any 'icmp' -c 10   # 复核是否只是 ICMP 被拦
ACL 变更影响整个子网的所有实例,影响面大于安全组,变更窗口与留档更严格。

与安全组的分工

两层控制要分清职责才不会互相打架:网络 ACL 管子网级的粗粒度方向,比如只允许本子网向数据网段发起连接;安全组管实例级的精细端口,比如某台实例只开放 443。流量要两层都通过才放行,所以排查顺序建议先看安全组(变更更频繁),再看 ACL(影响面更大)。ACL 是无状态的,返回流量必须在反方向单独放行,这是配置时最容易漏的一步。

易错点

  • 兜底拒绝排在放行之前会让所有放行失效,序号规划要留间隔便于插队
  • 误以为 ACL 有状态、返回流量自动放行,结果只配了单方向
  • 只排查安全组,忘记子网 ACL 也在参与判定
  • 序号排得过密,后续插入规则只能整体重排,变更风险变大

数据来源与参考

  • 阿里云 网络 ACL 文档(规则)
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌