概述:
本文討論以下兩個問題:
理解和使用擴展訪問控制列表的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的各種高級選項功能。