概述:
本文讨论以下两个问题:
理解和使用扩展访问控制列表的fragment选项;
理解和使用扩展访问控制列表的established选项。
使用fragment选项:
(1) 当一个ACL只含有三层信息时,对所有的包都进行控制。
(2) 当不使用frament选项时,一个包含三层和四层信息的acl条目将对所有的数据包进行以下控制:
如果是未分片数据包(nonfragmented)或者分片数据包的第一个分片(initial fragment) ,都将按正常的ACL进行控制(permit或deny)。
如果是分片数据包的后续分片(noninitial fragment),则只检查ACL条目中的三层部分(协议号、源、目的)。如果三层匹配而且是permit控制,则允许该分片通过;如果三层匹配而且是deny控制,则继续检查下一个ACL条目(和正常的ACL控制顺序不同)。
(3)当使用fragment选项时,一个acl条目将只对分片数据包的后续分片(noninitial fragment)进行控制;并且ACL条目中不能包含四层信息。
access-list 101 permit <协议> <源> <目的> fragment
使用established选项的ACL条目:
access-list 101 permit tcp <源> <目的> established
该选项只能用于tcp协议,目的是为了实现基于tcp数据段(四层pdu)中的代码控制位的标志进行会话的控制,例如只允许那些已经建立的tcp会话的流量(特征是ACK或者RST标志已置位)。
例如:假定上图中要实现以下控制,只允许Net A的所有主机初始化到Net B的TCP通信,但是不允许NetB的主机初始化到Net A的TCP通信,可以使用以下ACL实现。
hostname R1
interface ethernet0
ip access-group 102 in
access-list 102 permit tcp any any gt 1023 established
小结
只有很好地理解tcp/ip协议各层数据单元的格式和内容,才能够正确使用ACL的各种高级选项功能。