3. 标准ACL配置:语法、实例与局限性
标准ACL,说白了就是最基础的访问控制列表。它只认源IP地址,不关心你从哪个端口进来,也不管你要去哪个端口。很多刚入行的朋友觉得它简单,但我在项目里见过不少因为标准ACL放错位置导致全网瘫痪的案例。嗯,咱们今天就把这个基础打扎实。
3.1 标准ACL的语法
标准ACL的配置命令其实不复杂,但细节决定成败。我个人习惯把语法拆成三块来记:
- 编号范围:标准ACL的编号范围是1-99和1300-1999。别问我为什么有1300-1999,这是历史遗留问题,你记住就行。
- 基本命令:
access-list [编号] permit|deny [源IP] [通配符掩码] - 应用命令:
ip access-group [编号] in|out—— 这条必须在接口下配置
通配符掩码(Wildcard Mask):这是新手最容易搞混的地方。通配符掩码和子网掩码正好相反——0表示必须匹配,1表示可以忽略。
举个例子:192.168.1.0 0.0.0.255 表示匹配192.168.1.0/24这个网段的所有主机。
我曾经遇到一个同事,把通配符掩码写成了子网掩码,结果ACL死活不生效。排查了整整两个小时,最后发现他把 0.0.0.255 写成了 255.255.255.0。你想想看,这俩完全反了。
3.2 标准ACL的配置实例
咱们直接上一个实际场景。假设公司网络拓扑如下:
场景需求:只允许办公区(192.168.2.0/24)访问财务部(192.168.1.0/24),禁止其他所有流量访问财务部。
配置步骤如下:
- 定义ACL规则:先允许办公区,再拒绝其他所有流量。
- 应用ACL:在靠近财务部的接口上应用,方向为
in。
! 配置标准ACL 10
access-list 10 permit 192.168.2.0 0.0.0.255
access-list 10 deny any
! 进入连接财务部的接口(假设为G0/0)
interface GigabitEthernet0/0
ip access-group 10 in
我的经验:标准ACL一定要放在离目标最近的接口上。为什么?因为标准ACL只检查源IP,放远了会把不该拦的流量也拦掉。我曾经见过有人把标准ACL放在核心路由器上,结果整个公司都上不了网。
3.3 标准ACL的局限性
标准ACL虽然简单,但坑不少。我总结了几个最常见的局限性:
| 局限性 | 具体表现 | 实际影响 |
|---|---|---|
| 只能基于源IP | 无法区分目的IP、端口、协议 | 要么全放行,要么全拒绝,粒度太粗 |
| 放置位置受限 | 必须靠近目标,否则误伤严重 | 网络设计灵活性差,容易出问题 |
| 规则顺序敏感 | ACL按顺序匹配,一旦匹配就停止 | 顺序写错会导致策略完全失效 |
| 无法记录日志 | 标准ACL不支持log关键字 |
排查问题时无从下手 |
避坑指南:我曾经在一个金融项目中,用标准ACL控制不同部门之间的访问。结果因为ACL放错了位置,导致财务部的ERP系统间歇性断连。排查了三天才发现——标准ACL放在核心层,把正常的办公流量也过滤掉了。后来全部改成扩展ACL,问题才彻底解决。
为什么会这样?你想想看,标准ACL只认源IP。如果你把它放在网络入口,它会把所有来自办公区的流量都放行,不管这些流量要去哪里。但如果你把它放在财务部接口前,它就能精确控制哪些源IP可以进入财务部。这就是「靠近目标」原则的核心逻辑。
另外,标准ACL还有一个隐藏的坑——隐式拒绝。每个ACL末尾都有一条看不见的deny any。如果你只写了permit语句,没写deny any,系统会自动拒绝所有未匹配的流量。很多新手在这里翻车,以为只写允许就行了,结果其他流量全被拦了。
总结一下标准ACL的适用场景:
- 适合简单的源IP过滤,比如只允许某个网段访问特定服务器
- 适合小型网络,规则不超过10条
- 适合临时性的快速隔离,比如封禁某个IP
如果需求复杂(比如要控制端口、协议、多方向),直接上扩展ACL,别在标准ACL上浪费时间。
嗯,标准ACL的内容就这些。语法不难,配置也不复杂,但实际用起来要注意的细节不少。记住三个关键词:源IP、靠近目标、顺序敏感。把这三点刻在脑子里,标准ACL就不会给你惹麻烦。