ACL原理
1.ACL概述
ACL(訪問控制列表)是應用在路由器接口的指令列表(即規則),這些規則告訴路由器:哪些數據包可以接收、哪些數據包可以拒絕
2.基本原理
ACL使用包過濾技術,在路由器上讀取OSI七層模型的第三層及第四層包頭中的信息,如源地址、目的地址、源端口、目的端口等,根據預先定義好的規則,對包進行過濾,從而達到訪向控制的目的
3.ACL的類型
1)標准ACL
根據數據包的源IP地址來允許或拒絕數據包。標准ACL的訪問控制列表號是1-99。
2)擴展ACL
根據數據包的源IP地址、目的P地址、指定協議、端口和標志來允許或拒絕數據包。擴展ACL的訪問控制列表號是100-199.
3)命名ACL
允許在標准ACL和擴展ACL中使用名稱代替表號。
4.ACL的檢查條件
5.ACL規則的匹配順序
➢如果匹配第一條規則,則不再往下檢查,路由器將決定該數據包允許通過或拒絕通過。
➢如果不匹配第一條規則,則依次在下檢查,直到有任何一條規則匹配,路由器將決定該數據包允許通過或拒絕通過,
➢如果最后沒有任何一條規則匹配。則路由器根據默認的規則將丟棄該數據包。
由此可見。數據包要么被允許,要么被拒絕。
6.ACL的應用方向
出:已經過路由器的處理,正離開路由器接口的數據包
入:已到達路由器接口的數據包,將被路由器處
ACL只對該方向的數據包進行檢查,對反方向的數據包不做任何處理
下面就來標准ACL的配置
1.創建標准ACL
Router(config)#access-list access-list-number {permit | deny} source [source-wildcard]
access-list-number:ACL表號
permit | deny:如果滿足測試條件,則允許/拒絕該通信流量
Source:數據包的源地址
source-wildcard:通配符掩碼,也稱為反碼
舉例:
Router(config)# access-list 1 permit 192.168.1.0 0.0.0.255
Router(config)# access-list 1 permit 192.168.2.2 0.0.0.0
如果反碼是0.0.0.255,那么正碼是255.255.255.0,反碼計算:用/32-正碼
2.隱含的拒絕語句
拒絕所有流量
Router(config)# access-list 1 deny 0.0.0.0 255.255.255.255
3.關鍵字host、any
host代表某一個主機,any代表所有主機
舉例:
Router(config)# access-list 1 permit host 192.168.2.2
Router(config)# access-list 1 deny any
4.刪除ACL
Router(config)# no access-list access-list-number
對於標准ACL來說,不能刪除單條ACL語句,只能刪除整個ACL,如果要改變一條或幾條ACL語句,必須刪除整個ACL,然后輸入所要的語句
Router(config)# no access-list 1
5.將標准ACL應用於接口
Router(config-if)# ip access-group access-list-number {in |out}
舉例:
Router(config-if)# ip access-group 10 in
6.取消ACL應用
Router(config-if)# no ip access-group access-list-number {in |out}
舉例:
Router(config-if)# no ip access-group 10 in
每個方向上只能有一個ACL,也就是每個接口最多只能有2個ACL;一個入方向ACL,一個出方向ACL。
標准ACL的配置實例:
如圖所示,要求配置標准ACL實現:禁止PC2訪問PC1,允許PC3訪問PC1,PC1不做要求
雙工、速率
接口地址
DHCP分配地址
創建ACL,表號為10,禁止主機192.168.20.2(即PC2)的流量,允許其他的流量,將f0/1接口變成10的入口
查看列表
驗證:PC3能ping通PC1,PC2不能ping通PC1
而PC1屬於其他網段,不在20.0的范圍,也沒有配置ACL,所以PC1被隱含的拒絕詞句拒絕了,若想讓PC1能ping通PC2和PC3,則要為PC1單獨配置一條ACL