思科路由器中的access-list(訪問列表)最基本的有兩種,分別是標準訪問列表和擴展訪問列表,二者的區別主要是前者是基于目標地址的數據包過濾,而后者是基于目標地址、源地址和網絡協議極其端口的數據包過濾。隨著網絡的發展和用戶要求的變化,從IOS12.0開始,CISCO路由器新增加了一種基于時間的訪問列表。通過它,可以根據一天中的不同時間或者根據一星期中的不同日期(當然也可以二者結合起來)控制網絡數據包的轉發。
一、使用方法
這種基于時間的訪問列表就是在原來的標準訪問列表和擴展訪問列表中加入有效的時間范圍來更合理有效的控制網絡。它需要先定義一個時間范圍,然后在原來的各種訪問列表的基礎上應用它。并且,對于編號訪問表和名稱訪問表都適用。
二、使用規則
用time-range 命令來指定時間范圍的名稱,然后用absolute命令或者一個或者多個 periodic命令來具體定義時間范圍,IOS命令格式為:
time-range time-range-name absolute [start time date] [end time date] periodic days-of-the week hh:mm to [days-of-the week] hh:mm
我們分別來介紹一下每個命令和參數的詳細情況:
time-range:
用來定義時間范圍的命令
time-range-name:
時間范圍名稱,用來標識時間范圍,以便于在后面的訪問列表中引用
absolute:
該命令用來指定絕對時間范圍。它后面緊跟這start和 end兩個關鍵字。在這兩個關鍵字后面的時間要以24小時制、hh:mm(小時:分鐘)表示,日期要按照日/月/年來表示。可以看到,他們兩個可以都省略。如果省略start及其后面的時間,那表示與之相聯系的permit 或deny語句立即生效,并一直作用到end處的時間為止;若省略如果省略end及其后面的時間,那表示與之相聯系的permit 或deny語句在start處表示的時間開始生效,并且永遠發生作用,當然把訪問列表刪除了的話就不會起作用了。
上面講的就是命令和基本參數為了便于理解,下面我們來看兩個例子。
如果要表示每天的早8點到晚8點就可以用這樣的語句:
absolute start 8:00 end 20:00
再如,我們要使一個訪問列表從2019年08月01日早5點開始起作用,直到2019年08月31日晚24點停止作用,語句如下:
absolute start 5:00 1 August 2019 end 24:00 31 August 2019
這樣一來,我們就可以用這種基于時間的訪問列表來實現,而不用半夜跑到辦公室去刪除那個訪問列表了,這對于網絡管理員來說應該是件好事吧。接下來,讓我們看下一個periodic命令及其參數。一個時間范圍只能有一個absolute語句,但是可以有幾個periodic語句。
periodic:主要是以星期為參數來定義時間范圍的一個命令。它的參數主要有Monday、Tuesday、Wednesday、Thursday、Friday、Saturday、Sunday中的一個或者幾個的組合,也可以是daily(每天)、weekday(周一到周五)或者weekend(周末)。
我們還是來看幾個具體的例子。比如表示每周一到周五的早9點到晚10點半,就可以用:
periodic weekday 9:00 to 22:30
每周一早7點到周二的晚8點就可以用:
periodic Monday to Tuesday 20:00
好了,我們已經把這個時間范圍如何定義弄清楚了,下面讓我們看看如何在實際情況下應用這種基于時間的訪問列表。
此主題相關圖片如下:
例1:在如上圖所示的網絡中,路由器有兩個以太網接口E0和E1,分別連接著202.111.170.0和202.222.100.0兩個子網絡,其中202.111.170.50和202.222.100.100分別是WEB服務器1和WEB服務器2。還有一個串口S1,連入Internet。為了讓202.111.170.0子網公司員工在工作時間不能進行WEB瀏覽,從2019年08月1日1點到2019年08月31日晚24點這一個月中,只有在周六早7點到周日晚10點才可以通過公司的網絡訪問Internet。我們做如下的基于時間的訪問控制列表來實現這樣的功能:
Router# config t
Router(config)# interface ethernet 0
Router(config-if)#ip access-group 101 in
Router(config-if)#time-range http
Router(config-if)#absolute start 1:00 1 August 2019 end 24:00 31
August 2019 periodic Saturday 7:00 to Sunday 22:00
Router(config-if)#ip access-list 101 permit tcp any any eq 80 http
我們是在一個擴展訪問列表的基礎上再加上時間控制就達到了目的。因為是要控制WEB訪問的協議,所以必須要用擴展列表,也就是說,編號要在100-199之間。這些關于訪問列表的基礎知識,請參考其他關于Cisco或者CCNA的基礎文檔。我們定義了這個時間范圍名稱是http,這樣,我們就在列表中的最后一句方便的引用了。有了以上的詳細講解,這個很好看懂了。我們再看下面一個例子。
例2:網絡結構同上例,現在假設我們的訪問要求變了,服務器WEB2(IP:202.222.100.100)上放著的是新年賀歲版的公司主頁,我們希望在2019年12月31日24:00點前,Internet的用戶訪問的是服務器WEB1(IP:202.111.170.50)上的主頁內容,而不能訪問WEB2上的內容。在此之后的新年里,訪問的是新年版主頁而不能訪問舊版本的主頁。那么,我們利用帶有時間控制的訪問列表來自動實現這個功能,而再也不用讓網管員在新年半夜時手動刪除了。列表內容如下:
Router# config t //進入端口控制模式
Router(config)#interface serial 0 //應用名稱訪問列表web,并且是用在Serial 0的入口方向,就是數據流入路由器的時候做協議控制分析。
Router(config-if)#ip access-group web in //定義一個時間范圍名稱是changeweb
Router(config-if)# //定義擴展名稱訪問列表web
time-range changewebabsolute end 24:00 31 December 2019 //表示在新年前,只能允許訪問WEB1
Router(config-if)#ip access-list extended web //表示在新年前,只能允許訪問WEB1
permit tcp any host 202.111.170.50 eq 80 changeweb //允許所有到WEB2的web訪問
deny tcp any host 202.222.100.100 eq 80 changeweb
permit tcp any host 202.222.100.100 eq 80
這樣第七句不是在沒有時間限制的情況下全部允許了WEB2的訪問嗎?那我們的目的是如何實現的呢?不要忘記,路由器中訪問控制列表的每個表項的順序是很重要的,它是從上到下執行的,這樣,在新年之前,也就是第五、六句起左右的時候,訪問WEB2的要求已經被禁止了,所以,第七句就沒有用了,而在新年之后呢,第五、六句失效了,第七句才發揮它的作用。允許所有對WEB2的訪問請求,那么,新年之后,還能訪問WEB1服務器嗎?當然不能,因為我們第七句只允許訪問WEB2,隱含的意思就是,其余的全部禁止。
好了,看到這兒,你不是覺的你的想法都被CISCO路由器實現了?合理有效的利用基于時間的訪問控制列表,可以更有效、更安全、更方便的保護我們的內部網絡。這樣你的網絡才會更安全,網絡管理員也會更輕松!