有些剛接觸ACL(Access Control Lists)的朋友聽到VACL可能有些陌生,本文將對VACL在Cisco COS和IOS版本的交換器上的使用,進行一個比較全面的描述。
VACL(VLAN ACL)和定時訪問列表、動態訪問列表、自反訪問列表一樣都屬於ACL擴充應用的一部分,它定義了基於三層以上的資訊流量,而所對應的參數則用於兩層的VLAN。VACL多是針對硬體中應用,比傳統的路由器訪問列表處理速度明顯快得多。目前,Cisco 6000(Policy Feature Card,策略特性卡,1)、3750、3650、3550和2950G系列的交換器都支援VACL。
基於COS VACL的配置
VACL與普通的ACL相同,列表也是按照順序進行匹配的。ACL號相同的所有ACL形成一個組,在判斷一個資料幀時,使用同一組中的條目從上到下逐一進行判斷,一遇到滿足的條目就終止對該資料幀的判斷。基本的配置方法如下:
1.配置ACL
Set security acl ip {acl_name} {permit |deny |redirect mod/port} {protocol} {sourceaddress mask} [op] [srcport] {dest mask} [op] [destport] [before editbuffer_index |modify editbuffer_index] [log]
Set security acl ip命令後面指定IP ACL的名字,後面是協議的說明和採取的措施。Permit|deny分別對應為:Permit是允許通過,deny是丟棄包。如果加上Redirect選項就代表不使用CAM(Content Addressable Memory),而把流量發送到交換器上一個指定的mod/port對應的連接埠上。對於COS的交換器來說,ACL直到被提交之前都首先寫入一個特殊的緩衝區,並不作為交換器當前啟動並執行條目,before和modify參數是指將配置的acl條目放到某條列表之前或者修改其參數。
2.寫入到TCAM
在配置完ACL之後,它只在編輯緩衝區裡面,我們必須通過commit security acl命令將配置寫入到TCAM(ternary content addressable memory)。完整的命令參數如下:
commit security acl {name | all }
name 選項為只提交指定的名稱列表(可以使用show security acl ip name editbuffer 查看編輯緩衝區內未被提交到內容的控制條目),all選項指提交所有未寫入的VACL。
3.映射到VLAN
VACL與ACL都需要在提交之後把它們對應到作用對象上,如interface vlan1///ip access-group 101 out:這兩句將access-list 101應用到vlan1介面的out方向。其中101是ACL號,和相應的ACL進行關聯。out是對路由器該介面上哪個方向的包進行過濾,可以有in和out兩種選擇。COS VACL的配置同上面的道理一樣,具體體現在:一個VLAN只能有一個VACL映射對其起作用,但一個VACL可以同時被多個VLAN同時調用。命令參數如下:
Set security acl map acl_name vlan
基於IOS VACL的配置
對於中小企業和校園網的使用者來說,3750、3550和2950的交換器的數量相對較多,前面基於COS系統的VACL的配置並不具備普遍性。那麼,我們將著重講解基於IOS系統的交換器上VACL配置的方法。
配置不同的訪問列表
1.基於編號的訪問列表
標準IP存取控制清單:一個標準IP存取控制清單匹配IP包中的源地址或源地址中的一部分,可對匹配的資料包採取“拒絕”或“允許”兩個操作。編號範圍為1~99的存取控制清單是標準IP存取控制清單。命令格式:
router(config)#access-list [list number][permit | deny | remark][host/any][source address][wildcard-mask][log]
list number表示編號範圍:1~99;permit/deny用來表示滿足訪問表項的報文是允許通過介面,還是要過濾掉;source address源地址;host/any表示為主機匹配地址,host表示一種精確的匹配,其屏蔽碼為0.0.0.0,any表示任何主機。
擴充訪問列表:擴充訪問列表主要增加報文過濾能力,一個擴充的IP訪問表允許使用者根據內容過濾報文的源和目的地址的協議、連接埠以及特定報文欄位。協議項定義了需要被過濾的協議,例如IP、TCP、UDP、ICMP等,協議選項是區別標準訪問列表的特徵之一。除此之外, 擴充的列表標號從100~199、2000~2699。文法如下:
router(config)#access-list Access-List-Number [ permit | deny ] [ Protocol | Protocol-Number ] source source-wildcard [ Source-Port ] destination destination-wildcard [ Destination-Port ] [ established ]
2.基於名稱的訪問列表
基於名稱的訪問列表遵守和編號IP存取控制清單一樣的邏輯,名字可以更加容易地記住存取控制清單的功能,命名的列表允許使用超過99個標準控制列表和100個擴充控制列表。優於編號的控制列表的特點是可以刪除特定的一條語句,而編號存取控制清單只能刪除整個存取控制。文法如下:
router(config)#ip access-list {standard | extended} name
ip access-list {standard | extended} name表示要進入的name所指定的列表配置模式,所有的permit和deny操作都是進入到這個模式下進行配置的。
建立VLAN映射
VACL主要區別於標準ACL的作用方式,就是將已經建立好的ACL映射到一個VLAN上。建立映射分為三步:
(global) vlan access-map name [number]
(vlan-map) match ip address {aclname | aclnumber}
(vlan-map) action {drop | forward}
第一步vlan access-map後面的名字定義的時候最好有針對性或者提示性,而後續設定的子句都使用number選項。如果在這裡進行了分組的設定,每一個子句都要經過匹配檢測,直到沒有發現匹配語句才丟棄分組。
執行完第一步實際上是進入了訪問映射的配置模式。match ip address後面的參數是您在前面配置ACL的名稱或編號。
第三步,交換器根據匹配ACL確定的匹配,action命令後面的參數才是代表流量是允許(forward)還是丟棄(drop)。
應用到交換器
之前的配置完成以後,最後需要用vlan filter命令把訪問列表應用到交換器。格式如下:
(global) vlan filter mapname vlan-list list
Mapname參數對應的是vlan access-map命令建立的映射名稱,list是vlan的序號。都配置完成以後可以利用show命令進行檢查:
show ip access-lists [number | name]
show vlan access-map [mapname]
show vlan filter [access-map name | vlan vlan-id]
show ip interface type number