一、ACL簡介
ACL(Access Control List,訪問控制列表)是一或多條規則的集合,用於識別報文流。這里的規則是指描述報文匹配條件的判斷語句,匹配條件可以是報文的源地址、目的地址、端口號等。網絡設備依照這些規則識別出特定的報文,並根據預先設定的策略對其進行處理。
ACL可以應用在諸多領域,其中最基本的就是應用ACL進行報文過濾。
1、ACL編號
用戶在創建ACL時必須為其指定編號,不同的編號對應不同類型的ACL,當ACL創建完成后,用戶就可以通過指定編號或名稱的方式來指定該ACL,以便對其進行操作。
根據規則制訂依據的不同,可以將ACL分為以下幾種:
(1)基本ACL:
編號2000-2999,規則指定依據報文的源IPv4地址
(2)高級ACL:
編號3000-3999,規則制定依據報文的源IPv4地址、目的IPv4地址、報文優先級、IPv4承載的協議類型及特性等三、四層信息
(3)二層ACL:
編號4000-4999,規則制定依據報文的源MAC地址、目的MAC地址、802.1p優先級、鏈路層協議類型等二層信息
2、ACL的規則匹配順序
當一個ACL中包含多條規則時,報文會按照一定的順序與這些規則進行匹配,一旦匹配上某條規則便結束匹配過程。ACL的規則匹配順序有以下兩種:
- 配置順序:按照規則編號由小到大進行匹配。
- 自動排序:按照“深度優先”原則由深到淺進行匹配
3、ACL的步長
ACL中的每條規則都有自己的編號,這個編號在該ACL中是唯一的。在創建規則時,可以手工為其指定一個編號,如未手工指定編號,則由系統為其自動分配一個編號。由於規則的編號可能影響規則匹配的順序,因此當由系統自動分配編號時,為了方便后續在已有規則之前插入新的規則,系統通常會在相鄰編號之間留下一定的空間,這個空間的大小(即相鄰編號之間的差值)就稱為ACL的步長。譬如,當步長為5時,系統會將編號0、5、10、15……依次分配給新創建的規則。
二、配置ACL
1、配置基本ACL
基本ACL根據報文的源IP地址來制訂規則,對報文進行匹配。
| 操作 |
命令 |
說明 |
| 進入系統視圖 |
system-view |
- |
| 創建IPv4基本ACL,並進入IPv4基本ACL視圖 |
acl number acl-number [ name acl-name ] [ match-order { auto | config } ] |
缺省情況下,不存在任何ACL IPv4基本ACL的編號范圍為2000~2999 如果在創建IPv4基本ACL時為其設置了名稱,則也可使用acl name acl-name命令進入其視圖 |
| (可選)配置ACL的描述信息 |
description text |
缺省情況下,ACL沒有任何描述信息 |
| (可選)配置規則編號的步長 |
step step-value |
缺省情況下,規則編號的步長為5 |
| 創建規則 |
rule [ rule-id ] { deny | permit } [ counting | fragment | logging | source { source-address source-wildcard | any } | time-range time-range-name | vpn-instance vpn-instance-name ] * |
缺省情況下,IPv4基本ACL內不存在任何規則 logging參數需要使用該ACL的模塊支持日志記錄功能,例如報文過濾 |
| (可選)為指定規則配置描述信息 |
rule rule-id comment text |
缺省情況下,規則沒有任何描述信息 |
2、配置高級ACL
高級ACL可根據報文的源IP地址、目的IP地址、報文優先級、IP承載的協議類型及特性(如TCP/UDP的源端口和目的端口、TCP報文標識、ICMP協議的消息類型和消息碼等)等信息來制定規則,對IPv4報文進行匹配。用戶可利用IPv4高級ACL制訂比IPv4基本ACL更准確、豐富、靈活的規則。
| 操作 |
命令 |
說明 |
| 進入系統視圖 |
system-view |
- |
| 創建IPv4高級ACL,並進入IPv4高級ACL視圖 |
acl number acl-number [ name acl-name ] [ match-order{ auto | config } ] |
缺省情況下,不存在任何ACL IPv4高級ACL的編號范圍為3000~3999 如果在創建IPv4高級ACL時為其設置了名稱,則也可使用acl name acl-name命令進入其視圖 |
| (可選)配置ACL的描述信息 |
description text |
缺省情況下,ACL沒有任何描述信息 |
| (可選)配置規則編號的步長 |
step step-value |
缺省情況下,規則編號的步長為5 |
| 創建規則 |
rule [ rule-id ] { deny | permit } protocol [ { { ack ack-value| fin fin-value | psh psh-value | rst rst-value | syn syn-value | urg urg-value } * | established } | counting | destination { dest-address dest-wildcard | any } | destination-port operator port1 [ port2 ] | { dscp dscp | { precedence precedence | tos tos } * } | fragment | icmp-type { icmp-type [ icmp-code ] | icmp-message } | logging | source { source-address source-wildcard | any } | source-port operator port1 [ port2 ] } | time-range time-range-name | vpn-instancevpn-instance-name ] * |
缺省情況下,IPv4高級ACL內不存在任何規則 logging參數需要使用該ACL的模塊支持日志記錄功能,例如報文過濾 |
| (可選)為指定規則配置描述信息 |
rule rule-id comment text |
缺省情況下,規則沒有任何描述信息 |
3、配置二層ACL
二層ACL可根據報文的源MAC地址、目的MAC地址、802.1p優先級、鏈路層協議類型等二層信息來制訂規則,對報文進行匹配。
| 操作 |
命令 |
說明 |
| 進入系統視圖 |
system-view |
- |
| 創建二層ACL,並進入二層ACL視圖 |
acl number acl-number [ name acl-name ] [ match-order { auto | config } ] |
缺省情況下,不存在任何ACL 二層ACL的編號范圍為4000~4999 如果在創建二層ACL時為其設置了名稱,則也可使用acl name acl-name命令進入其視圖 |
| (可選)配置ACL的描述信息 |
description text |
缺省情況下,ACL沒有任何描述信息 |
| (可選)配置規則編號的步長 |
step step-value |
缺省情況下,規則編號的步長為5 |
| 創建規則 |
rule [ rule-id ] { deny | permit } [ cos vlan-pri | counting | dest-mac dest-address dest-mask | { lsap lsap-type lsap-type-mask | type protocol-type protocol-type-mask } | source-mac source-address source-mask | time-range time-range-name ] * |
缺省情況下,二層ACL內不存在任何規則 |
| (可選)為指定規則配置描述信息 |
rule rule-id comment text |
缺省情況下,規則沒有任何描述信息 |
4、復制ACL
用戶可通過復制一個已存在的ACL(即源ACL),來生成一個新的同類型ACL(即目的ACL)。除了ACL的編號和名稱不同外,目的ACL與源ACL完全相同。目的ACL要與源ACL的類型相同,且目的ACL必須不存在,否則將導致復制失敗。
| 操作 |
命令 |
說明 |
| 進入系統視圖 |
system-view |
- |
| 復制並生成一個新的ACL |
acl [ ipv6 ] copy { source-acl-number | name source-acl-name } to { dest-acl-number| name dest-acl-name } |
- |
5、應用ACL進行報文過濾
ACL最基本的應用就是進行報文過濾,即通過將ACL規則應用到指定接口的入或出方向上,從而對該接口收到或發出的報文進行過濾。
| 操作 |
命令 |
說明 |
| 進入系統視圖 |
system-view |
- |
| 進入接口視圖 |
interface interface-type interface-number |
- |
| 在接口上應用ACL進行報文過濾 |
packet-filter [ ipv6 ] { acl-number | name acl-name } { inbound| outbound } |
缺省情況下,接口不對報文進行過濾 |
三、ACL顯示和維護
在任意視圖下執行display命令可以顯示ACL配置后的運行情況,通過查看顯示信息驗證配置的效果。
display acl acl-number