ACL访问控制列表
前言
访问控制列表ACL(Access Control List)可以定义一系列不同的规则,设备根据这些规则对数据包进行分类,并针对不同类型的报文进行不同的处理,从而可以实现对网络访问行为的控制、限制网络流量、提高网络性能、防止网络攻击等等。
1. 应用场景
一、基于条件过滤与动作执行
- 功能说明:ACL能够依据特定的需求设定过滤条件,并且在数据匹配这些条件后执行相应的动作。
- 场景示例:在图中,数据从主机(如主机A、B、C、D)经过交换机SWA传输到路由器RTA。RTA会对数据进行匹配检查,未匹配的数据包直接转发到互联网,而匹配的数据包可能会执行特定动作,比如图中显示的加密处理后再转发。
- 应用意义:这种方式可以实现对特定数据的精准控制,例如对敏感数据进行加密保护,确保数据在传输过程中的安全性。
二、流量的允许与拒绝控制
- 功能说明:ACL可以通过定义规则来决定是否允许或拒绝网络流量的通过。
- 场景示例:在第二张图中,路由器RTA的不同接口(如G0/0/0和G0/0/1)应用了ACL规则。从图中可以看到,某些流量被禁止通过(用叉号表示),而其他流量可能被允许通过。例如,可能禁止主机A、B所在网段(192.168.1.0/24)的流量访问互联网,或者禁止主机C、D所在网段(192.168.2.0/24)的流量访问服务器A。
- 应用意义:这种应用可以用于网络访问控制,增强网络的安全性,防止未经授权的访问,或者实现特定的网络访问策略,如限制某些用户或网段的访问权限。
2. ACL 分类
ACL 类型 | 编号范围 | 可匹配条件 | 特点 | 常用动作 |
---|---|---|---|---|
基本 ACL | 2000-2999 | 源 IP 地址等 | 功能较简单,无法过滤协议 | Permit(允许)、Deny(拒绝) |
高级 ACL | 3000-3999 | 源 IP 地址、目的 IP 地址、源端口、目的端口、协议等 | 功能丰富,更适用于复杂网络环境 | Permit(允许)、Deny(拒绝) |
二层 ACL | 4000-4999 | 源 MAC 地址、目的 MAC 地址、以太帧协议类型等 | 基于数据链路层信息进行过滤,针对 MAC 地址等链路层特征生效 | Permit(允许)、Deny(拒绝) |
3. ACL规则语法总结
一、核心语法元素表格
语法元素 | 说明 | 示例 |
---|---|---|
acl <acl-number> |
创建ACL列表,<acl-number> 为编号 |
acl 2000 (创建基本ACL,编号2000) |
rule <rule-id> |
定义单条规则,<rule-id> 为规则编号(需唯一,设备按编号从小到大依次匹配规则) |
rule 5 (创建编号为5的规则) |
<action> |
规则动作: - permit :允许匹配的流量 - deny :拒绝匹配的流量 |
deny (拒绝流量)、permit (允许流量) |
source <ip-address> <wildcard-mask> |
匹配源IP地址: - <ip-address> :源IP(单个IP或网段) - <wildcard-mask> :反掩码(0 表示严格匹配该位,255 表示任意) |
source 192.168.1.0 0.0.0.255 (匹配192.168.1.0/24 网段) |
二、规则匹配逻辑
ACL规则按 “编号从小到大” 依次匹配,一旦某条规则匹配成功,立即执行该规则的动作(permit/deny),不再检查后续规则。
若所有规则都未匹配,基本ACL默认拒绝(deny)所有流量(高级ACL默认行为需参考设备手册,通常也为deny)。
三、示例解析
图片中配置了ACL 2000(基本ACL),包含4条规则,匹配逻辑如下:
规则编号 | 动作 | 源IP/反掩码 | 匹配效果 |
---|---|---|---|
rule 5 |
deny |
192.168.1.0 0.0.0.255 |
拒绝192.168.1.0/24 网段的流量 |
rule 10 |
deny |
192.168.2.0 0.0.0.255 |
若流量未匹配rule 5 ,则检查此规则,拒绝192.168.2.0/24 网段 |
rule 15 |
permit |
172.17.0.0 0.0.0.255 |
若流量未匹配前两条,允许172.17.0.0/24 网段 |
rule 20 |
deny |
172.16.0.0 0.0.0.255 |
若流量未匹配前三条,拒绝172.16.0.0/24 网段 |
四、补充说明(反掩码与子网掩码的关系)
反掩码(通配符掩码)与子网掩码作用相反:
- 子网掩码用
1
表示“网络位/必须匹配”,0
表示“主机位/任意”; - 反掩码用
0
表示“必须匹配”,255
表示“任意”。
例如:source 192.168.1.0 0.0.0.255
中,反掩码 0.0.0.255
表示前3个字节(192.168.1)必须严格匹配,最后1个字节(.0)任意,对应子网掩码 255.255.255.0
,即匹配 192.168.1.0/24
网段。
五、 ACL基本配置
基本ACL2000-2999的配置案例
配置思路:
1、配置交换机,设置两个网段,在 g0/0/24口配trunk放行所有vlan
2、路由器配置ACL访问控制列表允许通过192.168.0.1/24 拒绝192.168.1.0/24
(1)交换机配置
<Huawei>sys
[Huawei]vlan batch 2 to 3
# [Huawei]int vlanif 2
# [Huawei-Vlanif2]ip address 192.168.0.1 24
# [Huawei-Vlanif2]int vlanif 3
# [Huawei-Vlanif3]ip address 192.168.1.1 24
[Huawei-Vlanif3]int g0/0/1
[Huawei-GigabitEthernet0/0/1]port link-type access
[Huawei-GigabitEthernet0/0/1]port default vlan 2
[Huawei-GigabitEthernet0/0/1]int g0/0/2
[Huawei-GigabitEthernet0/0/2]port link-type access
[Huawei-GigabitEthernet0/0/2]port default vlan 3
[Huawei-GigabitEthernet0/0/2]int g0/0/24
[Huawei-GigabitEthernet0/0/24]port link-type trunk
[Huawei-GigabitEthernet0/0/24]port trunk allow-pass vlan 2 3
无需配置vlanif,在路由器中配置网关,交换机模拟二层
(2)路由器配置
(1)先配置ACL控制表
<Huawei>sys
Enter system view, return user view with Ctrl+Z.
[Huawei]acl 2000
[Huawei-acl-basic-2000]rule 5 permit source 192.168.0.0 0.0.0.255
[Huawei-acl-basic-2000]rule 10 deny source 192.168.1.0 0.0.0.255
(2)配置001接口和应用当前的ACL
<Huawei>sys
[Huawei]int g0/0/1
[Huawei-GigabitEthernet0/0/1]ip address 10.10.1.1 24 #给10.10.1.2配置网关
[Huawei-GigabitEthernet0/0/1]traffic-filter inbound acl 2000 #给当前接口配置入栈ACL
[Huawei-GigabitEthernet0/0/1]dis this
[V200R003C00]
#
interface GigabitEthernet0/0/1
ip address 10.10.1.1 255.255.255.0
traffic-filter inbound acl 2000
#
return
(3)单臂路由配置
[Huawei-acl-basic-2000]int g0/0/0.2
[Huawei-GigabitEthernet0/0/0.2]dot1q termination vid 2
[Huawei-GigabitEthernet0/0/0.2]ip address 192.168.0.1 24
[Huawei-GigabitEthernet0/0/0.2]arp broadcast enable
[Huawei-GigabitEthernet0/0/0.2]int g0/0/0.3
[Huawei-GigabitEthernet0/0/0.3]dot1q termination vid 3
[Huawei-GigabitEthernet0/0/0.3]ip address 192.168.1.1 24
#备注:如果单臂路由中开启所有路由中的arp广播,则在后续的出入栈位置需要设置outbound
(4)连通性测试
扩展一点
仅允许192.168.0.0/24网段内的主机可以远程登录路由器进行管理
思路:设一个ACCL普通表,限制其他网段主机访问
<Huawei>sys
Enter system view, return user view with Ctrl+Z.
[Huawei]acl 2001
[Huawei-acl-basic-2001]rule 5 deny source 192.168.1.0 0.0.0.255 #禁用单个网段
[Huawei-acl-basic-2001]rule 10 deny source 192.168.1.100 0.0.0.0 #禁用单个IP
[Huawei-acl-basic-2001]quit
[Huawei]user-interface vty 0 4
[Huawei-ui-vty0-4]acl 2001 ?
inbound Filter login connections from the current user interface
outbound Filter logout connections from the current user interface
[Huawei-ui-vty0-4]acl 2001 inbound
虚拟终端配置:默认有5个虚拟会话,编号分别是0-4,用来做远程单登录:telnet ssh等
六、高级ACL配置
3000-3999编号
举例:
仅允许192.168.0.2 访问10.10.1.2 FTP服务(21端口),如下:
(1) 放行192.168.0.2访问10.10.1.2的21服务
[Huawei-acl-adv-3000]rule permit tcp source 192.168.0.2 0.0.0.0 destination 10.10.1.2 0.0.0.0 destination-port eq 21 #注意,可以指定规则不编号,也可忽略
[Huawei-acl-adv-3000]dis this
[V200R003C00]
#
acl number 3000
rule 5 permit tcp source 192.168.0.2 0 destination 10.10.1.2 0 destination-port
eq ftp
#
return
指定端口的时候采用的数学符号:
数学符号 | 对应表示 |
---|---|
大于 | gt |
小于 | lt |
等于 | eq |
范围 | range |
(2)同时,需要设置其他主机不允许访问10.10.1.2的21服务
[Huawei-acl-adv-3000]rule deny tcp destination 10.10.1.2 0.0.0.0 destination-port eq 21
[Huawei-acl-adv-3000]dis this
[V200R003C00]
#
acl number 3000
rule 5 permit tcp source 192.168.0.2 0 destination 10.10.1.2 0 destination-port
eq ftp
rule 10 deny tcp destination 10.10.1.2 0 destination-port eq ftp
#
return
其他流量需要放行
[Huawei-acl-adv-3000]rule permit ip
[Huawei-acl-adv-3000]quit
[Huawei-acl-adv-3000]rule permit ip
表示在高级 ACL 3000的配置视图下,添加一条规则:允许所有 IP 协议的数据包(包括 TCP、UDP、ICMP 等基于 IP 的协议)通过。
其中,acl-adv-3000 表示 “编号 3000 的高级 ACL”(华为高级 ACL 编号范围为 3000-3999);rule 是配置 ACL 规则的关键字;permit 表示 “允许”;ip 表示匹配所有 IP 协议的数据包。
(3)应用到需要配置的接口即可
[Huawei]int g0/0/0
[Huawei-GigabitEthernet0/0/0]traffic-filter outbound acl 3000
[Huawei-GigabitEthernet0/0/0]quit
[Huawei]dis acl 3000
Advanced ACL 3000, 3 rules
Acl's step is 5
rule 5 permit tcp source 192.168.0.2 0 destination 10.10.1.2 0 destination-port
eq ftp
rule 10 deny tcp destination 10.10.1.2 0 destination-port eq ftp
rule 15 permit ip
七、 ACL(访问控制列表)规则总结
1. 基于「IP地址 + 协议类型」
- 控制逻辑:通过源/目的IP地址和协议类型(TCP/UDP/ICMP等)精准拦截/放行流量。
- 示例规则:
rule deny tcp source 192.168.1.0 0.0.0.255 destination 10.10.1.2 0.0.0.0
(拒绝 192.168.1.0/24
网段到 10.10.1.2
的所有TCP流量)
2. 基于「端口号」
- 控制逻辑:通过TCP/UDP的源/目的端口(如HTTP=80、FTP=21)细化流量控制。
- 示例规则:
rule permit tcp source 192.168.1.0 0.0.0.255 destination 10.10.1.2 0.0.0.0 destination-port eq 21
(允许 192.168.1.0/24
到 10.10.1.2
的FTP流量,因FTP控制连接的目的端口为21)
3. 基于「数据包标志位」
- 控制逻辑:通过TCP头部标志位(SYN/ACK/FIN等)识别连接阶段(如“发起新连接”“确认连接”)。
- 示例规则:
rule permit tcp source 192.168.1.0 0.0.0.255 destination 10.10.1.2 0.0.0.0 tcp-flag syn
(允许 192.168.1.0/24
到 10.10.1.2
的TCP SYN包,即允许“发起新连接”的流量)
4. 基于「时间」
- 控制逻辑:通过时间范围(按天/周等周期)限制规则生效时段,实现“分时管控”。
- 配置步骤:先定义时间范围,再关联规则。
示例:
time-range work-time 09:00 to 18:00 daily // 定义“工作时间”:每天9:00-18:00
rule permit ip source 192.168.1.0 0.0.0.255 destination 10.10.1.2 0.0.0.0 time-range work-time
(仅在“工作时间”内,允许 192.168.1.0/24
到 10.10.1.2
的所有IP流量)
5. 流量方向
- 定义:
inbound
:进入接口的流量(如“外网→内网服务器”的流量)。outbound
:离开接口的流量(如“内网→外网”的流量)。
(规则需结合接口方向应用,精准控制“进/出”流量)
6. 规则优先级(匹配顺序)
- 机制:规则按编号从小到大匹配(编号越小,优先级越高,优先执行)。
- 示例:
rule 5 deny ip source 192.168.1.0 0.0.0.255 destination 10.10.1.2 0.0.0.0 // 先拒绝该IP段所有流量
rule 10 permit ip // 再允许所有IP流量(若前一条未匹配,才会执行)
(若 rule 5
匹配成功,rule 10
不会执行;若 rule 5
不匹配,才会执行 rule 10
)
结语
在网络世界中,访问控制列表(ACL)就像一位精准的“守门人”,用一条条规则编织起网络安全与流量管理的防线。从基本ACL对源IP的简单过滤,到高级ACL对协议、端口、标志位的精细管控,再到二层ACL基于MAC地址的链路层防护,它以灵活的姿态适配着从简单到复杂的网络场景——无论是限制特定网段的访问权限,还是精准放行某类服务流量,ACL都在用“规则”的力量让网络行为更可控、更安全。
配置ACL的过程,实则是对网络需求的深度拆解:明确“谁能访问谁”“通过什么协议访问”“在什么时间访问”,再将这些需求转化为有序的规则。而规则的优先级、动作的合理设置,更考验着对网络流量走向的理解——毕竟,一条顺序颠倒的规则可能让整个策略功亏一篑。
对于网络管理者而言,ACL不是一成不变的“清单”,而是需要随网络架构、业务需求动态调整的“活策略”。它提醒我们:网络安全的核心,在于“精细化管控”;而高效的流量管理,始于对每一个数据包的清晰认知。
希望通过本文的梳理,你能对ACL的原理与配置有更清晰的把握。在实际运维中,不妨从具体场景出发,选择合适的ACL类型,打磨每一条规则——让这位“守门人”既不滥用权限,也不疏于防范,最终为你的网络筑起既安全又高效的屏障。