萬盛學電腦網

 萬盛學電腦網 >> 路由器知識 >> 路由器簡介 >> 思科路由器如何訪問控制列表

思科路由器如何訪問控制列表

  CISCO路由器中的access-list(訪問列表)最基本的有兩種,分別是標准訪問列表和擴展訪問列表,二者的區別主要是前者是基於目標地址的數據包過濾,而後者是基於目標地址、源地址和網絡協議及其端口的數據包過濾。

  (1)標准型IP訪問列表的格式

  —— 標准型IP訪問列表的格式如下:

  —— access-list[list number][permit |deny][source address]

  —— [address][wildcard mask][log]

  —— 下面解釋一下標准型IP訪問列表的關鍵字和參數。首先,在access和list這2個關鍵字之間必須有一個連字符"-";其次,list number的范圍在0~99之間,這表明該access-list語句是一個普通的標准型IP訪問列表語句。因為對於Cisco IOS,在0~99之間的數字指示出該訪問列表和IP協議有關,所以list number參數具有雙重功能: (1)定義訪問列表的操作協議; (2)通知IOS在處理access-list語句時,把相同的list number參數作為同一實體對待。正如本文在後面所討論的,擴展型IP訪問列表也是通過list number(范圍是100~199之間的數字)而表現其特點的。因此,當運用訪問列表時,還需要補充如下重要的規則: 在需要創建訪問列表的時候,需要選擇適當的list number參數。

  (2)允許/拒絕數據包通過

  —— 在標准型IP訪問列表中,使用permit語句可以使得和訪問列表項目匹配的數據包通過接口,而deny語句可以在接口過濾掉和訪問列表項目匹配的數據包。source address代表主機的IP地址,利用不同掩碼的組合可以指定主機。

  —— 為了更好地了解IP地址和通配符掩碼的作用,這裡舉一個例子。假設您的公司有一個分支機構,其IP地址為C類的192.46.28.0。在您的公司,每個分支機構都需要通過總部的路由器訪問Internet。要實現這點,您就可以使用一個通配符掩碼 0.0.0.255。因為C類IP地址的最後一組數字代表主機,把它們都置1即允許總部訪問網絡上的每一台主機.因此,您的標准型IP訪問列表中的access-list語句如下:

  —— access-list 1 permit 192.46.28.0 0.0.0.255

  —— 注意,通配符掩碼是子網掩碼的補充。因此,如果您是網絡高手,您可以先確定子網掩碼,然後把它轉換成可應用的通配符掩碼。這裡,又可以補充一條訪問列表的規則5。

  (3)指定地址

  —— 如果您想要指定一個特定的主機,可以增加一個通配符掩碼0.0.0.0.例如,為了讓來自IP地址為192.46.27.7的數據包通過,可以使用下列語句:

  —— Access-list 1 permit 192.46.27.7 0.0.0.0

  —— 在Cisco的訪問列表中,用戶除了使用上述的通配符掩碼0.0.0.0來指定特定的主機外,還可以使用"host"這一關鍵字。例如,為了讓來自IP地址為192.46.27.7的數據包通過,您可以使用下列語句:

  —— Access-list 1 permit host 192.46.27.7

  —— 除了可以利用關鍵字"host"來代表通配符掩碼0.0.0.0外,關鍵字"any"可以作為源地址的縮寫,並代表通配符掩碼0.0.0.0 255.255.255.255。例如,如果希望拒絕來自IP地址為192.46.27.8的站點的數據包,可以在訪問列表中增加以下語句:

  —— Access-list 1 deny host 192.46.27.8

  —— Access-list 1 permit any

  —— 注意上述2條訪問列表語句的次序。第1條語句把來自源地址為192.46.27.8的數據包過濾掉,第2條語句則允許來自任何源地址的數據包通過訪問列表作用的接口。如果改變上述語句的次序,那麼訪問列表將不能夠阻止來自源地址為192.46.27.8的數據包通過接口。因為訪問列表是按從上到下的次序執行語句的。這樣,如果第1條語句是:

  —— Access-list 1 permit any

  —— 的話,那麼來自任何源地址的數據包都會通過接口。

  (4)拒絕的奧秘

  —— 在默認情況下,除非明確規定允許通過,訪問列表總是阻止或拒絕一切數據包的通過,即實際上在每個訪問列表的最後,都隱含有一條"deny any"的語句。假設我們使用了前面創建的標准IP訪問列表,從路由器的角度來看,這條語句的實際內容如下:

  —— access-list 1 deny host 192.46.27.8

  —— access-list 1 permit any

  —— access-list 1 deny any

  —— 在上述例子裡面,由於訪問列表中第2條語句明確允許任何數據包都通過,所以隱含的拒絕語句不起作用,但實際情況並不總是如此。例如,如果希望來自源地址為

  192.46.27.8和192.46.27.12的數據包通過路由器的接口,同時阻止其他一切數據包通過,則訪問列表的代碼如下:

  —— access-list 1 permit host 192.46.27.8

  —— access-list 1 permit host 192.46.27.12

  —— 注意,因為所有的訪問列表會自動在最後包括該語句。

  —— 順便討論一下標准型IP訪問列表的參數"log",它起日志的作用。一旦訪問列表作用於某個接口,那麼包括關鍵字"log"的語句將記錄那些滿足訪問列表中"permit"和"deny"條件的數據包。第一個通過接口並且和訪問列表語句匹配的數據包將立即產生一個日志信息。後續的數據包根據記錄日志的方式,或者在控制台上顯示日志,或者在內存中記錄日志。通過Cisco IOS的控制台命令可以選擇記錄日志方式。

  擴展型IP訪問列表

  —— 擴展型IP訪問列表在數據包的過濾方面增加了不少功能和靈活性。除了可以基於源地址和目標地址過濾外,還可以根據協議、源端口和目的端口過濾,甚至可以利用各種選項過濾。這些選項能夠對數據包中某些域的信息進行讀取和比較。擴展型IP訪問列表的通用格式如下:

  —— access-list[list number][permit|deny]

  —— [protocol|protocol key word]

  —— [source address source-wildcard mask][source port]

  —— [destination address destination-wildcard mask]

  —— [destination port][log options]

  —— 和標准型IP訪問列表類似,"list number"標志了訪問列表的類型。數字100~199用於確定100個惟一的擴展型IP訪問列表。"protocol"確定需要過濾的協議,其中包括IP、TCP、UDP和ICMP等等。

  —— 如果我們回顧一下數據包是如何形成的,我們就會了解為什麼協議會影響數據包的過濾,盡管有時這樣會產生副作用。圖2表示了數據包的形成。請注意,應用數據通常有一個在傳輸層增加的前綴,它可以是TCP協議或UDP協議的頭部,這樣就增加了一個指示應用的端口標志。當數據流入協議棧之後,網絡層再加上一個包含地址信息的IP協議的頭部。

  由於IP頭部傳送TCP、UDP、路由協議和ICMP協議,所以在訪問列表的語句中,IP協議的級別比其他協議更為重要。但是,在有些應用中,您可能需要改變這種情況,您需要基於某個非IP協議進行過濾

  —— 為了更好地說明,下面列舉2個擴展型IP訪問列表的語句來說明。假設我們希望阻止TCP協議的流量訪問IP地址為192.78.46.8的服務器,同時允許其他協議的流量訪問該服務器。那麼以下訪問列表語句能滿足這一要求嗎?

  —— access-list 101 permit host 192.78.46.8

  —— access-list 101 deny host 192.78.46.12

  —— 回答是否定的。第一條語句允許所有的IP流量、同時包括TCP流量通過指定的主機地址。這樣,第二條語句將不起任何作用。

copyright © 萬盛學電腦網 all rights reserved