ACL-Access Control List
它的作用是对网络流量的访问行为进行控制,是管理员管理、监控网络流量的得力工具;
ACL常常会和服务质量(Quality of Service,QoS
)、路由策略等技术结合起来使用,为某项后续的操作定义流量的匹配标准。
在华为设备上,IP ACL分为两种类型:
基本IP ACL
只能基于源IP地址进行匹配
高级IP ACL
基于多种参数进行匹配,这些参数包括三层信息,比如源和目的IP地址,以及四层信息,比如TCP/UDP
的源和目的端口号。
ACL是一个由多条匹配规则和行为构成的过滤列表,每个ACL中都可以包含多个匹配规则,每个匹配规则必须关联一个行为(允许或拒绝);
当与数据包相匹配的规则中指定了拒绝行为,设备就会丢弃这个数据包。当与数据包相匹配的规则中指定了允许行为,设备就会继续处理这个数据包。
如下为ACL的工作示意图
数据包与ACL中的“允许”行为相匹配时的操作:
数据包与ACL中的“拒绝”行为相匹配时的操作:
通配符掩码有两种表现形式:
只匹配一个IP地址(主机地址)192.168.8.10:
192.168.8.10 0.0.0.0
匹配一个连续的IP地址范围:
192.168.8.10 0.0.0.255
匹配一个连续的IP地址范围192.168.8.0~192.168.15.255:
192.168.8.10 0.0.7.255
匹配所有IP地址:
192.168.8.10 255.255.255.255
通配符掩码深入理解案例一:
以IP地址10.10.10.10为例
匹配多个连续的IP地址:通配符掩码(十进制)非0位的取值必须是1、3、7、15、31、63、127、255。
通配符掩码深入理解案例二:
此案例中,0和1之间的分界线移到了通配符掩码的第3个八位组,这样一来匹配的IP地址数量就增多了。也就是说,0和1之间的分界线越往左侧移动,匹配的IP地址数量就越多;
在描述连续范围内的IP地址时,二进制格式的通配符掩码要满足:
前半部分必须是连续的0
后半部分必须是连续的1
描述一个连续的IP地址范围:二进制通配符掩码中的1从右侧起就是连续的,不能在任意两个1之间出现0。
在设计ACL中的条目及其顺序时,管理员要考虑到以下几点:
如果ACL中没有定义任何规则,则ACL匹配结果为:未命中;
如果ACL中定义了规则,则设备按照规则编号逐个查找匹配规则:
如果数据包与允许语句相匹配,则匹配结果为:匹配(允许);
如果数据包与拒绝语句相匹配,则匹配结果为:匹配(拒绝);
如果数据包与管理员明确配置的语句都不匹配,则匹配结果为:未命中。
路由器转发数据包时会由一个接口接收数据包并从另一个接口转发出去。因此这个数据包可能会经由两个ACL进行过滤:
入向IP ACL的应用位置和方向示意图:
当路由器通过查询IP路由表,找到了转发数据包所使用的出站接口后,数据包就会受到出站接口应用的出向IP ACL的过滤,并且会产生以下两种结果:
出向IP ACL的应用位置和方向示意图:
出站数据包过滤流程图:
在使用基本IP ACL进行流量过滤时,管理员只能在匹配规则中设置以下参数:
当在一条匹配规则中同时配置了上述参数时,必须所有参数都满足条件,路由器才会认为数据包与这条规则相匹配;
管理员可以根据实际需求有选择地使用上述参数。
在流控制/简化流控制模块中应用ACL来过滤流量时,管理员可以使用以下三个步骤来创建并应用基本IP ACL:
acl [number] acl-number
rule [rule-id] {deny | permit} [source {source-address source-wildcard | any}]
基本IP ACL视图命令;
作用是定义一条匹配规则。
traffic-filter {inbound | outbound} {acl | ipv6 acl} {acl-number | name acl-name}
接口视图命令;
作用是在接口上应用ACL。
场景介绍
AR1作为网络中唯一一台路由器,负责不同VLAN之间的数据转发,同时作为企业网的网关为局域网中的主机提供Internet连接。
地址规划
在这个企业网环境中,管理员要通过基本IP ACL实现以下需求:
源IP地址为私有地址的流量不能从Internet进入企业网络;
财务部门服务器VLAN(10.10.10.0/24
)中的服务器只能由财务部VLAN(10.10.30.0/24
)中的主机进行访问。
为了满足上述需求,管理员决定在AR1的G6/0/0
和G6/0/1
接口上实施相应的过滤行为,并创建了下面两个基本IP ACL;
管理员在ACL 2000中拒绝了所有源为私有IP地址的访问,在ACL 2010中只允许VLAN 30的主机访问。
[AR1]acl 2000
[AR1-acl-basic-2000]rule deny source 10.0.0.0 0.255.255.255
[AR1-acl-basic-2000]rule deny source 172.16.0.0 0.15.255.255
[AR1-acl-basic-2000]rule deny source 192.168.0.0 0.0.255.255
[AR1-acl-basic-2000]quit
[AR1]acl 2010
[AR1-acl-basic-2010]rule permit source 10.10.30.0 0.0.0.255 #只允许这个网段的计算机访问
[AR1-acl-basic-2010]rule deny source any # 其他网段都不允许访问
使用display acl命令查看了这两个IP ACL的配置。
[AR1]display acl all
Total quantity of nonempty ACL number is 2
Basic ACL 2000, 3 rules
Acl's step is 5
rule 5 deny source 10.0.0.0 0.255.255.255
rule 10 deny source 172.16.0.0 0.15.255.255
rule 15 deny source 192.168.0.0 0.0.255.255
Basic ACL 2010, 2 rules
Acl's step is 5
rule 5 permit source 10.10.30.0 0.0.0.255
rule 10 deny
在相应的接口上应用创建的IP ACL。
[AR1]interface g6/0/0
[AR1-GigabitEthernet6/0/0]traffic-filter inbound acl 2000
[AR1-GigabitEthernet6/0/0]quit
[AR1]interface g6/0/1
[AR1-GigabitEthernet6/0/1]traffic-filter outbound acl 2010
ISP路由器向AR1的G6/0/0接口发起了ping测试:
分别从PC30和PC20向服务器10发起了ping测试
在使用高级IP ACL进行流量过滤时,管理员能够在匹配规则中设置多种参数;
管理员可以使用以下三个步骤来创建并应用高级IP ACL。
acl [number] acl-number
acl
:必选关键字,表示管理员将要配置一个ACL;number
:可选关键字,表示管理员要为这个ACL定义一个编号。在本节的配置案例中,我们会省略这个关键字;acl-number
:必选参数,在这里设置管理员要配置的ACL编号。高级IP ACL的编号取值范围是3000~3999
。rule [rule-id] {deny | permit} ip [destination {destination-address destination-wildcard | any } | source {source-address source-wildcard | any}
rule
:必选关键字,表示管理员将要配置一条规则;
rule-id
:可选关键字,表示管理员为这条规则设置编号;
deny | permit
:必选关键字(二选一),指定这条匹配规则的行为。如果要丢弃与这条规则相匹配的IP数据包,就使用关键字deny。如果要放行与这条规则相匹配的IP数据包,就使用关键字permit
destination {destination-address destination-wildcard | any }
:可选关键字组,关键字destination表示管理员要配置目的IP地址信息;destination-address destination-wildcard参数用来指定具体的IP地址;关键字any表示这条规则要匹配任意目的IP地址的数据包;
source {source-address source-wildcard | any}
:可选关键字组,关键字source表示管理员要配置源IP地址信息;source-address source-wildcard参数用来指定具体的IP地址;关键字any表示这条规则要匹配任意源IP地址的数据包。
traffic-filter {inbound | outbound} {acl | ipv6 acl} {acl-number | name acl-name}
traffic-filter
:必选关键字;
inbound | outbound
:必选关键字(二选一);
acl | ipv6 acl
:必选关键字(二选一);
acl-number | name acl-name
:必选关键字(二选一)。
基本IP ACL案例中添加了一台路由器后的拓扑:
高级IP ACL环境中的IP地址规划:
财务部门服务器VLAN(10.10.10.0/24
)中的服务器只能由财务部VLAN(10.10.30.0/24
)中的主机进行访问:
AR1上创建高级IP ACL
[AR1]acl 3000
[AR1-acl-adv-3000]rule deny ip destination 10.10.10.0 0.0.0.255
管理员在ACL 3000中禁止VLAN 20中的用户PC访问VLAN 10:
查看管理员创建的高级IP ACL
[AR1]display acl 3000
Advanced ACL 3000, 1 rule
Acl's step is 5
rule 5 deny ip destination 10.10.10.0 0.0.0.255
高级IP ACL应用在相应的位置上:
[AR1]interface g6/0/2
[AR1-GigabitEthernet6/0/2]traffic-filter inbound acl 3000
配置缺省路由
[AR1]ip route-static 0.0.0.0 0 10.10.12.2
[AR2]ip route-static 0.0.0.0 0 10.10.12.1
测试高级IP ACL的效果:
PC20:
PC30:
使用基本IP ACL和高级IP ACL来实现相同的访问限制的区别:
单独删除指定规则:
[AR1] display acl 2000
Basic ACL 2000, 4 rules
Acl's step is 5
rule 5 deny source 10.0.0.0 0.255.255.255
rule 10 permit source 10.10.0.0 0.0.255.255
rule 15 deny source 172.16.0.0 0.0.15.255
rule 20 deny source 192.168.0.0 0.0.255.255
[AR1] acl 2000
[AR1-acl-basic-2000]undo rule 10
[AR1-acl-basic-2000]quit
[AR1]display acl 2000
Basic ACL 2000, 3 rules
Acl's step is 5
rule 5 deny source 10.0.0.0 0.255.255.255
rule 15 deny source 172.16.0.0 0.0.15.255
rule 20 deny source 192.168.0.0 0.0.255.255
利用ACL步长重新自动编号
[AR1]display acl 2000
Basic ACL 2000, 3 rules
Acl's step is 5
rule 5 deny source 10.0.0.0 0.255.255.255
rule 15 deny source 172.16.0.0 0.0.15.255
rule 20 deny source 192.168.0.0 0.0.255.255
[AR1]acl 2000
[AR1-acl-basic-2000]rule 4 permit source 10.10.0.0 0.0.255.255
[AR1-acl-basic-2000]display acl 2000
Basic ACL 2000, 4 rules
Acl's step is 5
rule 4 permit source 10.10.0.0 0.0.255.255
rule 5 deny source 10.0.0.0 0.255.255.255
rule 15 deny source 172.16.0.0 0.0.15.255
rule 20 deny source 192.168.0.0 0.0.255.255
[AR1-acl-basic-2000]step 10
[AR1-acl-basic-2000]display acl 2000
Basic ACL 2000, 4 rules
Acl's step is 10
rule 10 permit source 10.10.0.0 0.0.255.255
rule 20 deny source 10.0.0.0 0.255.255.255
rule 30 deny source 172.16.0.0 0.0.15.255
rule 40 deny source 192.168.0.0 0.0.255.255
其他高级acl语句
[R1]acl 3000(定义一个扩展ACL3000)
[R1-acl-adv-3000]rule 5 permit ip source 192.168.1.20 0.0.0.0 destination.168.2.10
0.0.00(允许以C2为源C3为目标的流量)
[R1-acl-adv-3000]rule 10 deny ip source 192.168.1.00.0.0.255 destination 192.168.2.0
0.0.0.255(注意此条语句位置!拒绝所有van10为源van20为目标的流量)
[R1-acl-adv-3000]rule 15 deny tcp source 192.168.1.10 0.0.0.0 destination.0.0.2
0.00.0 destination-port eq80(拒绝C1为源访问目标为 Server的TCP80端口)
[R1ac-adv-3000]rule 20 permit ip source any(最后允许所有未匹配的流量)
[R1]int g0/0/1.10
[R1- GigabitEtherneto/0/1.10] traffic-filter inbound acl 3000(在van10网关的n方向调用)acl