一、訪問控制列表是什麼?
訪問控制列表(ACL)是一種基於包過濾的訪問控制技術,它可以根據設定的條件對介面上的資料包進行過濾,允許其通過或丟棄。訪問控制列表被廣泛地應用於路由器和三層交換機,藉助於訪問控制列表,可以有效地控制使用者對網路的訪問,從而最大程度地保障網路安全。(抄自百度)
工作原理
- 當一個資料包進入一個埠,路由器檢查這個資料包是否可路由。
- 如果是可以路由的,路由器檢查這個埠是否有ACL控制進入資料包。
- 如果有,根據ACL中的條件指令,檢查這個資料包。
- 如果資料包是被允許的,就查詢路由表,決定資料包的目標埠。
- 路由器檢查目標埠是否存在ACL控制流出的資料包。
- 若不存在,這個資料包就直接傳送到目標埠
- 若存在,就再根據ACL進行取捨。然後在轉發到目的埠。(抄自百度)
二、訪問控制列表有哪些型別?
訪問控制類別可以分為標準ACL,擴充ACL,標準命名ACL,擴充命名ACL;
- access-list 是用數字來定義 acl (標準ACL和擴充套件ACL)
- ip access-list 是用名字來定義 acl(標準命名ACL和擴充套件命名ACL)
1、標準ACL
配置要點:
1) ACL預設最後有一條deny any,故允許(permit)的ACL應該寫在上面。若是禁止某網段訪問,其他網段均放通,則應該在最後加一條permit any。
2)標準的ACL只匹配源IP地址(不寫掩碼只是匹配單個ip,可以寫掩碼);
3)標準的ACL號是從1-99和1300-1999;
4)如果是單個IP地址,可寫為access-list 1 permit host 192.168.1.1
2、擴充套件ACL
三、配置要點:
1)擴充套件ACL可匹配源地址、目的地址、IP協議,tcp、udp、icmp、igmp待協議; 如要允許所有目的埠是tcp80埠的流量:access-list 100 per tcp any any eq 80
2)擴充套件ACL號為100-199和2000-2699
3、標準命名ACL
配置要點和標準acl基本一致,就是多了可以刪除特定規則;
4、擴充套件命名ACL
配置要點和標準acl基本一致,就是多了可以刪除特定規則,配置起來更加靈活;
三、如何確定ACL的IN還是OUT方向?
首先要明確IN和OUT方向是相對的,要根據資料流的方向判斷,以路由器為中心,資料流進入的方向是IN方向,資料流經過路由器轉發出去的方向是OUT方向。以下圖為例子,當資料經過e0/0到達R4,再經過e0/1轉發,則對於該路由器而已,該資料的e0/0口是IN方向,e0/1口是OUT方向,若對該資料進行做ACL,可以選擇在IN方向或者OUT方向上做都可以,後面有例子解析。
四、配置案例
拓撲如圖所示;拓撲說明:SWITCH3有PC1和PC2的閘道器,分別是192.168.3.254和192.168.2.254,SWITCH預設路由指向R4,R4和R5是路由器,執行OSPF協議,並將相應網段釋出至OSPF中,R4將靜態路由重發布至OSPF中,從而實現全網互通,此拓撲自行搭建,如有需要可聯絡本人;
再次通過拓撲說明訪問控制列表的方向,以192.168.2.1訪問5.5.5.5為例子,對於R4來說,eth0/0就是IN;eth0/1就是OUT方向;千萬不要把做訪問控制列表時候的IN和OUT方向做反了;一個訪問控制策略,可以在資料包進來之前做(in);也可以再資料包出去的時候做訪問控制列表(out)。
注:本次測試標準acl在路由器R4上做測試
1、標準ACL配置案例
不做ACL前,PC1和PC2都可以ping通5.5.5.5
(1)做個標準訪問控制列表,允許192.168.2.2訪問5.5.5.5;用於IN方向
access-list 1 permit 192.168.2.2
interface Ethernet0/0
ip access-group 1 in
結果PC1和PC2都ping不通5.5.5.5,因為訪問控制類別都沒有允許他們通過
(2)新增個access-list 1 permit 192.168.2.0 0.0.0.255
結果就是PC2(192.168.2.1)通5.5.5.5了,但是PC1(192.168.3.1)不通,原因是PC2的ip在允許的訪問控制列表裡面
show access-lists 1可以檢視命中次數
(3)測試配置錯了ACL方向,把關鍵字由in變成了out
即從把interface Ethernet0/0 ;ip access-group 1 in;變成了interface Ethernet0/0 ;ip access-group 1 out 則PC1(192.168.3.1)和PC2(192.168.2.1)都不通5.5.5.5
因為此刻對於路由器R4而言,這個訪問控制類別的邏輯變成了從ETH0/0口出去的資料,允許源ip是192.168.2.0/24這個段,所以5.5.5.5的回包會被阻攔;導致不通;
(4)做個OUT方向的訪問控制列表;做測試前需要先去掉之前配置的訪問控制列表,以免造成實驗干擾
interface Ethernet0/1
ip access-group 1 out
測試結果也是PC1(192.168.3.1)不通5.5.5.5;PC2(192.168.2.1)通5.5.5.5
2、擴充套件ACL配置案例
(1)配置擴充套件ACL,允許192.168.2.1訪問5.5.5.5,在IN方向測試
access-list 100 permit ip host 192.168.2.1 host 5.5.5.5
interface Ethernet0/0
ip access-group 100 in
因為擴充套件ACL可以指定源地址,目的地址,就可以做的更細的匹配,比如這個acl就指定只有192.168.2.1才可以訪問5.5.5.5;所以結果就是PC2(192.168.2.1)可以通5.5.5.5,不通4.4.4.4;PC1(192.168.3.1)都不通4.4.4.4和5.5.5.5
3、標準命名ACL配置案例
標準命名ACL其實就是把ACL的數字用字元來表示,優點就是可以隨意刪除指定的permit或者deny語句,但是還是隻能對源地址做限制,不夠靈活
配置標準命名ACL,允許192.168.2.1訪問所有目標ip,配置在in方向
ip access-list standard standtest1
permit 192.168.2.1
interface Ethernet0/0
ip access-group standtest1 in
測試結果就是PC2(192.168.2.1)可以通5.5.5.5和4.4.4.4;PC1(192.168.3.1)都不通5.5.5.5和4.4.4.4
同理,在OUT方向做策略,刪掉IN方向策略,結果一致;不過PC1(192.168.3.1)會ping得通4.4.4.4,因為4.4.4.4在R4上,不需要經過eth0/1出去;但是PC1不通5.5.5.5
4、擴充套件命名ACL
擴充套件命名列表是我認為做好用的,可以隨意刪除permit或者deny下面的策略,也可以對ip或者其他協議做策略,顆粒度很細,最適合日常使用;還是使用原圖拓撲,刪除做在介面上的舊的ACL
(1)配置擴充命名ACL,允許192.168.3.0/24網段ping4.4.4.4,允許192.168.2.0/24網段訪問5.5.5.5,應用在IN的方向
ip access-list extended extendtest1
50 permit icmp 192.168.3.0 0.0.0.255 host 4.4.4.4
60 permit ip 192.168.2.0 0.0.0.255 host 5.5.5.5
interface Ethernet0/0
ip access-group extendtest1 in
這個ACL比較有意思,第一條的意思是隻允許192.168.3.0/24這個段去ping4.4.4.4,除了ping其他服務都不通,ping的目標地址除了4.4.4.4以外的也不通;第二條意思是隻允許192.168.2.0/24這個段對5.5.5.5這個地址進行任意訪問,這裡面就可以看出擴充套件ACL好用多了;測試結果就是PC1(192.168.3.1)通4.4.4.4,不通5.5.5.5;PC2(192.168.2.1)不通4.4.4.4,通5.5.5.5
同理,在OUT方向做策略也是可以的;但是PC1(192.168.3.1)和PC2(192.168.2.1)ping4.4.4.4根本不會命中ACL,PC2可以通4.4.4.4和5.5.5.5;
##########################注意###############################
(1)做ACL最好是在連線外部的路由器上做,因為那樣比較好區分內外網服務,不要在內外的核心交換機做了,又去外聯路由器做,那樣比較難排查問題;
(2)ACL可以在介面上應用,包括物理介面和SVI介面等;
(3)在show run上看不到命名ACL的序列號的話,可以使用show access-lists 檢視,在用no seq進行刪除特定的ACL;
(4)交換機標準訪問控制列表不能使用no刪除部分訪問策略,比如存在配置
access-list 1 permit 192.168.1.1
access-list 1 permit 192.168.1.2
使用no access-list 1 permit 192.168.1.2並不會刪除指定一條,而是全部都刪了;通過敲命令可以發現,命令只輸入到no access-list 1就沒了,意味著這條命令是刪除了1這個訪問控制列表;要修改只能複製一份訪問控制列表做修改,刪除舊的再新建,存在侷限性
(5)最好用的是擴充命名ACL