1.ACL的组成
ACL由若干条permit或deny语句组成。每条语句就是该ACL的一条规则,每条语句中的permit或deny就是与这条规则相对应的处理动作。
2.规则编号
(1)一个ACL中的每一条规则都有一个相应的编号。
(2)步长是系统自动为ACL规则分配编号时,每个相邻规则编号之间的差值,缺省值为5。步长的作用是为了方便后续在旧规则之间,插入新的规则。
(3)系统为ACL中首条未手工指定编号的规则分配编号时,使用步长值(例如步长=5,首条规则编号为5)作为该规则的起始编号;为后续规则分配编号时,则使用大于当前ACL内最大规则编号且是步长整数倍的最小整数作为规则编号。
3.通配符
(1)通配符是一个32比特长度的数值,用于指示IP地址中,哪些比特位需要严格匹配,哪些比特位无需匹配。
(2)通配符通常采用类似网络掩码的点分十进制形式表示,但是含义却与网络掩码完全不同。
(3)“0”表示“匹配”;“1”表示“随机分配”
例子:如果想匹配192.168.1.0/24网段中的奇数IP地址,通配符该怎么写呢?
(1)我们先来看一看,奇数IP地址都有哪些:192.168.1.1、192.168.1.5、192.168.1.11……
(2)后八位写成二进制:192.168.1.00000001、192.168.1.00000101、192.168.1.00001011……
(3)可以看出共同点:最后8位的高7位是任意值,最低位固定为1,因此答案是:192.168.1.1 0.0.0.254(0.0.0.11111110)
这就得出了通配符的一个特点:通配符中的1或者0是可以不连续的
4.ACL的匹配机制
5.入站和出站方向
6.通配符和反掩码的区别
192.168.1.1/24 的网络号和广播地址是?
网络号:(本质就是主机位全部是0)192.168.1.0/24
广播地址:(本质就是主机位全部是1)192.168.1.255/24
192.168.1.0-192.168.1.255
匹配192.168.1.0/24所有IP(不用管是否可用)?
通配符:
1、不能变化,不能修改,必须一模一样的,用通配符中的0表示;
2、可以变化,用用通配符中的1表示;
匹配192.168.1.0/24所有IP(不用管是否可用)?本质:1、192.168.1这部分不能变!2、代表第四字节8bit可以随机组合!
192.168.1.0 变成二进制?则为:1100 0000.1010 1000.0000 00001.0000 0000
1100 0000.1010 1000.0000 00001.0000 0000 --->192.168.1.0
0000 0000.0000 0000.0000 00000.1111 1111---->0.0.0.255
(拓展)OSPF配置中宣告网段:
ospf 1
area 0
network 192.168.1.0 0.0.0.255 叫什么?跟今天的通配符有何区别?
反掩码,原先是0变1,1变0,192.168.1.0/24 /24十进制:255.255.255.0 其反掩码就是0.0.0.255
通配符匹配地址 反掩码应该连续为0或连续为1 ,举例:
192.168.1.0/24 反掩码:0.0.0.255 通配符:0.0.0.255
反掩码是由{正}掩码 推算而来,掩码必须是连续!255.255.255.0 255.128.1.0(掩码)255.255.255.128
反掩码特点:分成两部分,要么是连续的0或者连续的1;
通配符:没有连续性的要求!
7.奇数偶数匹配
请使用ACL把10.1.1.0/24中的奇数IP地址和偶数IP地址匹配出来?(请写出ACL匹配)
奇+奇=偶 偶+偶=偶 奇数+偶数=奇数
10.1.1.0/24 10.1.1.0-10.1.1.255/24
10.1.1.0--->换成二进制:0000 1010.0000 0001.0000 0001.0000 0000
当第4个字节最右边的bit固定为0的时候,其他7bit有哪些组合?
0000 1010.0000 0001.0000 0001.0000 0000 那么存在以下的组合:
0000 1010.0000 0001.0000 0001.0000 0010 10.1.1.2
0000 1010.0000 0001.0000 0001.1000 0000 10.1.1.128
0000 1010.0000 0001.0000 0001.0110 0000 10.1.1.96
0000 1010.0000 0001.0000 0001.1111 1110 10.1.1.254
不管哪一种组合,这个字节的和一定是偶数!
结论:只有最右边最后bit存在奇数可能(1),所以是奇数还是偶数取决于最后bit;
0000 1010.0000 0001.0000 0001.0000 0000 通配符除了红色部分不能变之外,其他7bit任意、
0000 0000.0000 0000.0000 0000.1111 1110--->0.0.0.254
匹配偶数那么就是 10.1.1.0 0.0.0.254
匹配奇数那么就是 10.1.1.1 0.0.0.254
如果没法理解,先记住结论:
匹配奇数,确定最后一个bit为奇数,且通配符是0.254就可以;
匹配偶数,确定最后一个bit为偶数,且通配符是0.254就可以;
8.案例:使用高级ACL限制不同网段的用户互访
配置需求:
某公司通过Router实现各部门之间的互连。为方便管理网络,管理员为公司的研发部和市场部规划了两个网段的IP地址。
现要求Router能够限制两个网段之间互访,防止公司机密泄露。
首先正常情况下没有进行acl策略配置的时候两个部门之间是可以互相ping通的
进行配置ACL策略:由于研发部和市场部互访的流量分别从接口GE0/0/1和GE0/0/2进入Router,所以在接口GE0/0/1和GE0/0/2的入方向配置流量过滤。
#AR1上的配置:
[czyAR1]acl 3001
[czyAR1-acl-adv-3001]rule deny ip source 10.1.1.0 0.0.0.255 destination 10.1.2.0
0.0.0.255
[czyAR1]acl 3002
[czyAR1-acl-adv-3002]rule deny ip source 10.1.2.0 0.0.0.255 destination 10.1.1.1
0 0.0.0.255
[czyAR1]inter g0/0/1
[czyAR1-GigabitEthernet0/0/1]traffic-filter inbound acl 3001
[czyAR1-GigabitEthernet0/0/1]inter g0/0/2
[czyAR1-GigabitEthernet0/0/2]traffic-filter inbound acl 3002
再次测试可以发现两个部门之间已经不能ping通了实现了流量的过滤拦截
总结:
一般情况下,ACL匹配顺序是按序号从上到下(序号小的先匹配,大的后面匹配),书写顺序无关,一旦匹配则停止后而序号规则匹配。
拓展:请问部署基本AcL和高级AcL时候,选择接口有何讲究?inbound/outbound?
基木ACL 往 源IP方向 ,因为基本ACL只会检查源ip地址,
高级ACL 往 目的IP方向 因为高级ACL既能控制源地址也能控制目的地址