演示目标:
n使用标准ACL来过滤网络的访问流量。
n理解标准ACL在应用中的限制。
n使用标准ACL过滤“奇数”位子网。
演示环境:如下图10.6所示的演示环境。
演示背景:在演示环境中,请设计使用标准ACL拒绝通信源子网192.168.1.0对服务器A所在子网的任何访问,但是允许访问服务B和C所在的子网;然后思考将标准ACL应用于该演示环境中哪台路由器的具体接口上。
演示步骤:
第一步:完成路由器R1与R2的所有基本配置,包括为各个接口配置IP地址及启动路由协议,要求网络中的各个子网络都能相互Ping通。
第二步:使用标准ACL的配置,具体配置如下所示,首先尝试将配置的ACL应用
在路由器R1的ACL配置:
R1(config)#access-list 1 deny 192.168.1.0 0.0.0.255
* access-list 1指示ACL的列表号为1,它的取值范围是1-99(表示基于IP的标准访问控制列表),deny 192.168.1.0 0.0.0.255指示拒绝源子网是192.168.1.0;0.0.0.255是该子网对应的反掩,关于反掩的作用在第六章理解并实施路由技术中的OSPF部分有详细描述,这里不再重复描述。
R1(config)#access-list 1 permit any
* 该条配置指令是允许所有的其它源地址的通信,如果没有该指令,在ACL列表1中就存在一条默认的拒绝一切的语句(access-list 1 deny any)。
R1(config)#interface ethernet 1/0
R1(config-if)#ip access-group 1 in
* 该访问控制列表1被应用到路由器R1的E1/0接口的进入方向上。
完成上述配置后,在主机A(192.168.1.2)上测试与服务器A、B、C的通信,如下图10.7所示ping不通任何一台服务器子网,这明显不满足背景需求,因为背景需求是设计使用标准ACL拒绝通信源子网192.168.1.0对服务器A所在子网的任何访问,但是允许访问服务B和C所在的子网;那么是什么原因导致这个现象的发生?
因为使用的是标准访问控制列表,标准访问控制列表只能匹配源地址,所以应该将标准的访问控制列表应用于距离目标最近的位置,如果将ACL 1 应用于距离控制源最近的位置,这将导致192.168.1.0子网无法访问其它的任何网络,再次强调标准的ACL只能匹配源地址。
第三步:所以现在将ACL 1 从路由器R1上删除,并将ACL 1 配置在距离目标最近的接口上(路由器R2的E1/0),关于删除ACL 1的配置如下:
在路由器R1上删除ACL1的配置:
R1(config)#no access-list 1
R1(config)#interface e1/0
R1(config-if)#no ip access-group 1 in
R1(config-if)#exit
在距离控制目标最近的位置(路由器R2的E1/0)配置并应用ACL:
R2(config)#access-list 1 deny 192.168.1.0 0.0.0.255
R2(config)#access-list 1 permit any
R2(config)#interface e1/0
R2(config-if)#ip access-group 1 out *在路由器R2的E1/0接口的出方向上应用ACL 1。
R2(config-if)#exit
完成上述配置后,再次在主机A(192.168.1.2)上完成对服务器A、B、C的连通性测试,这次的测试如下图10.8所示,达到了背景需要的要求,此时,主机A无法与服务器A通信,这是要求的目标,但是它可以与服务器B和C正常通信。
第四步:现在再次删除路由器R2上的ACL配置与接口应用,并在路由器R2上配置6个环回接口IP地址,分别是172.16.1.1/24......172.16.6.1/24;用于模拟6个不同的子网,并将这6个子网公告到RIP路由进程中,确保路由器R1能学习并ping通这6个子网,具体的配置如下:
删除路由器R2上的ACL配置与接口应用:
R2(config)#no access-list 1
R2(config)#interface e1/0
R2(config-if)#no ip access-group 1 out
在路由器R2上配置6个环回子网:
R2(config)#interface loopback 1
R2(config-if)#ip address 172.16.1.1 255.255.255.0
R2(config)#interface loopback 2
R2(config-if)#ip address 172.16.2.1 255.255.255.0
R2(config)#interface loopback 3
R2(config-if)#ip address 172.16.3.1 255.255.255.0
R2(config)#interface loopback 4
R2(config-if)#ip address 172.16.4.1 255.255.255.0
R2(config)#interface loopback 5
R2(config-if)#ip address 172.16.5.1 255.255.255.0
R2(config)#interface loopback 6
R2(config-if)#ip address 172.16.6.1 255.255.255.0
将上述6个子网公告到RIP路由进程中:
R2(config)#router rip
R2(config-router)#network 172.16.0.0
R2(config-router)#exit
第五步:关于路由器R1成功ping通路由器R2上6个环回接口的状态如下图10.9所示,在没有任何ACL控制策略情况下,路由器R1应该能成功的ping通路由器R2上的6个环回接口。
第六步:现在要求在路由器R2上使用标准ACL来拒绝172.16.X.0/24(X表示奇数位子网)的通信;但是允许172.16.Y.0/24(Y表示偶数位子网)的通信,要求匹配奇数位子网只使用一条ACL语句;要求匹配偶数位子网只使用一条ACL语句,这样做的目标是为了提高ACL的效率,那么现在的问题是怎么一条ACL语句来匹配奇数位或者是偶数位子网,如下图10.10所示,可看出奇数位子网的十进制转换成二进制时,二进制的最后一位是1;偶数位二进制的最后一位是0;注意:此时使用反码11111110(254)去匹配1就能匹配上奇数位子网;匹配2就能匹配偶数位子网;为什么反码是11111110?因为反码的1表示不关心的位;0表示关心的位;而识别奇偶子网,只需要关心8个二进制位的最后一位,所以,只需要反码的最后一位为0,就能成功的完成匹配。
在路由器R2拒绝奇数位子网;允许偶数位子网的ACL配置:
R2(config)#access-list 1 deny 172.16.1.0 0.0.254.255
* 使用一条ACL语句拒绝奇数位子网的ACL配置
R2(config)#access-list 1 permit 172.16.2.0 0.0.254.255
* 使用一条ACL语句允许偶数位子网的ACL配置
R2(config)#interface e1/2
R2(config-if)#ip access-group 1 in * 在路由器R2上的E1/2接口的入方向上应用ACL。
R2(config-if)#exit
当在路由器R2完成上述配置后,可以在R1上发起对路由器R2上6个环回接口的ping,如下图10.11所示,可看出成功的拒绝了奇数位子网的通信;允许了偶数位子网的通信。