先记住:ACL不是把所有规则都执行一遍
ACL 判断通常是从上到下匹配。数据包命中某一条规则后,就按这条规则允许或拒绝,后面的规则不会再继续影响这个数据包。这个机制叫先匹配先执行。
所以规则顺序很关键。过于宽泛的允许规则如果放在前面,后面的拒绝规则可能永远不会生效;过于宽泛的拒绝规则如果放在前面,也可能误伤本来允许的流量。
| 规则顺序 | 可能结果 | 考试提醒 |
|---|---|---|
| 先宽泛允许,再具体拒绝 | 具体拒绝可能失效 | 先匹配先执行 |
| 先宽泛拒绝,再具体允许 | 具体允许可能被挡住 | 拒绝范围要谨慎 |
| 先具体,后宽泛 | 更容易表达意图 | 常见推荐写法 |
| 没有允许规则 | 可能被隐式拒绝 | 不要忘记最后的默认行为 |
| 方向放错 | 规则匹配不到预期流量 | 入方向/出方向要按接口看 |
隐式拒绝:没有匹配到允许,不代表自动放行
很多 ACL 体系里,规则末尾可以理解为存在一条隐含的拒绝规则。也就是说,如果你只写了几条允许规则,其他未匹配流量可能会被拒绝。考试题如果问为什么某些访问突然不通,要注意是否遗漏了允许规则。
这类题的关键不是死背某个厂商命令,而是理解访问控制逻辑:你明确允许了什么,明确拒绝了什么,剩下没说的流量怎么处理。
一个容易错的场景
需求:允许研发网访问 Web 服务器,允许访问 DNS,其他访问拒绝。
如果只写允许 Web,忘了允许 DNS,用户可能打不开域名。
如果最后没有明确允许其他必要流量,可能被隐式拒绝。
复盘时不要只看 ACL 是否存在,要看规则是否覆盖业务路径。
标准 ACL、扩展 ACL、方向要一起看
标准 ACL 通常按源地址过滤,粒度比较粗;扩展 ACL 可以按源、目的、协议、端口过滤,粒度更细。规则顺序、ACL 类型、放置位置和接口方向要一起看,单独背其中一条不够。
做题时建议画出数据包路径:从源主机出来,经过哪个接口进入路由器,又从哪个接口出去。然后再判断 ACL 放在入方向还是出方向、规则能不能匹配到该流量。
| 判断点 | 要问的问题 | 常见错法 |
|---|---|---|
| ACL 类型 | 能匹配源、目的、端口吗 | 用标准 ACL 控制目的端口 |
| 规则顺序 | 哪一条会先命中 | 把关键拒绝放在宽泛允许后面 |
| 接口方向 | 流量是进接口还是出接口 | 按拓扑左右判断方向 |
| 隐式拒绝 | 未匹配流量怎么处理 | 忘记补必要允许规则 |
| 业务路径 | DNS、回程、管理流量是否也需要 | 只放行 Web 端口 |
和已有 ACL 题怎么配合练
ACL 题最适合画路径。每做一道题,都写四句话:谁访问谁,经过哪个接口,规则从上到下怎么匹配,没匹配到会怎样。这样比只背“标准靠近目的、扩展靠近源”稳定。
如果你已经学过 ACL 入方向/出方向,再补规则顺序和隐式拒绝,访问控制题会完整很多。