3. 标准ACL配置:编号范围、配置命令、应用到接口

标准ACL,说白了就是最基础的访问控制列表。它只看数据包的源IP地址,不关心目标地址、端口号这些。你想想看,它就像一个门卫,只问“你是谁”,不问“你要去哪”。

我在项目里见过不少新手,一上来就想用高级ACL,结果把自己绕晕了。其实很多场景,标准ACL反而更简洁、更高效。咱们先把基础打牢。

3.1 标准ACL的编号范围

标准ACL的编号是有规矩的。不同厂商的设备,范围不太一样。我以最常用的思科设备为例,给你讲讲。

ACL类型 编号范围 说明
标准IP ACL 1 – 99 最经典的范围,老设备都支持
扩展标准IP ACL 1300 – 1999 扩展编号空间,用于编号不够用的情况
我的习惯:我个人习惯用1-99做标准ACL,1300-1999留给扩展ACL。这样一看编号,就知道是哪种类型,方便后期维护。

嗯,这里要注意。华为设备的标准ACL编号范围是2000-2999。如果你在项目里遇到不同厂商的设备混用,一定要先确认编号规则。我曾经在项目里吃过这个亏,配了半天发现设备不认,后来一查手册才发现是编号范围搞错了。

3.2 配置命令详解

配置标准ACL,核心就两条命令:一条创建规则,一条应用到接口。咱们一条一条说。

3.2.1 创建标准ACL

在思科设备上,进入全局配置模式后,用这条命令:

Router(config)# access-list 10 permit 192.168.1.0 0.0.0.255

这条命令的意思是:创建一个编号为10的标准ACL,允许源IP为192.168.1.0/24网段的数据包通过。

你可能会问,那个 0.0.0.255 是什么?这是通配符掩码,也叫反掩码。它和子网掩码正好相反:0表示必须匹配,255表示可以任意。

子网掩码 通配符掩码 含义
255.255.255.0 0.0.0.255 匹配前24位,后8位任意
255.255.0.0 0.0.255.255 匹配前16位,后16位任意
255.0.0.0 0.255.255.255 匹配前8位,后24位任意
0.0.0.0 255.255.255.255 匹配所有IP(any)
关键点:标准ACL默认在末尾有一条隐式的 deny any 规则。也就是说,如果你只写了permit语句,没匹配到的流量都会被拒绝。

举个例子,我只允许192.168.1.0/24网段访问,其他全部拒绝:

Router(config)# access-list 10 permit 192.168.1.0 0.0.0.255
# 不需要写 deny any,系统会自动添加

3.2.2 删除和修改规则

标准ACL有个特点:它是按顺序匹配的。如果你要删除某条规则,得用 no 命令:

Router(config)# no access-list 10 permit 192.168.1.0 0.0.0.255

但要注意,这条命令会删除整个ACL 10,而不是只删除这一条规则。如果你想修改某条规则,我建议你先把整个ACL删了,再重新配。或者用命名ACL(后面会讲),它支持逐条删除。

避坑指南:我曾经在现网设备上想修改一条ACL规则,直接敲了 no access-list 10 permit ...,结果整个ACL被删了,业务瞬间中断。从那以后,我改ACL之前一定会先备份配置,或者用命名ACL。

3.3 应用到接口

ACL创建好了,不应用到接口上,它就是一纸空文。应用的时候,要指定方向:是入方向(in)还是出方向(out)。

3.3.1 入方向应用

入方向,就是流量进入接口时进行匹配。命令如下:

Router(config)# interface GigabitEthernet0/0
Router(config-if)# ip access-group 10 in

这条命令的意思是:在G0/0接口的入方向应用ACL 10。所有从外部进入G0/0的流量,都会先被ACL 10检查一遍。

3.3.2 出方向应用

出方向,就是流量从接口出去时进行匹配:

Router(config)# interface GigabitEthernet0/1
Router(config-if)# ip access-group 10 out

这条命令的意思是:在G0/1接口的出方向应用ACL 10。所有从路由器内部发往G0/1的流量,在离开接口前都会被检查。

我的建议:我个人习惯把标准ACL应用在离目标最近的那个接口的入方向。为什么呢?因为标准ACL只看源IP,如果放在出方向,流量已经穿过路由器了,再拒绝就浪费了路由器的处理能力。放在入方向,流量一进来就被拦住,效率更高。

3.4 完整配置示例

咱们来看一个完整的例子。假设我有这样一个网络:

  • 内网:192.168.1.0/24,连接在G0/0接口
  • 外网:10.0.0.0/24,连接在G0/1接口

需求:只允许内网访问外网,不允许外网主动访问内网。

配置如下:

!
# 创建标准ACL,只允许内网网段
access-list 1 permit 192.168.1.0 0.0.0.255
!
# 应用到内网接口的入方向
interface GigabitEthernet0/0
 ip access-group 1 in
!
# 外网接口不需要应用ACL,因为标准ACL默认deny any
# 外网流量进来时,会被ACL 1拒绝(因为源IP不在192.168.1.0/24内)
!

你想想看,这个配置是不是很简洁?一条permit语句,一个应用命令,就搞定了内外网隔离。这就是标准ACL的魅力——简单、直接、有效。

3.5 知识体系总览

为了让你更直观地理解标准ACL的配置流程,我画了一张图:

标准ACL配置流程 第一步:确定需求 允许/拒绝哪些源IP? 第二步:选择编号 1-99 或 1300-1999 第三步:编写规则 access-list 10 permit 192.168.1.0 0.0.0.255 第四步:应用到接口 interface G0/0 → ip access-group 10 in 第五步:验证效果 注意事项 1. 默认deny any 2. 顺序匹配规则 3. 只能基于源IP 4. 建议用命名ACL 5. 备份后再修改

这张图把标准ACL的配置流程串起来了。从确定需求开始,到选择编号、编写规则、应用到接口,最后验证效果。每一步都很关键,缺一不可。