3. 标准ACL配置:编号范围、配置命令、应用到接口
标准ACL,说白了就是最基础的访问控制列表。它只看数据包的源IP地址,不关心目标地址、端口号这些。你想想看,它就像一个门卫,只问“你是谁”,不问“你要去哪”。
我在项目里见过不少新手,一上来就想用高级ACL,结果把自己绕晕了。其实很多场景,标准ACL反而更简洁、更高效。咱们先把基础打牢。
3.1 标准ACL的编号范围
标准ACL的编号是有规矩的。不同厂商的设备,范围不太一样。我以最常用的思科设备为例,给你讲讲。
| ACL类型 | 编号范围 | 说明 |
|---|---|---|
| 标准IP ACL | 1 – 99 | 最经典的范围,老设备都支持 |
| 扩展标准IP ACL | 1300 – 1999 | 扩展编号空间,用于编号不够用的情况 |
嗯,这里要注意。华为设备的标准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) |
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(后面会讲),它支持逐条删除。
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的流量,在离开接口前都会被检查。
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的配置流程串起来了。从确定需求开始,到选择编号、编写规则、应用到接口,最后验证效果。每一步都很关键,缺一不可。