現網中經常用到流政策來對網絡中的裝置互訪進行控制,ACL通路控制清單作為比對路由和流量的工具是最好用的工具,但在使用用也有一些問題需要注意。
如圖拓撲:
交換機作為網關,下聯兩個網段需要禁止互訪。
如果在交換機上配置ACL來比對流量,在VLAN10出方向使用流政策過濾會發現不起作用。
acl number 3000
rule 5 deny ip source 2.2.2.0 0.0.0.255 destination 1.1.1.0 0.0.0.255
rule 6 deny icmp source 2.2.2.0 0.0.0.255 destination 1.1.1.0 0.0.0.255
rule 10 permit ip
traffic-filter vlan 10 outbound acl 3000
問題原因應該是流政策中ACL比對的問題
華為手冊中關于ACL的說明有如下描述:
應用在流政策中的ACL不支援對上送CPU處理的協定封包進行過濾
ACL的基本原理
ACL由一系列規則組成,通過将封包與ACL規則進行比對,裝置可以過濾出特定的封包。裝置支援軟體ACL和硬體ACL兩種實作方式。
ACL的實作方式
目前裝置支援的ACL,有以下兩種實作方式。
- 軟體ACL:針對與本機互動的封包(必須上送CPU處理的封包),由軟體實作來過濾封包的ACL,比如FTP、TFTP、Telnet、SNMP、HTTP、路由協定、多點傳播協定中引用的ACL。
- 硬體ACL:針對所有封包,通過下發ACL資源到硬體來過濾封包的ACL,比如流政策、基于ACL的簡化流政策、使用者組以及為接口收到的封包添加外層Tag功能中引用的ACL。
兩者主要差別在于:
- 過濾的封包類型不同:軟體ACL用來過濾與本機互動的封包,硬體ACL可以用來過濾所有封包。
- 封包過濾方式不同:軟體ACL是被上層軟體引用來實作封包的過濾,硬體ACL是被下發到硬體來實作封包的過濾。通過軟體ACL過濾封包時,會消耗CPU資源,通過硬體ACL過濾封包時,則會占用硬體資源。通過硬體ACL過濾封包的速度更快。
- 對不比對ACL的封包的處理動作不同:當使用軟體ACL時,如果封包未比對上ACL中的規則,裝置對該封包采取的動作為deny,即拒絕封包通過;當使用硬體ACL時,如果封包未比對上ACL中的規則,裝置對該封包采取的動作為permit,即允許封包通過。
對于上送CPU處理的協定封包,可以通過在本機防攻擊中的黑名單中應用ACL進行過濾,步驟如下:
cpu-defend policy 1
blacklist 1 acl 3000
cpu-defend-policy 1 global
另外也可以用其他方法,更為清晰表達過濾的需求
方法一:
在VLAN20的入方向進行過濾
traffic-filter vlan 20 in acl 3000
方法二:
明确在接口下過濾:
全局下:
traffic-filter inbound acl 3000
traffic-filter outbound acl 3000
都可以,相當于攔截所有接口的符合ACL的封包
接口下:
inbound方向:在G0/0/2口配置traffic-filter inbound acl 3000
outbound方向:在G0/0/1口配置traffic-filter outbound acl 3000
二者選其一,推薦使用入方向過濾,邏輯清晰。
方法三:使用過濾政策
可以在VLAN下或者接口下 使用過濾政策
traffic classifier 1 operator and
if-match acl 3000
traffic behavior 1
deny
traffic policy 1
classifier 1 behavior 1
vlan 20
traffic-policy 1 inbound
//也可以在接口下 配置
// int g 0/0/2
// traffic-policy 1 inbound
//也可以在G0/0/1的出方向
//interface GigabitEthernet0/0/1
//traffic-policy 1 outbound
但不能在VLAN10的出方向配置