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

  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流量通過指定的主機地址。這樣,第二條語句將不起任何作用。