一、訪問控制列表概述
1、訪問控制列表(ACL):讀取第三層、第四層包頭信息,根據預先丁含義好的規則對包進行過濾。
2、訪問控制列表的處理過程:如果匹配第一條規則,則不再往下檢查,路由器將決定該數據包允許通過或拒絕通過,如果不匹配第一條規則,則依次往下檢查。直到有任何一條規則匹配,如果最後沒有任何一條規則匹配,則路由器根據默認的規則將丟棄該數據包。
3、訪問控制列表的類型:標準訪問控制列表:基於源IP地址過濾數據包列表號是1~99;
擴展訪問控制列表:基於源IP地址、目的IP地址、指定協議、端口等來過濾數據包列表號是100~199.
命名訪問控制列表:命名訪問控制列表允許在標準和擴展訪問控制列表中使用名稱代替表號。
二、標準訪問控制列表
1、標準訪問控制列表的創建
全局:access-list 1 deny 192.168.1.1 0.0.0.0
全局:access-list 1 permit 192.168.1.0 0.0.0.255
通配符掩碼:也叫反碼,用二進制數0和1表示,如果某位爲1,表明這意味不需要進行匹配操作,如果爲0,表明需要嚴格匹配。
例如:192.168.1.0/24子網掩碼是255.255.255.0.其反碼可以通過255.255.255.255減去25.255.255.0得到0.0.0.255.
隱含拒絕語句:access-list 1 deny 0.0.0.0 255.255.255.255
2、將ACL應用於接口
接口模式:ip access-group 列表號 in或out(根據接口流向判斷用in還是out)
3、刪除已建立的訪問控制列表:全局:no access-list 列表號
4、接口上取消ACL:接口模式:no ip access-group 列表號 in或out
5、查看訪問控制列表:特權:show access-lists
注意:access-list 1 deny 192.168.1.1 0.0.0.0或寫爲access-list 1 deny host 192.168.1.1
access-list 1 deny 0.0.0.0 255.255.255.255.0或寫爲access-list 1 deny any
二、擴展訪問控制列表
1、eq等於、lt小於、gt大於、neq不等於
2、擴展訪問控制列表案例:
例1:全局:access-list 101 permirt ip 192.168.1.0 0.0.0.255 192.168.2.0 0.0.0.255允許192.168.1.0 訪問網絡192.168.2.0網絡的所有服務
全局:access-list 101 deny ip any any (拒絕所有)
例2:全局:access-list 101 deny tcp 192.168.1.0 0.0.0.255 host 192.168.2.2 eq 21(拒絕192.168。1.0網段訪問192.168.2.2的TCP的21端口
全局:access-list 101 permit ip any any (允許訪問所有)
例3:全局:access-list 101 deny icmp 192.168.1.0 0.0.0.255 host 192.168.2.2 echo(拒絕192.168.1.0 ping 192.168.2.2)
3、刪除擴展ACL:全局:no access-list 列表號。注意:擴展與標準ACL不能刪除單條語句,只能刪除整個ACL。
4、擴展ACL應該應用在離源地址最近的路由器上。
三、命名訪問控制列表
1、命名訪問控制列表可以配置標準命名也可配置擴展命名。
2、命名訪問控制列表的ACL語句默認第一條爲10,第二條爲20,以此類推。
3、命名ACL可以刪除單條ACL語句,而不必刪除整個ACL,並且命名ACL語句可以有選擇的插入到列表中的某個位置,是的ACL配置更加方便靈活。
4、標準命名ACL的配置;全局:ip access-list standard 名字;permit host 192.168.1.1;deny any;
命名ACL應用與接口:接口模式:ip access-group 名字 in 或out
5、擴展命名ACL的配置:全局:ip access-list extended 名字;
deny tcp 192.168.1.0 0.0.0.255 host 192.168.2.2 eq 80 拒絕1.0網段訪問2.2的web服務;permit ip any any允許所有訪問所有
實驗一
實驗名稱:命名訪問控制列表
步驟1:搭建基本環境
如圖,實現能夠ping通
在現實生活中,很多時候我們需要限某些主機在路由器上的訪問IP,下面進入步驟2
步驟2:通過擴展名命名ACL配置實現標準訪問控制列表,
根據步驟1,我們要實現pc0可以通過路由器訪問外網,而pc2不行
首先進入router0輸入:
Router(config)#ip access-list standard cd
Router(config-std-nacl)#permit host 192.168.1.1
Router(config-std-nacl)#deny 192.168.1.0 0.0.0.255
Router(config-std-nacl)#
進入接口
Router(config)#int f0/1
Router(config-if)#ip access-group cd in
Router(config-if)#
進入主機,ping一下外網的192.168.3.1主機,發現pc1是不可以ping通的。而pc0依然可以
下面,假如我們覺得PC1最近表現良好,給予其訪問外網的權利,那麼我們可以直接在列表裏面添加。
Router#show access-list
Standard IP access list cd
10 permit host 192.168.1.1 (4 match(es))
20 deny 192.168.1.0 0.0.0.255 (4 match(es))
Router#conf t
Enter configuration commands, one per line. End with CNTL/Z.
Router(config)#ip access-list standard cd
Router(config-std-nacl)#15 permit host 192.168.1.2
Router(config-std-nacl)#
首先,查看一下訪問控制表,然後將允許PC1訪問插入兩條語句中間,ping發現PC1是可以通的
如果想要刪除,我們可以全局模式:
Router(config)#no ip access-list standard cd
Router(config)#
即可。
步驟3:通過擴展名命名ACL配置實現擴展訪問控制列表
首先搭建一個如下圖的環境
實現能夠ping 通,且訪問服務器的WEB服務
如此就可以通信了,下開始控制訪問
進入router0輸入:
Router(config)#ip access-list extended cd
Router(config-ext-nacl)#permit tcp host 192.168.1.1 host 192.168.4.1 eq www
Router(config-ext-nacl)#deny ip host 192.168.1.1 host 192.168.4.1
Router(config-ext-nacl)#permit ip any any
Router(config-ext-nacl)#
Router(config)#int f0/1
outer(config-if)#ip access-group cd in
Router(config-if)#
這樣就實現了PC0訪問服務器的www服務,但是不可以訪問任何其他服務,我們驗證一下,
發現是不可以ping 的
但是可以訪問其服務
至此試驗完成
實驗結果:本次實驗注重實踐,以後在工作中常常用到,需要勤加練習,達到更好的熟練度。