Cisco之訪問控制列表(ACL)
訪問控制列表(ACL)是應用在路由器接口的指令列表(即規則),這些規則表用來告訴路由器,哪些數據包可以接收,哪些包需要拒絕。其基本原理如下:ACL使用包過濾技術,在路由器上讀取OSI七層模型的第三層和第四層包頭中的信息,如源地址、目的地址、源端口、目的端口等,根據預先定義的規則,對包進行過濾,從而達到訪問控制的目的。
ACL可以分為以下兩種基本類型:
標準ACL:檢查數據包的源地址,來決定是允許還是拒絕轉發數據包,使用1-99之間的數字作為表號。
擴展ACL:既能對數據包的源地址和目標地址進行檢查,也能檢查特定的協議、端口號及其它的參數。使用100-199之間的數字作為表號。
ACL是一組規則的集合,應用在路由器的某個接口上,因此對路由器的接口而言,ACL有兩個方向:
出:已經經過路由器的處理,離開路由器接口的數據包,檢查順序:先查路由表,再查出ACL。
入:已經到達路由器接口的數據包,將要被路由器處理。檢查順序:先檢查入ACL,再查詢路由表。
匹配規則:
如果匹配第一條規則,則不再繼續往下查,路由器將決定是允許或拒絕數據包通過。
如果不匹配第一條規則,則依次往下檢查,直到匹配一條規則,如果沒有任何規則匹配,路由器默認會丟棄數據包。
由以上規則可見,數據包要麽被拒絕,要麽被丟棄。如下圖:
示例 1:標準訪問控制列表
ROUTE(config)#access-list 1 deny 192.168.3.0 0.0.0.255
ROUTE(config)#int f1/0 #應用到入站方向
ROUTE(config-if)#ip access-group 1 in
ROUTE#sh ip access-lists #查看ACL
Standard IP access list 1
10 deny 192.168.3.0, wildcard bits 0.0.0.255
C:\Users\win7>ping 172.16.2.1
正在 Ping 172.16.2.1 具有 32 字節的數據:
來自 192.168.3.254 的回復: 無法訪問目標主機。
來自 192.168.3.254 的回復: 無法訪問目標主機。
來自 192.168.3.254 的回復: 無法訪問目標主機。
來自 192.168.3.254 的回復: 無法訪問目標主機。
在接口上取消ACL應用
ROUTE(config-if)#no ip access-group 1 in
C:\Users\win7>ping 172.16.2.1 #取消ACL後,可以ping通
正在 Ping 172.16.2.1 具有 32 字節的數據:
來自 172.16.2.1 的回復: 字節=32 時間=127ms TTL=252
來自 172.16.2.1 的回復: 字節=32 時間=97ms TTL=252
來自 172.16.2.1 的回復: 字節=32 時間=78ms TTL=252
來自 172.16.2.1 的回復: 字節=32 時間=84ms TTL=252
刪除ACL:
ROUTE(config)#no access-list 1
僅允許某臺主機訪問
ROUTE(config)#access-list 2 permit host 192.168.3.2
ROUTE(config)#int f1/0
ROUTE(config-if)#ip access-group 2 in
允許所有:
ROUTE(config)#access-list 2 permit any
或
ROUTE(config)#access-list 2 permit 0.0.0.0 255.255.255.255
示例 2:擴展訪問控制列表
sw1(config)#access-list 101 deny tcp any host 172.16.1.1 eq www
sw1(config)#int vlan 2
sw1(config-if)#ip access-group 101 in
sw1#sh access-lists
Extended IP access list 101
10 deny tcp any host 172.16.1.1 eq www (24 matches)
sw1#sh ip int vlan 2
Vlan2 is up, line protocol is up
Internet address is 172.16.2.254/24
Broadcast address is 255.255.255.255
Address determined by setup command
MTU is 1500 bytes
Helper address is not set
Directed broadcast forwarding is disabled
Multicast reserved groups joined: 224.0.0.5 224.0.0.6
Outgoing access list is not set
Inbound access list is 101
...
客戶端無法正常訪問:
在接口上取消ACL應用,即可正常訪問:
sw1(config-if)#int vlan 2
sw1(config-if)#no ip access-group 101 in
示例 3:命名訪問控制列表
sw1(config)#ip access-list extended name
sw1(config-ext-nacl)#deny tcp any host 172.16.1.1 eq www
sw1(config)#int vlan 2
sw1(config-if)#ip access-group name in
sw1#sh ip access-lists name
Extended IP access list name
10 deny tcp any host 172.16.1.1 eq www
禁止後,從客戶端已無法訪問,取消後可正常訪問:
sw1(config)#ip access-list extended name
sw1(config-ext-nacl)#no deny tcp any host 172.16.1.1 eq www
sw1(config-ext-nacl)#11 deny tcp 172.16.2.0 0.0.0.255 host 172.16.1.1 eq www
sw1(config-ext-nacl)#12 permit tcp 172.16.1.0 0.0.0.255 host 172.16.1.1 eq www
sw1#sh ip access-lists
Extended IP access list name
11 deny tcp 172.16.2.0 0.0.0.255 host 172.16.1.1 eq www (36 matches)
12 permit tcp 172.16.1.0 0.0.0.255 host 172.16.1.1 eq www
備註:
在路由器的接口上每個方向只能有一個ACL,即每個接口只能有兩個ACL,一個出方向ACL,一個入方向ACL。
ACL只對穿越流量起作用,而對於路由器或三層交換機本身產生的流量不起作用。
標準ACL盡可能靠盡目標,擴展ACL盡可能應用在靠近源服務器的位置。
標準和擴展ACL如果要修改,需要刪除整個ACL,而命名ACL可以通過增加或刪除ACL語句來實現。
本文出自 “一萬年太久,只爭朝夕” 博客,請務必保留此出處http://zengwj1949.blog.51cto.com/10747365/1922848
Cisco之訪問控制列表(ACL)