acl的access-list命令使用詳解
1. 什麼是ACL?
訪問控制列表(Access Control List,ACL) 是路由器和交換機介面的指令列表,用來控制埠進出的資料包。ACL適用於所有的被路由協議,如IP、IPX、AppleTalk等。這張表中包含了匹配關係、條件和查詢語句,表只是一個框架結構,其目的是為了對某種訪問進行控制。
2. ACL有什麼樣用處?
ACL可以限制網路流量、提高網路效能。例如,ACL可以根據資料包的協議,指定資料包的優先順序。
ACL提供對通訊流量的控制手段。例如,ACL可以限定或簡化路由更新資訊的長度,從而限制通過路由器某一網段的通訊流量。
ACL是提供網路安全訪問的基本手段。ACL允許主機A訪問人力資源網路,而拒絕主機B訪問。
ACL可以在路由器埠處決定哪種型別的通訊流量被轉發或被阻塞。例如,使用者可以允許E-mail通訊流量被路由,拒絕所有的Telnet通訊流量。
例如:某部門要求只能使用 WWW 這個功能,就可以通過ACL實現; 又例如,為了某部門的保密性,不允許其訪問外網,也不允許外網訪問它,就可以通過ACL實現。
3. ACL的3p規則
記住 3P 原則,您便記住了在路由器上應用 ACL 的一般規則。您可以為每種協議 (per protocol)、每個方向 (per direction)、每個介面 (per interface) 配置一個 ACL:
每種協議一個 ACL 要控制介面上的流量,必須為介面上啟用的每種協議定義相應的 ACL。
每個方向一個 ACL 一個 ACL 只能控制介面上一個方向的流量。要控制入站流量和出站流量,必須分別定義兩個 ACL。
每個介面一個 ACL 一個 ACL 只能控制一個介面(例如快速乙太網 0/0)上的流量。
ACL 的編寫可能相當複雜而且極具挑戰性。每個介面上都可以針對多種協議和各個方向進行定義。示例中的路由器有兩個介面配置了 IP、AppleTalk 和 IPX。該路由器可能需要 12 個不同的 ACL — 協議數 (3) 乘以方向數 (2),再乘以埠數 (2)。
4. ACL相關規範
(1)ACL的列表號指出了是哪種協議的ACL。各種協議有自己的ACL,而每個協議的ACL又分為標準ACL和擴充套件ACL。這些ACL是通過ACL列表號區別的。如果在使用一種訪問ACL時用錯了列表號,那麼就會出錯誤。
(2)一個ACL的配置是每協議、每介面、每方向的。路由器的一個介面上每一種協議可以配置進方向和出方向兩個ACL。也就是說,如果路由器上啟用了IP和IPX兩種協議棧,那麼路由器的一個介面上可以配置IP、IPX兩種協議,每種協議進出兩個方向,共四個ACL。
(3)ACL的語句順序決定了對資料包的控制順序。在ACL中各描述語句的放置順序是很重要的。當路由器決定某一資料包是被轉發還是被阻塞時,會按照各項描述語句在ACL中的順序,根據各描述語句的判斷條件,對資料報進行檢查,一旦找到了某一匹配條件就結束比較過程,不再檢查以後的其他條件判斷語句。
(4)最有限制性的語句應該放在ACL語句的首行。把最有限制性的語句放在ACL語句的首行或者語句中靠近前面的位置上,把“全部允許”或者“全部拒絕”這樣的語句放在末行或接近末行,可以防止出現諸如本該拒絕(放過)的資料包被放過(拒絕)的情況。
(5)新的表項只能被新增到ACL的末尾,這意味著不可能改變已有訪問控制列表的功能。如果必須改變,只有先刪除已存在的ACL,然後建立一個新ACL,將新ACL應用到相應的介面上。
(6)在將ACL應用到介面之前,一定要先建立ACL。首先在全域性模式下建立ACL,然後把它應用在介面的出方向或進方向上。在介面上應用一個不存在的ACL是不可能的。
(7)ACL語句不能被逐條的刪除,只能一次性刪除整個ACL。
(8)在ACL的最後,有一條隱含的“全部拒絕”的命令,所以在 ACL裡一定至少有一條“允許”的語句。
(9)ACL只能過濾穿過路由器的資料流量,不能過濾由本路由器上發出的資料包。
(10)在路由器選擇進行以前,應用在介面進入方向的ACL起作用。
(11)在路由器選擇決定以後,應用在介面離開方向的ACL起作用。
5. access-list
控制訪問列表有兩種:標準的控制訪問列表和擴充套件的控制訪問列表。 •標準 檢查源地址 通常允許、拒絕的是完整的協議 能夠對源地址進行過濾,是一種簡單,直接的資料控制手段 •擴充套件 檢查源地址和目的地址 通常允許、拒絕的是某個特定的協議 除了基於資料包源地址的過濾以外,還能夠對協議,目的地址,埠號進行網路流量過濾。當然,配置也更復雜 控制訪問列表的一般用法: •限制對網路的FTP訪問 •禁止一個子網到另一個子網的訪問 •允許規定主機Telnet訪問路由器 如:不允許指定的主機TELNET訪問 訪問列表的配置指南: •訪問列表的編號指明瞭使用何種協議的訪問列表 •每個埠、每個方向、每條協議只能對應於一條訪問列表 •訪問列表的內容決定了資料的控制順序 •具有嚴格限制條件的語句應放在訪問列表所有語句的最上面 •在訪問列表的最後有一條隱含宣告:deny any-每一條正確的訪問列表都至少應該有一條允許語句 •先建立訪問列表,然後應用到埠上 •訪問列表不能過濾由路由器自己產生的資料 標準訪問列表的一般配置舉例: Router# Router#configure terminal Router(config)# Router(config)#access-list 1 permit 172.16.2.0 0.0.0.255 配置的訪問列表是允許來自網路172.16.2.0的流量 •Router#configure terminal •Router(config)# •Router(config)#access-list 2 deny 172.16.3.0 0.0.0.255 •Router(config)#access-list 2 permit any •Router(config)#int s0 •Router(config-if)#ip access-group 2 out •Router(config-if)# 禁止來自網路172.16.3.0的流量!!! 擴充套件訪問列表的一般配置舉例: access-list 101 deny tcp 172.16.4.00.0.0.255 172.16.3.0 0.0.0.255 eq 21 access-list 101 deny tcp 172.16.4.0 0.0.0.255 172.16.3.0 0.0.0.255 eq 20 access-list 101 permit ip any any (implicit deny all) (access-list 101 deny ip 0.0.0.0 255.255.255.255 0.0.0.0 255.255.255.255) •拒絕子網172.16.4.0 的資料使用路由器e0口ftp到子網172.16.3.0 •允許其它資料 access-list 101 deny tcp 172.16.4.0 0.0.0.255 any eq 23 access-list 101 permit ip any any (implicit deny all) •拒絕子網 172.16.4.0 內的主機使用路由器的埠建立Telnet會話 •允許其它資料 我們來比較一下標準的和擴充套件的異同: 標準: 基於源地址 允許和拒絕完整的 TCP/IP協議 編號範圍1-99和1300-1999 擴充套件: 基於源地址和目標地址 指定TCP/IP的特定協議 和埠號 編號範圍 100-199和2000-2699 我們指定特定的主機時一般用萬用字元掩碼指明,下面我舉幾個例子: 例如172.30.16.29 0.0.0.0檢查所有的地址位可以簡寫為host (host 172.30.16.29) 所有主機: 0.0.0.0 255.255.255.255可以用any 簡寫 下面舉一個簡單的例子:R>en password: R#conf t R(config)# access-list 101 deny tcp 192.168.2.0 0.0.0.255 any eq telnet // 禁用從192.168.2.0來的telnet連線 R(config)# interface fastethernet 0/0 R(config-if)# ip access-group 101 out 至此,就成功配置了。最後別忘了wr儲存一下哦。