ACL脉漏,是Access Control List的簡(jiǎn)稱房官,中文名稱叫“訪問(wèn)控制列表”,它由一系列規(guī)則(即描述報(bào)文匹配條件的判斷語(yǔ)句)組成朽缎。這些條件惨远,可以是報(bào)文的源地址、目的地址话肖、端口號(hào)等北秽。這樣解釋ACL,大家是不是覺得太抽象了最筒!打個(gè)比方贺氓,ACL其實(shí)是一種報(bào)文過(guò)濾器,ACL規(guī)則就是過(guò)濾器的濾芯床蜘。安裝什么樣的濾芯(即根據(jù)報(bào)文特征配置相應(yīng)的ACL規(guī)則)辙培,ACL就能過(guò)濾出什么樣的報(bào)文了。
看看ACL長(zhǎng)啥模樣邢锯。話不多說(shuō)扬蕊,先上圖!
ACL分類
首先丹擎,圖中是一個(gè)數(shù)字型ACL尾抑,ACL編號(hào)為2000。這類似于人類的身份證號(hào)鸥鹉,用于唯一標(biāo)識(shí)自己的身份蛮穿。當(dāng)然,人類的身份證上不僅有身份證編號(hào)毁渗,還有每個(gè)人自己的名字践磅。ACL也同樣如此,除了數(shù)字型ACL灸异,還有一種叫做命名型的ACL府适,它就能擁有自己的ACL名稱羔飞。
通過(guò)名稱代替編號(hào)來(lái)定義ACL,就像用域名代替IP地址一樣檐春,可以方便記憶逻淌,也讓大家更容易識(shí)別此ACL的使用目的。
命名型ACL實(shí)際上是“名字+數(shù)字”的形式疟暖,可以在定義命名型ACL時(shí)同時(shí)指定ACL編號(hào)卡儒。如果不指定編號(hào),則由系統(tǒng)自動(dòng)分配俐巴。上圖就是一個(gè)既有名字“deny-telnet-login”又有編號(hào) “3998”的ACL骨望。
ACL類別 | 規(guī)則定義描述 | 編號(hào)范圍 |
---|---|---|
基本ACL | 僅使用報(bào)文的源IP地址、分片標(biāo)記和時(shí)間段信息來(lái)定義規(guī)則欣舵。 | 2000~2999 |
高級(jí)ACL | 既可使用報(bào)文的源IP地址擎鸠,也可使用目的地址、IP優(yōu)先級(jí)缘圈、ToS劣光、DSCP、IP協(xié)議類型糟把、ICMP類型绢涡、TCP源端口/目的端口、UDP源端口/目的端口號(hào)等來(lái)定義規(guī)則糊饱。 | 3000~3999 |
二層ACL | 可根據(jù)報(bào)文的以太網(wǎng)幀頭信息來(lái)定義規(guī)則垂寥,如根據(jù)源MAC地址、目的MAC地址另锋、以太幀協(xié)議類型等。 | 4000~4999 |
用戶自定義ACL | 可根據(jù)報(bào)文偏移位置和偏移量來(lái)定義規(guī)則狭归。 | 5000~5999 |
用戶ACL | 既可使用IPv4報(bào)文的源IP地址或源UCL(User Control List)組夭坪,也可使用目的地址或目的UCL組、IP協(xié)議類型过椎、ICMP類型室梅、TCP源端口/目的端口、UDP源端口/目的端口號(hào)等來(lái)定義規(guī)則疚宇。 | 6000~9999 |
ACL規(guī)則
接下來(lái)亡鼠,我們來(lái)看看圖中ACL的 “deny | permit”語(yǔ)句。這些條件語(yǔ)句敷待,我們稱作ACL規(guī)則(rule)间涵。其中的“deny | permit”,稱作ACL動(dòng)作榜揖,表示拒絕/允許勾哩。
ACL規(guī)則的編號(hào)范圍是0~4294967294抗蠢,所有規(guī)則均按照規(guī)則編號(hào)從小到大進(jìn)行排序。系統(tǒng)按照規(guī)則編號(hào)從小到大的順序思劳,將規(guī)則依次與報(bào)文匹配迅矛,一旦匹配上一條規(guī)則即停止匹配。
除了包含ACL動(dòng)作和規(guī)則編號(hào)潜叛,ACL規(guī)則中還定義了源地址秽褒、生效時(shí)間段這樣的字段。這些字段威兜,稱作匹配選項(xiàng)销斟,它是ACL規(guī)則的重要組成部分。其實(shí)牡属,ACL提供了極其豐富的匹配選項(xiàng)票堵。你可以選擇二層以太網(wǎng)幀頭信息(如源MAC、目的MAC逮栅、以太幀協(xié)議類型)作為匹配選項(xiàng)悴势,也可以選擇三層報(bào)文信息(如源地址、目的地址措伐、協(xié)議類型)作為匹配選項(xiàng)特纤,還可以選擇四層報(bào)文信息(如TCP/UDP端口號(hào))等等等等。
步長(zhǎng)
步長(zhǎng)侥加,是指系統(tǒng)自動(dòng)為ACL規(guī)則分配編號(hào)時(shí)捧存,每個(gè)相鄰規(guī)則編號(hào)之間的差值。也就是說(shuō)担败,系統(tǒng)是根據(jù)步長(zhǎng)值自動(dòng)為ACL規(guī)則分配編號(hào)的昔穴。
圖中的ACL 2000,步長(zhǎng)就是5提前。系統(tǒng)按照5吗货、10、15…這樣的規(guī)律為ACL規(guī)則分配編號(hào)狈网。如果將步長(zhǎng)調(diào)整為了2宙搬,那么規(guī)則編號(hào)會(huì)自動(dòng)從步長(zhǎng)值開始重新排列,變成2拓哺、4勇垛、6…。
設(shè)置步長(zhǎng)的目的士鸥,是為了方便大家在ACL規(guī)則之間插入新的規(guī)則闲孤。
先來(lái)看個(gè)例子
假設(shè),一條ACL中础淤,已包含了下面三條規(guī)則5崭放、10哨苛、15。如果你希望源IP地址為1.1.1.3的報(bào)文也被禁止通過(guò)币砂,該如何處理呢建峭?
rule 5 deny source 1.1.1.1 0 //表示禁止源IP地址為1.1.1.1的報(bào)文通過(guò)
rule 10 deny source 1.1.1.2 0 //表示禁止源IP地址為1.1.1.2的報(bào)文通過(guò)
rule 15 permit source 1.1.1.0 0.0.0.255 //表示允許源IP地址為1.1.1.0網(wǎng)段的報(bào)文通過(guò)
我們來(lái)分析一下。由于ACL匹配報(bào)文時(shí)遵循“一旦命中即停止匹配”的原則决摧,所以源IP地址為1.1.1.1和1.1.1.2的報(bào)文亿蒸,會(huì)在匹配上編號(hào)較小的rule 5和rule 10后停止匹配,從而被系統(tǒng)禁止通過(guò)掌桩;而源IP地址為1.1.1.3的報(bào)文边锁,則只會(huì)命中rule 15,從而得到系統(tǒng)允許通過(guò)波岛。要想讓源IP地址為1.1.1.3的報(bào)文也被禁止通過(guò)茅坛,我們必須為該報(bào)文配置一條新的deny規(guī)則。
rule 5 deny source 1.1.1.1 0 //表示禁止源IP地址為1.1.1.1的報(bào)文通過(guò)
rule 10 deny source 1.1.1.2 0 //表示禁止源IP地址為1.1.1.2的報(bào)文通過(guò)
rule 11 deny source 1.1.1.3 0 //表示禁止源IP地址為1.1.1.3的報(bào)文通過(guò)
rule 15 permit source 1.1.1.0 0.0.0.255 //表示允許源IP地址為1.1.1.0網(wǎng)段的報(bào)文通過(guò)
在rule 10和rule 15之間插入rule 11后则拷,源IP地址為1.1.1.3的報(bào)文贡蓖,就可以先命中rule 11而停止繼續(xù)往下匹配,所以該報(bào)文將會(huì)被系統(tǒng)禁止通過(guò)煌茬。
試想一下斥铺,如果這條ACL規(guī)則之間間隔不是5,而是1(rule 1坛善、rule 2晾蜘、rule 3…),這時(shí)再想插入新的規(guī)則眠屎,該怎么辦呢剔交?只能先刪除已有的規(guī)則,然后再配置新規(guī)則改衩,最后將之前刪除的規(guī)則重新配置回來(lái)省容。如果這樣做,那付出的代價(jià)可真是太大了燎字!
所以,通過(guò)設(shè)置ACL步長(zhǎng)阿宅,為規(guī)則之間留下一定的空間候衍,后續(xù)再想插入新的規(guī)則,就非常輕松了洒放。