遇到實(shí)際問(wèn)題廉邑,才發(fā)現(xiàn)之前對(duì)華為訪問(wèn)列表的理解存在不少誤區(qū)埂淮,找了好多資料,打了N遍800伞梯。在這里列出來(lái)以防自己健忘玫氢。
ACL的實(shí)現(xiàn)方式
目前設(shè)備支持的ACL,根據(jù)下發(fā)到的位置不同有基于硬件的實(shí)現(xiàn)和基于軟件的實(shí)現(xiàn)兩種實(shí)現(xiàn)方式谜诫。硬件ACL是下發(fā)到芯片執(zhí)行的漾峡,軟件ACL是由上層軟件執(zhí)行的。
基于硬件的ACL:
- 針對(duì)所有報(bào)文(一般是針對(duì)轉(zhuǎn)發(fā)的數(shù)據(jù)報(bào)文)喻旷,通過(guò)下發(fā)硬件ACL來(lái)匹配報(bào)文生逸,這時(shí)ACL是被下發(fā)到硬件的。
- 例如將ACL應(yīng)用到端口或VLAN接口對(duì)報(bào)文進(jìn)行過(guò)濾;在配置QoS功能時(shí)引用的ACL槽袄;流策略伟阔;基于ACL的簡(jiǎn)化流策略;用戶(hù)組以及為接口收到的報(bào)文添加外層Tag功能中引用的ACL等掰伸。
- 需要注意的是,當(dāng)ACL被QoS功能引用時(shí)怀估,ACL規(guī)則中定義的動(dòng)作(deny或permit)不起作用狮鸭,交換機(jī)對(duì)匹配此ACL的報(bào)文采取的動(dòng)作由QoS中流行為定義的的動(dòng)作決定。
- 當(dāng)ACL下發(fā)到硬件時(shí)多搀,被QoS策略引用進(jìn)行流分類(lèi)時(shí)歧蕉,如果報(bào)文沒(méi)有與ACL中的規(guī)則匹配,此時(shí)交換機(jī)不會(huì)使用流行為中定義的動(dòng)作對(duì)此類(lèi)報(bào)文進(jìn)行處理康铭。
- 通過(guò)基于硬件的ACL匹配報(bào)文時(shí)會(huì)占用硬件資源但匹配報(bào)文的速度更快惯退。
基于軟件的ACL:
- 針對(duì)與本機(jī)交互的報(bào)文(必須上送CPU處理的報(bào)文),需要由軟件實(shí)現(xiàn)來(lái)匹配報(bào)文的ACL从藤,這時(shí)ACL是被上層軟件所引用催跪。
-例如配置登錄用戶(hù)控制功能時(shí)引用ACL,對(duì)Telnet夷野、FTP懊蒸、TFTP、SNMP和WEB用戶(hù)進(jìn)行控制的ACL悯搔,在路由協(xié)議骑丸、組播協(xié)議中引用的ACL等。 - 需要注意的是妒貌,當(dāng)ACL被上層軟件引用時(shí)通危,交換機(jī)對(duì)匹配此ACL的報(bào)文采取的動(dòng)作由ACL規(guī)則中定義的動(dòng)作(deny或permit)決定。
- 當(dāng)ACL被上層軟件引用時(shí)灌曙,如果報(bào)文沒(méi)有與ACL中的規(guī)則匹配菊碟,此時(shí)交換機(jī)對(duì)此類(lèi)報(bào)文采取的動(dòng)作是deny,即拒絕報(bào)文通過(guò)平匈。
- 通過(guò)基于軟件的ACL匹配報(bào)文時(shí)框沟,會(huì)消耗CPU資源。
ACL的應(yīng)用
ACL應(yīng)用分類(lèi)
可以應(yīng)用ACL的模塊很多增炭,但主要分為以下四類(lèi):
業(yè)務(wù)分類(lèi) | 應(yīng)用場(chǎng)景 | 涉及業(yè)務(wù)模塊 |
---|---|---|
登錄控制 | 對(duì)交換機(jī)的登錄權(quán)限進(jìn)行控制忍燥,允許合法用戶(hù)登錄,拒絕非法用戶(hù)登錄隙姿,從而有效防止未經(jīng)授權(quán)用戶(hù)的非法接入梅垄,保證網(wǎng)絡(luò)安全性。 例如,一般情況下交換機(jī)只允許管理員登錄队丝,非管理員用戶(hù)不允許隨意登錄靡馁。這時(shí)就可以在Telnet中應(yīng)用ACL,并在ACL中定義哪些主機(jī)可以登錄机久,哪些主機(jī)不能臭墨。 |
Telnet、SNMP膘盖、FTP胧弛、TFTP、SFTP侠畔、HTTP |
對(duì)轉(zhuǎn)發(fā)的報(bào)文進(jìn)行過(guò)濾 | 對(duì)轉(zhuǎn)發(fā)的報(bào)文進(jìn)行過(guò)濾结缚,從而使交換機(jī)能夠進(jìn)一步對(duì)過(guò)濾出的報(bào)文進(jìn)行丟棄、修改優(yōu)先級(jí)软棺、重定向红竭、IPSEC保護(hù)等處理。 例如喘落,可以利用ACL茵宪,降低P2P下載、網(wǎng)絡(luò)視頻等消耗大量帶寬的數(shù)據(jù)流的服務(wù)等級(jí)瘦棋,在網(wǎng)絡(luò)擁塞時(shí)優(yōu)先丟棄這類(lèi)流量眉厨,減少它們對(duì)其他重要流量的影響。 |
QoS流策略兽狭、NAT憾股、IPSEC |
對(duì)上送CPU處理的報(bào)文進(jìn)行過(guò)濾 | 對(duì)上送CPU的報(bào)文進(jìn)行必要的限制,可以避免CPU處理過(guò)多的協(xié)議報(bào)文造成占用率過(guò)高箕慧、性能下降服球。 例如,發(fā)現(xiàn)某用戶(hù)向交換機(jī)發(fā)送大量的ARP攻擊報(bào)文颠焦,造成交換機(jī)CPU繁忙斩熊,引發(fā)系統(tǒng)中斷。這時(shí)就可以在本機(jī)防攻擊策略的黑名單中應(yīng)用ACL伐庭,將該用戶(hù)加入黑名單粉渠,使CPU丟棄該用戶(hù)發(fā)送的報(bào)文。 |
黑名單圾另、白名單霸株、用戶(hù)自定義流 |
路由過(guò)濾 | ACL可以應(yīng)用在各種動(dòng)態(tài)路由協(xié)議中,對(duì)路由協(xié)議發(fā)布和接收的路由信息進(jìn)行過(guò)濾集乔。 例如去件,可以將ACL和路由策略配合使用,禁止交換機(jī)將某網(wǎng)段路由發(fā)給鄰居路由器。 |
BGP尤溜、IS-IS倔叼、OSPF、OSPFv3宫莱、RIP丈攒、RIPng、組播協(xié)議 |
ACL應(yīng)用中業(yè)務(wù)模塊的處理機(jī)制
各類(lèi)ACL應(yīng)用的業(yè)務(wù)模塊對(duì)命中/未命中ACL的處理機(jī)制是各不相同的授霸。
例如肥印,在流策略中應(yīng)用ACL時(shí),如果ACL中存在規(guī)則但報(bào)文未匹配上绝葡,該報(bào)文仍可以正常通過(guò);但在Telnet中應(yīng)用ACL腹鹉,這種情況下藏畅,該報(bào)文就無(wú)法正常通過(guò)了。
再如功咒,在黑名單中應(yīng)用ACL時(shí)愉阎,無(wú)論ACL規(guī)則配置成permit還是deny,只要報(bào)文命中了規(guī)則力奋,該報(bào)文都會(huì)被系統(tǒng)丟棄榜旦,其他模塊卻不存在這種情況。
所以景殷,大家在配置ACL規(guī)則并應(yīng)用到業(yè)務(wù)模塊中時(shí)溅呢,一定要格外小心。
業(yè)務(wù)模塊 | 匹配上了permit規(guī)則 | 匹配上了deny規(guī)則 | ACL中配置了規(guī)則猿挚,但未匹配上任何規(guī)則 | ACL中沒(méi)有配置規(guī)則 | ACL未創(chuàng)建 |
---|---|---|---|---|---|
Telnet | permit(允許登錄) | deny(拒絕登錄) | deny(拒絕登錄) | permit(允許登錄) | permit(允許登錄) |
HTTP | permit(允許登錄) | deny(拒絕登錄) | deny(拒絕登錄) | permit(允許登錄) | permit(允許登錄) |
SNMP | permit(允許登錄) | deny(拒絕登錄) | deny(拒絕登錄) | permit(允許登錄) | permit(允許登錄) |
FTP | permit(允許登錄) | deny(拒絕登錄) | deny(拒絕登錄) | permit(允許登錄) | permit(允許登錄) |
TFTP | permit(允許登錄) | deny(拒絕登錄) | deny(拒絕登錄) | permit(允許登錄) | permit(允許登錄) |
SFTP | permit(允許登錄) | deny(拒絕登錄) | deny(拒絕登錄) | permit(允許登錄) | permit(允許登錄) |
流策略 | 流行為是permit時(shí):permit(允許通過(guò)) 流行為是deny時(shí):deny(丟棄報(bào)文) |
deny(丟棄報(bào)文) | permit(功能不生效咐旧,按照原轉(zhuǎn)發(fā)方式進(jìn)行轉(zhuǎn)發(fā)) | permit(功能不生效,按照原轉(zhuǎn)發(fā)方式進(jìn)行轉(zhuǎn)發(fā)) | permit(功能不生效绩蜻,按照原轉(zhuǎn)發(fā)方式進(jìn)行轉(zhuǎn)發(fā)) |
NAT | permit(進(jìn)行NAT轉(zhuǎn)換) | permit(功能不生效铣墨,按照原轉(zhuǎn)發(fā)方式進(jìn)行轉(zhuǎn)發(fā)) | permit(功能不生效,按照原轉(zhuǎn)發(fā)方式進(jìn)行轉(zhuǎn)發(fā)) | permit(功能不生效办绝,按照原轉(zhuǎn)發(fā)方式進(jìn)行轉(zhuǎn)發(fā)) | permit(功能不生效伊约,按照原轉(zhuǎn)發(fā)方式進(jìn)行轉(zhuǎn)發(fā)) |
IPSEC | permit(數(shù)據(jù)流經(jīng)過(guò)IPSec處理后再轉(zhuǎn)發(fā)) | 不允許出現(xiàn)此情況 | permit(功能不生效,按照原轉(zhuǎn)發(fā)方式進(jìn)行轉(zhuǎn)發(fā)) | 不允許出現(xiàn)此情況 | 不允許出現(xiàn)此情況 |
- | - | - | 本機(jī)防攻擊策略 | - | - |
白名單 | permit(CPU優(yōu)先處理) | deny(丟棄報(bào)文) | permit (功能不生效孕蝉,正常上送報(bào)文) | permit(功能不生效屡律,正常上送報(bào)文) | permit(功能不生效,正常上送報(bào)文) |
黑名單 | deny(丟棄報(bào)文) | deny(丟棄報(bào)文) | permit (功能不生效降淮,正常上送報(bào)文) | permit (功能不生效疹尾,正常上送報(bào)文) | permit (功能不生效,正常上送報(bào)文) |
用戶(hù)自定義流 | 用戶(hù)自定義流的處理動(dòng)作是deny時(shí):deny(丟棄報(bào)文) 動(dòng)作是car時(shí):permit(進(jìn)行CAR限速) |
deny(丟棄報(bào)文) | permit (功能不生效,按照原轉(zhuǎn)發(fā)方式進(jìn)行轉(zhuǎn)發(fā)) | permit (功能不生效纳本,正常上送報(bào)文) | permit (功能不生效窍蓝,正常上送報(bào)文) |
- | - | 路由 | - | - | |
Route Policy | 匹配模式是permit時(shí):permit(允許執(zhí)行路由策略) 匹配模式是deny時(shí):deny(不允許執(zhí)行路由策略) |
deny(功能不生效,不允許執(zhí)行路由策略) | deny(功能不生效繁成,不允許執(zhí)行路由策略) | permit(對(duì)經(jīng)過(guò)的所有路由生效) | deny(功能不生效吓笙,不允許執(zhí)行路由策略) |
Filter Policy | permit(允許發(fā)布或接收該路由) | deny(不允許發(fā)布或接收該路由) | deny(不允許發(fā)布或接收該路由) | deny(不允許發(fā)布或接收路由) | permit(允許發(fā)布或接收路由) |
- | - | - | 組播 | - | - |
igmp-snooping ssm-policy | permit(允許加入SSM組播組范圍) | deny(禁止加入SSM組地址范圍) | deny(禁止加入SSM組地址范圍) | deny(禁止加入SSM組地址范圍,所有組都不在SSM組地址范圍內(nèi)) | deny(禁止加入SSM組地址范圍巾腕,只有臨時(shí)組地址范圍232.0.0.0~232.255.255.255在SSM組地址范圍內(nèi)) |
igmp-snooping group-policy | 配置了default-permit時(shí):permit(允許加入組播組) 未配置default-permit: permit(允許加入組播組) |
配置了default-permit時(shí):deny(禁止加入組播組) 未配置default-permit:deny (禁止加入組播組) |
配置了default-permit時(shí):permit(允許加入組播組) 未配置default-permit:deny(禁止加入組播組) |
配置了default-permit時(shí):permit(允許加入組播組) 未配置default-permit:deny(禁止加入組播組) |
配置了default-permit時(shí):permit(允許加入組播組) 未配置default-permit:deny(禁止加入組播組) |
ACL的分類(lèi)
分類(lèi) | 適用的IP版本 | 功能介紹 | 說(shuō)明 |
---|---|---|---|
基本ACL | IPv4 | 可使用IPv4報(bào)文的源IP地址面睛、分片標(biāo)記和時(shí)間段信息來(lái)定義規(guī)則。 | 基本IPv4 ACL簡(jiǎn)稱(chēng)基本ACL尊搬。編號(hào)范圍為2000~2999叁鉴。 |
高級(jí)ACL | IPv4 | 既可使用IPv4報(bào)文的源IP地址,也可使用目的地址佛寿、IP優(yōu)先級(jí)幌墓、ToS、IP協(xié)議類(lèi)型冀泻、ICMP類(lèi)型常侣、TCP源端口/目的端口、UDP(User Datagram Protocol)源端口/目的端口號(hào)等來(lái)定義規(guī)則弹渔。 | 高級(jí)IPv4 ACL簡(jiǎn)稱(chēng)高級(jí)ACL胳施。編號(hào)范圍為3000~3999。 |
二層ACL | IPv4&IPv6 | 可根據(jù)報(bào)文的以太網(wǎng)幀頭信息來(lái)定義規(guī)則肢专,如根據(jù)源MAC(Media Access Control)地址舞肆、目的MAC地址、以太幀協(xié)議類(lèi)型等博杖。 | 編號(hào)范圍為4000~4999胆绊。 |
用戶(hù)自定義ACL | IPv4&IPv6 | 可根據(jù)偏移位置和偏移量從報(bào)文中提取出一段內(nèi)容進(jìn)行匹配。 | 編號(hào)范圍為5000~5999欧募。 |
用戶(hù)ACL | IPv4 | 既可使用IPv4報(bào)文的源IP地址或源UCL(User Control List)組压状,也可使用目的地址或目的UCL組、IP協(xié)議類(lèi)型跟继、ICMP類(lèi)型种冬、TCP源端口/目的端口、UDP源端口/目的端口號(hào)等來(lái)定義規(guī)則舔糖。 | 編號(hào)范圍為6000~6999娱两。 |
基本ACL6 | IPv6 | 可使用IPv6報(bào)文的源IP地址、分片標(biāo)記和時(shí)間段信息來(lái)定義規(guī)則金吗。 | 基本IPv6 ACL簡(jiǎn)稱(chēng)基本ACL6十兢。編號(hào)范圍為2000~2999趣竣。 |
高級(jí)ACL6 | IPv6 | 可以使用IPv6報(bào)文的源地址、目的地址旱物、IP承載的協(xié)議類(lèi)型遥缕、針對(duì)協(xié)議的特性(例如TCP的源端口、目的端口宵呛、ICMPv6協(xié)議的類(lèi)型单匣、ICMPv6 Code)等內(nèi)容定義規(guī)則。 | 高級(jí)IPv6 ACL簡(jiǎn)稱(chēng)高級(jí)ACL6宝穗。編號(hào)范圍為3000~3999户秤。 |
基本ACL和基本ACL6、高級(jí)ACL和高級(jí)ACL6對(duì)應(yīng)的編號(hào)可以相同逮矛,二者互不影響鸡号。
ACL匹配順序
一個(gè)ACL中可以包含多個(gè)規(guī)則,而每個(gè)規(guī)則都指定不同的報(bào)文匹配選項(xiàng)须鼎,這些規(guī)則可能存在重復(fù)或矛盾的地方鲸伴,在將一個(gè)報(bào)文和ACL的規(guī)則進(jìn)行匹配的時(shí)候,到底采用哪些規(guī)則呢莉兰?就需要確定規(guī)則的匹配順序。
ACL支持兩種匹配順序:
配置順序(config):按照用戶(hù)配置規(guī)則的先后順序進(jìn)行規(guī)則匹配礁竞。即按ACL規(guī)則編號(hào)從小到大的順序進(jìn)行匹配
自動(dòng)排序(auto):按照“深度優(yōu)先”的順序進(jìn)行規(guī)則匹配糖荒。“深度優(yōu)先”算法根據(jù)規(guī)則的精確度排序模捂,匹配條件(如協(xié)議類(lèi)型捶朵、源和目的IP地址范圍等)限制越嚴(yán)格越精確。
若“深度優(yōu)先”的順序相同狂男,則匹配該規(guī)則時(shí)按rule-id從小到大排列综看。
ACL類(lèi)型 | 匹配順序(從高到低) |
---|---|
基本ACL&ACL6 | 1. VPN實(shí)例。 2. 源IP地址范圍岖食,源IP地址范圍泻毂(IP地址通配符掩碼中“0”位的數(shù)量多)的規(guī)則優(yōu)先。 3. 規(guī)則編號(hào)泡垃,規(guī)則編號(hào)小的優(yōu)先析珊。 |
高級(jí)ACL&ACL6 | 1. VPN實(shí)例 2. 協(xié)議范圍,指定了IP協(xié)議承載的協(xié)議類(lèi)型的規(guī)則優(yōu)先蔑穴。 3. 源IP地址范圍忠寻,源IP地址范圍小(IP地址通配符掩碼中“0”位的數(shù)量多)的規(guī)則優(yōu)先姚糊。 4. 目的IP地址范圍飞涂,目的IP地址范圍小(IP地址通配符掩碼中“0”位的數(shù)量多)的規(guī)則優(yōu)先课锌。 5. 四層端口號(hào)(TCP/UDP端口號(hào))范圍纵朋,四層端口號(hào)范圍小的規(guī)則優(yōu)先柿顶。 6. 規(guī)則編號(hào),規(guī)則編號(hào)小的優(yōu)先倡蝙。 |
二層ACL | 1. 二層協(xié)議類(lèi)型通配符掩碼九串,通配符掩碼大(協(xié)議類(lèi)型通配符掩碼中“1”位的數(shù)量多)的規(guī)則優(yōu)先。 2. 源MAC地址范圍寺鸥,源MAC地址范圍兄砼ァ(MAC地址通配符掩碼中“1”位的數(shù)量多)的規(guī)則優(yōu)先。 3. 目的MAC地址范圍胆建,目的MAC地址范圍锌镜汀(MAC地址通配符掩碼中“1”位的數(shù)量多)的規(guī)則優(yōu)先。 4. 規(guī)則編號(hào)笆载,規(guī)則編號(hào)小的優(yōu)先扑馁。 |
用戶(hù)ACL | 1. 協(xié)議范圍,指定了IP協(xié)議承載的協(xié)議類(lèi)型的規(guī)則優(yōu)先凉驻。 2. 源IP地址范圍腻要。如果規(guī)則的源IP地址均為IP網(wǎng)段,則源IP地址范圍欣缘恰(IP地址通配符掩碼中“0”位的數(shù)量多)的規(guī)則優(yōu)先雄家,否則,源IP地址為IP網(wǎng)段的規(guī)則優(yōu)先于源IP地址為UCL組的規(guī)則胀滚。 3. 目的IP地址范圍趟济。如果規(guī)則的目的IP地址均為IP網(wǎng)段,則目的IP地址范圍醒柿(IP地址通配符掩碼中“0”位的數(shù)量多)的規(guī)則優(yōu)先顷编,否則,目的IP地址為IP網(wǎng)段的規(guī)則優(yōu)先于目的IP地址為UCL組的規(guī)則剑刑。 4. 四層端口號(hào)(TCP/UDP端口號(hào))范圍媳纬,四層端口號(hào)范圍小的規(guī)則優(yōu)先。 5. 規(guī)則編號(hào)施掏,規(guī)則編號(hào)小的優(yōu)先层宫。 |
相比config模式的ACL,auto模式ACL的規(guī)則匹配順序更為復(fù)雜其监,但是auto模式ACL有其獨(dú)特的應(yīng)用場(chǎng)景萌腿。例如,在網(wǎng)絡(luò)部署初始階段抖苦,為了保證網(wǎng)絡(luò)安全性毁菱,管理員定義了較大的ACL匹配范圍米死,用于丟棄不可信網(wǎng)段范圍的所有IP報(bào)文。隨著時(shí)間的推移贮庞,實(shí)際應(yīng)用中需要允許這個(gè)大范圍中某些特征的報(bào)文通過(guò)峦筒。此時(shí),如果管理員采用的是auto模式窗慎,則只需要定義新的ACL規(guī)則物喷,無(wú)需再考慮如何對(duì)這些規(guī)則進(jìn)行排序避免報(bào)文被誤丟棄。
當(dāng)ACL的匹配順序?yàn)閏onfig時(shí)遮斥,用戶(hù)可以修改該ACL中的任何一條已經(jīng)存在的規(guī)則峦失,在修改ACL中某條規(guī)則時(shí),該規(guī)則中沒(méi)有修改到的部分仍舊保持原來(lái)的狀態(tài)术吗。當(dāng)ACL匹配順序?yàn)閍uto時(shí)尉辑,用戶(hù)不能修改該ACL中的任何一條已經(jīng)存在的規(guī)則,否則系統(tǒng)會(huì)提示錯(cuò)誤信息较屿。
路由器和交換機(jī)配置ACL的區(qū)別(800解釋?zhuān)?/h1>
路由器接口應(yīng)用traffic-policy后隧魄,對(duì)到達(dá)該接口的所有流量起作用,例如在接口的traffic-policy inbound方向引用的訪問(wèn)列表中禁止某源地址隘蝎,在vty的訪問(wèn)列表中允許該地址登錄购啄,實(shí)際的效果是該地址不能通過(guò)vty登錄。
交換機(jī)接口應(yīng)用traffic-policy后嘱么,對(duì)通過(guò)該交換機(jī)的流量起作用狮含,例如在接口的traffic-policy inbound方向引用的訪問(wèn)列表中禁止某源地址,在vty的訪問(wèn)列表中允許該地址登錄拱撵,實(shí)際的效果是該地址可以通過(guò)vty登錄辉川。即交換機(jī)vty上應(yīng)用訪問(wèn)列表是交由上層軟件處理的表蝙,不受接口上traffic-policy的影響拴测。