- ACL 的基本概念
- 标准 ACL
- 扩展 ACL
- 命名 ACL
- ACL 的应用与验证
- ACL 的最佳实践与注意事项
ACL 的基本概念
在进入命令之前,必须理解几个核心概念:

- 作用:ACL 是一组规则的集合,用于匹配数据包的特定特征(如源/目标 IP 地址、协议、端口号等),并根据匹配结果决定是允许 (Permit) 还是拒绝 (Deny) 数据包通过。
- 顺序:ACL 的规则是自上而下进行匹配的,一旦数据包与某条规则匹配,立即执行该规则的
permit或deny动作,并停止后续规则的检查,规则的顺序至关重要。 - 隐式拒绝:Cisco ACL 的末尾有一条“隐式拒绝”语句,这意味着如果一个数据包没有匹配到 ACL 中的任何一条
permit规则,它就会被自动拒绝。 - 入站 vs. 出站:ACL 可以应用在接口的入站或出站方向。
- 入站:在数据包进入接口后,被路由到路由器CPU进行路由决策之前,应用ACL进行过滤,这是效率更高的方式,因为不匹配的数据包会被立即丢弃,不消耗路由资源。
- 出站:在数据包从路由器接口发送出去之前,应用ACL进行过滤。
标准 ACL
标准 ACL 只能根据源 IP 地址来过滤数据包,它通常用于控制来自某个特定网络或主机的访问。
配置命令
步骤 1:进入全局配置模式
Router> enable Router# configure terminal Router(config)#
步骤 2:创建标准 ACL 有两种方式:数字命名和名称命名。
-
使用数字 (1-99)
(图片来源网络,侵删)Router(config)# access-list 1 permit 192.168.1.0 0.0.0.255
access-list 1: 创建一个标准 ACL,编号为 1。permit: 动作是允许。168.1.0 0.0.0.255: 源 IP 地址和通配符掩码。0.0.255表示匹配168.1.0到168.1.255的所有主机。
-
使用名称(推荐,更易于管理)
Router(config)# ip access-list standard MY-ACL-1 Router(config-std-nacl)# permit 192.168.1.0 0.0.0.255
ip access-list standard MY-ACL-1: 创建一个名为MY-ACL-1的标准 ACL。- 后续的规则都在这个 ACL 的子配置模式下输入。
步骤 3:将 ACL 应用到接口
假设我们要阻止 168.1.0/24 网络访问 0.0.2,ACL 应该应用在靠近 168.1.0 网络的接口的入站方向。
Router(config)# interface GigabitEthernet0/0 Router(config-if)# ip access-group 1 in // 使用数字方式 # 或者 Router(config-if)# ip access-group MY-ACL-1 in // 使用名称方式
ip access-group: 将 ACL 应用到接口。1或MY-ACL-1: ACL 的编号或名称。in: 指定应用方向为入站,用out表示出站。
步骤 4:删除 ACL
# 从接口上移除 ACL Router(config-if)# no ip access-group 1 in # 删除整个 ACL(数字方式) Router(config)# no access-list 1 # 删除整个 ACL(名称方式) Router(config)# no ip access-list standard MY-ACL-1
扩展 ACL
扩展 ACL 功能更强大,可以根据源 IP 地址、目标 IP 地址、协议类型、源端口、目标端口等更详细的信息进行过滤,它通常被放置在靠近源地址的接口上,以尽早过滤掉不需要的流量。

配置命令
步骤 1:进入全局配置模式
Router(config)#
步骤 2:创建扩展 ACL 同样支持数字和名称。
-
使用数字 (100-199, 2000-2699)
Router(config)# access-list 101 permit tcp 192.168.1.0 0.0.0.255 10.0.0.2 0.0.0.0 eq 80
access-list 101: 创建扩展 ACL,编号为 101。permit tcp: 允许 TCP 协议。168.1.0 0.0.0.255: 源 IP 地址范围。0.0.2 0.0.0.0: 目标 IP 地址(0.0.0表示精确匹配0.0.2)。eq 80: 目标端口号等于 80 (HTTP)。
-
使用名称(推荐)
Router(config)# ip access-list extended WEB-ACCESS Router(config-ext-nacl)# permit tcp 192.168.1.0 0.0.0.255 host 10.0.0.2 eq 80
ip access-list extended WEB-ACCESS: 创建名为WEB-ACCESS的扩展 ACL。host 10.0.0.2: 是0.0.2 0.0.0.0的简写,表示单个主机。
步骤 3:将 ACL 应用到接口
Router(config)# interface GigabitEthernet0/0 Router(config-if)# ip access-group 101 in # 或者 Router(config-if)# ip access-group WEB-ACCESS in
其他常用协议和端口关键字:
eq: 等于 (e.g.,eq 22for SSH)gt: 大于lt: 小于neq: 不等于range: 范围 (e.g.,range 1024 65535)host: 单个主机 (e.g.,host 192.168.1.1)- 协议:
tcp,udp,icmp,ip
示例:拒绝 ping
ip access-list extended BLOCK-ICMP deny icmp any any // 拒绝所有 ICMP 流量 (ping) permit ip any any // 允许所有其他 IP 流量
命名 ACL
命名 ACL 是一种更现代的管理方式,它将 ACL 的编号替换为一个有意义的名称,无论是标准 ACL 还是扩展 ACL,都可以使用命名方式。
优点:
- 易于识别:
SECURITY-FW-OUTBOUND比access-list 120更容易理解。 - 易于修改:可以直接通过名称添加、插入或删除规则,无需重新创建整个 ACL。
配置命令(已在标准/扩展 ACL 中展示,这里再强调一下)
# 创建标准命名 ACL ip access-list standard ALLOW-SALES permit 192.168.10.0 0.0.0.255 # 创建扩展命名 ACL ip access-list extended DENY-TELNET deny tcp any any eq 23 permit ip any any
ACL 的应用与验证
应用 ACL
# 进入接口 interface GigabitEthernet0/1 # 应用命名 ACL (出站方向) ip access-group DENY-TELNET out # 查看接口上应用的 ACL do show ip interface GigabitEthernet0/1
输出中会显示 Outbound access list is DENY-TELNET。
验证 ACL 配置
命令 1:查看所有 ACL 配置
Router# show access-lists
输出会显示所有 ACL 的规则,并显示每个规则的匹配次数。
Standard IP access list 1
10 permit 192.168.1.0 (5 matches)
Extended IP access list DENY-TELNET
10 deny tcp any any eq 23 (2 matches)
20 permit ip any any (45 matches)
matches 字段非常重要,可以帮助你判断规则是否按预期在工作。
命令 2:查看特定 ACL
Router# show access-lists MY-ACL-1
命令 3:查看 ACL 统计信息
Router# show ip access-lists
这个命令和 show access-lists 在 IOS 中通常是等效的,但 show ip access-lists 更明确地指出了是查看 IP ACL。
ACL 的最佳实践与注意事项
- 最小权限原则:默认情况下,所有流量都是被允许的,应该先定义需要拒绝的流量,然后再定义需要允许的流量。
- 放置位置:
- 标准 ACL:尽量放在离目标地址最近的接口上,因为它只检查源地址,如果放在靠近源的地方,可能会错误地阻止所有去往其他地方的流量。
- 扩展 ACL:尽量放在离源地址最近的接口上,这样可以尽早过滤掉不需要的流量,节省网络带宽和设备资源。
- 使用命名 ACL:对于复杂的 ACL,使用命名方式可以极大地提高可读性和可维护性。
- 注释:在复杂的 ACL 中,使用
remark命令为每条规则添加注释,方便日后维护。Router(config-ext-nacl)# remark Deny access from Finance network to Server Router(config-ext-nacl)# deny ip 192.168.5.0 0.0.0.255 10.1.1.5 0.0.0.0
- 顺序至关重要:规则的顺序决定了匹配结果,将最具体的、最常用的规则放在前面。
log选项:可以在permit或deny后面加上log关键字,当匹配到该规则时,路由器会生成日志信息(需要配置日志服务器)。Router(config-ext-nacl)# deny tcp any any eq 23 log
希望这份详细的指南能帮助你全面掌握 Cisco ACL 的命令!
