撥接導向路由設定,主要分成設定靜態路由、定義有興趣的網路封包、將設定套用在指定的網路介面等三個步驟。上一期已經詳細介紹第一步驟,也就是如何設定靜態路由。而這一期的文章將繼續說明之後的設定該如何進行。
設定靜態路由後的下一個步驟是要定義有興趣的封包,這個步驟的目的在於讓Cisco設備知道當收到怎樣的封包時,才要自動開啟撥接導向路由連線。而定義有興趣的封包,這裡是透過存取控制清單(ACL)來達成。
存取控制清單是一個很重要的網路管理知識,這一篇文章會著重在這個重點,如果讀者對於如何在Cisco網路設備上使用存取控制清單並不了解,筆者也會在這裡以深入淺出的口吻,讓讀者以最快的速度學習到重點,並且學會如何使用在撥接導向路由設定上。
撥接導向路由簡介
撥接導向路由(DDR)可以允許在一般的撥接設備環境中,讓兩個以上的Cisco路由器動態地做連線。一般而言,撥接導向路由技術使用在ISDN網路或PSTN網路中,用於傳輸量少或是會定期做網路傳輸動作的網路連線。簡單地說,撥接導向路由在有需要傳送資料時才會建立連線。
撥接導向路由運作過程
接下來說明一個撥接導向路由連線是如何產生的。就Cisco路由器而言,產生一個連線讓雙方傳遞資料之前,當然必須要知道雙方的傳遞網路路徑。
第一步驟:決定網路路徑與傳輸介面
一旦Cisco路由器設備收到封包,首先去查看本地端的路由表格(Routing Table)以便於了解目前路由表中是否擁有已知路徑前往目的地,若擁有已知的網路路徑,當然也會知道要從哪個介面把這個網路封包傳送出去,這也是第一個步驟主要的工作內容。
第二步驟:決定是否為感興趣的封包
決定要傳送出去的介面之後,會先觀察如果傳出的介面被設定為使用撥接導向路由的話(設定的第三步驟),則會從網路管理人員事先已經定義的感興趣(Interesting)封包的條件(設定的第二步驟),來決定這個封包是否為感興趣的封包,所謂的感興趣的封包係指任何可以用來啟動(Trigger)一個撥號連線(Call)的封包。
第三步驟:決定下一個設備與撥號動作
接下來路由器設備會決定下一個設備的位置在哪裡,然後決定要進行的撥號動作為何。
第四步驟:建立連線與傳遞封包
再來就是從撥號清單中查看目前這個介面是否連接著遠端的目的地,如果目前這個介面連接著所要的遠端目的地,就會送出封包,而這個封包若是感興趣的封包,則會一併重置(Reset)閒置計時器(Idle Timer)。
一旦這個連線建立,基本上,所有的網路封包都可以通行,不過在收到感興趣的網路封包之後,就會重置閒置計時器。
如果目前這個介面並沒有連接到遠端的目的地,則使用BRI的路由器就會使用D channel來發送建立連線(Call Setup)的資訊。等到連線建立完成後,所有的網路封包就都會被傳遞,其中當然包含感興趣的和不感興趣的,那些所謂不感興趣的(Uninteresting)網路封包可能就是包含資料與路由更新等等。
第五步驟:中斷連線
剛才提到,一旦收到感興趣的網路封包,就會重置閒置計時器。因此,如果沒有收到感興趣的封包,則閒置計時器就會開始計時,一旦閒置計時器持續計時到達一定的時間,連線就會中斷。因此,可以發現連線的中斷動作是由閒置計時器所控制的。
撥接導向路由的設定方式
基本上,可以做一套簡單的撥接導向路由的設定,裡面擁有單一套撥號參數設定,然後套用於一個介面上,而這樣的基本撥接導向路由設定,稱之為Legacy DDR。
如果讀者需要在同一個介面上套用多個不同的撥接導向路由設定值,則可以透過使用Profile來達到這個目的。
了解這些差異後,就來看看應該要如何設定撥接導向路由。基本上,設定撥接導向路由分成三個主要的步驟:
STEP 1:建立靜態路由以便決定如何前往目的地。這裡會建議使用靜態路由,若是使用動態路由,則交換路由表時可能就會觸發撥號的行為,這就不是原先所想要的情況。
STEP 2:定義何謂有興趣的網路封包,也就是怎樣的網路封包可以用來啟動這個連線。
STEP 3:設定撥號相關的資訊,就像是電話系統的電話號碼一樣。
不過,交換機和路由器的一些基本設定值都必須在這些步驟之前就要先設定完成。所以大致上來看,撥接導向路由的連線架構圖會像是下面這樣的網路圖:
一開始,由左邊的伺服器K發送有興趣的封包給路由器A,接著路由器A收到之後,發現是有興趣的封包,就會啟動撥號路由連線。
然後,經由DCE設備前往ISDN或是其他類型的網路到達目的地端的DCE設備。最後,透過目的地端的路由器設備B傳給目的地端。
第一步驟:設定靜態路由
這個步驟於上一期的文章中詳細介紹過,因此這裡就不再詳細說明,只是簡單介紹一下。首先,讀者要了解,為什麼這裡要使用靜態路由?由於動態路由之所以可以一直得到正確的訊息,是因為各個路由器設備之間不斷互相分享Routing Table的成果,所以使用動態路由的作法,在網路有任何改變的時候,是不需要更動Routing Table。
不過,由於現在要介紹的撥接導向路由是只有在需要的時候才傳遞資料,因此不適合使用動態路由,否則會因為動態路由須要隨時得到最正確的Routing Table而一直有傳遞資料,觸發撥接導向路由的可能性。
設定靜態路由的指令如下所示:
若要檢視靜態路由的設定值,可執行下面這個指令:
詳細內容請參閱65期的網管人雜誌「需求導向的路由技術與設定(一)」文章的說明。
第二步驟:定義有興趣的封包
設定好靜態路由之後,接下來定義有興趣的封包是什麼。一旦定義好何謂有興趣的封包之後,往後只要有收到所定義的有興趣的封包,就會建立撥接導向的路由連線。
該設定的指令格式如下所示:
在上面的指令格式中,粗體為關鍵字,不可變更,而斜體部分是要替換成真正要執行的資料。這個指令為dialer-list,而後面可以指定網路協定,接著就是指定是要允許(Permit)還是拒絕(Deny)。
最後則是接上存取清單的編號。所以可以清楚發現,詳細的封包定義是在存取控制清單中所設定的。
因此,在執行上面這個指令之前,必須先把存取控制清單設定好,但要如何設定存取控制清單呢?下面就介紹存取控制清單和設定方式。
存取控制清單簡介
存取控制清單(Access Control List,ACL)顧名思義就是一個清單,內容包含一些「規則」,也可以視為條件,用來指導Cisco路由器設備如何辨識哪些網路封包,以及要對這些網路封包做哪些動作。
例如,網路管理人員可能會想要阻絕某些網路封包,而希望只允許某些特定的網路封包,而網路管理人員在Cisco路由器設備上設定好存取控制清單之後,當網路封包通過Cisco路由器設備時,就會依據存取控制清單的內容來決定是否要讓這個網路封包經過。
這有點類似一般基本的防火牆過濾網路封包的功能,這樣來想,讀者可能就比較容易理解。
存取控制清單的種類與差異
在Cisco IOS上,若不設定存取控制清單也可以使用Cisco網路設備,只是如果適當使用的話,會更好。基本上,存取控制清單分為以下兩種類型:
1. 標準型存取控制清單(Standard ACL)
2. 延伸型存取控制清單(Extended ACL)
而這兩種存取控制清單的差異包含:
1. 檢查網路封包的條件不同
2. 所能處理的網路協定不同
3. 識別碼範圍不同
針對第一個差異,標準型存取控制清單與延伸型存取控制清單最大的不同之處在於,標準型是會檢查網路封包的來源IP位址,而延伸型存取控制清單則會檢查網路封包的來源IP位址和目的地IP位址。
至於所能處理的網路協定部分,標準型存取控制清單只能針對所有的網路協定來做處理,不能針對特定的網路協定指定允許或拒絕的動作處理,但是延伸型存取控制清單可以針對特定的網路協定做處置。
由此看來,延伸型的存取控制清單的能力比較強大,能設定的東西比較多。延伸型存取控制清單中的規則除了可以指定網路協定外,還可以在協定後面加上埠的編號,以便指明要套用在怎樣的埠的網路封包。
一般而言,網路管理人員都會指明比較常見的埠編號(Well Known Ports),底下列出一些常見的埠編號和所對應的網路服務:
最後說明識別碼的不同部分。在存取控制清單中,每一條規則都有其特定的識別碼(ID),以便於辨識每一條專屬的存取控制規則,不過標準型存取控制清單和延伸型存取控制清單所使用的識別碼範圍是不同的。
標準型存取控制清單的識別碼範圍是在1~99以及1300~1999之間,而延伸型存取控制清單的識別碼範圍則是100~199以及2000~2699。由此可以看出,標準型存取控制清單所能設定的規則數目一共有799個,而延伸型存取控制清單所能設定的規則數目一樣也是799個,但所使用的識別碼範圍不同,這點要稍微注意一下。
以下就是針對這兩種存取控制清單識別碼的整理:
Inbound和Outbound存取控制清單
前面提過,標準型存取控制清單的存取控制規則只能針對來源位址進行過濾,以便決定是否要允許還是拒絕所對應的網路封包,所以這些網路封包指的都是所有的TCP/IP網路協定,對於網路協定這一點,標準型存取控制清單是不能設定的。
另外,由於延伸型存取控制清單的規則可以針對來源端位址和目的端位址來過濾網路封包,因此針對Cisco路由器設備上的某個埠怎樣的情況稱為「Inbound」?而怎樣的情況又被稱為「Outbond」呢?先來看下面這個圖例。
假設中間是Cisco路由器設備,左右各接上一個介面連到不同的網段,只要是從這台路由器設備流出去的網路封包都稱為「Outbound」,如同上圖中的箭頭所示。
相反地,如果是流向路由器設備方向的網路封包,則為「Inbound」,如同下圖所示:
Inbound與Outbound存取控制清單的套用時機
假設一個Cisco路由器設備沒有設定存取控制清單,當拿到一個網路封包時,會做怎樣的處理,其流程如下圖所示:
沒有使用存取控制清單的流程看起來其實並不複雜,接下來,說明所謂的Outbound存取控制清單的運作流程,如下圖所示:
以上就是Outbound存取控制清單的運作流程,看起來可能有點複雜,其實並不會,Outbound存取控制清單最主要的重點在於「存取控制清單的規則是,當網路封包在準備要由Outbound介面出去的時候才做」。
相反地,Inbound存取控制清單就是在Inbound介面取得網路封包時,先套用存取控制清單以便決定是否要做進一步的動作,其中最大的差異就是動作的順序性。接著,介紹Inbound存取控制清單的運作流程,如下圖所示:
由以上的流程圖可以看出,Inbound存取控制清單的運作方式與Outbound存取控制清單的運作方式只是「套用存取控制清單」和「查詢路由表格」的順序差異。
不過,若要嚴格比較的話,Inbound存取控制清單可能擁有比較好的效能,因為若先套用存取控制清單,再決定是否要查詢路由表格的話,就可以大幅減少路由表格查詢的時間。
除此之外,符合規則的方式其實也與防火牆類似,一般存取控制清單當然都會有很多的規則,而每一個網路流量也可能符合存取控制清單中一條以上的規則,但是在決定使用哪一條規則的時候,是由第一條規則開始嘗試,一旦找到第一條符合的規則,就直接套用其符合的規則,也就是「First Match」的精神。
換句話說,假設存取控制清單中第一條規則是「允許TCP協定23埠的網路封包」,後面的規則是「拒絕TCP協定23埠的網路封包」,將因為在套用規則時會先找一條規則,所以最終結果是「允許TCP協定23埠的網路封包」。如果在存取控制清單中都找不到符合的規則,預設就會拒絕這個網路封包。
字元遮罩的使用方式
在存取控制清單中,位址的部分可以使用字元遮罩來指定一個以上的位址,不過不同的是,在存取控制清單中,位元值為0代表符合(Match)目前這個位元值所對應的位址值,若位元值為1則代表忽略(Ignore)。這一點與子網路遮罩剛好是相反的,在子網路遮罩中,位元值為0代表忽略,而位元值為1代表要符合。
舉例來說,如果存取控制清單中規則的位址部分是「192.168.10.55 0.0.0.0」,代表一定要完整符合192.168.10.55這樣的位址才能套用這個規則,因為這裡的字元遮罩是0.0.0.0,代表要檢查並符合位址中每一個位元值。
所以,若是想要將存取控制清單的某個規則套用到192.168.0.1~192.168.0.255,就代表位址中最後一個位元組可以完全忽略,所以存取控制清單規則中的位址可以是「192.168.0.0 0.0.0.255」。
設定標準型存取控制清單
先從比較簡單的標準型存取控制清單開始介紹。以下說明如何透過指令來設定標準型存取控制清單,這裡要介紹的指令分為以下幾個部分:
1. 增加一筆存取控制規則的指令。
2. 刪除特定一筆存取控制規則的指令。
3. 將特定存取控制規則套用到某介面上的指令。
4. 刪除已經套用在介面上的規則的指令。
增加一筆存取控制規則
基本的設定語法格式如下所示:
與剛剛步驟一提到的格式類似,而由於這裡要設定的是標準型存取控制清單,所以存取控制規則的識別碼範圍為1到99之間,而mask指的是字元遮罩,這個字元遮罩可輸入也可忽略,若沒有輸入字元遮罩,預設值是0.0.0.0。
字元遮罩是用來指定一個以上的位址,不過不同的是,在存取控制清單中,位元值為0代表符合(Match)目前這個位元值所對應的位址值,而位元值為1則代表忽略(Ignore)。
這點和子網路遮罩剛好是相反的。剛剛說到這裡字元遮罩的預設值是0.0.0.0,所以代表要符合前面輸入的IP位址的每一個位元才能套用這個存取控制規則。
關於字元遮罩的部分,上一篇文章已經詳細介紹過,若要了解更多有關字元遮罩的部分,可參考網管人雜誌第65期。
假設要在某台Cisco路由器設備上增加一筆存取控制規則,是可以用來允許10.1.152.43這台機器所發送過來的網路封包,則設定指令如下:
從這裡可以看出,將這條規則的識別碼設定為46。
刪除一筆存取控制規則
若要刪除某一筆存取控制規則,則使用如下的指令格式:
從指令內容中可以看出,這是標準的反向操作指令,在Cisco IOS上,很多指令的反向操作通常都只是在原本指令的前面加上no關鍵字。所以,假設要刪除剛剛上面所增加的存取控制規則,只要執行以下指令即可:
套用存取控制規則到介面上
準備好存取控制規則之後,接下來把所設定好的存取控制規則套用到介面上。其指令格式如下:
為了要設定到某個介面上,第一步要先進入特定介面的Interface Mode底下,所以讀者可以看到上面的指令的模式必須在(config-if)底下才能執行。
其中的「ip access-group」是關鍵字,後面只要接上存取控制規則的識別碼,然後指定要套用在Inbound還是Outbound。方向的選擇也可以不指定,若不指定的話,預設是只會套用在Outbound方向上。
移除已經套用在某介面上的規則
這裡的作法其實也非常類似,只要執行反向指令就可以了。原本要把規則套用在某個介面上的指令是「ip access-group」,因此,若想要將這條規則從介面上移除,也只要在原本的指令前面加上no關鍵字即可。詳細指令內容如下所示:
設定延伸型存取控制清單
至此,讀者已經學會如何使用標準型存取控制清單,不過如同前面所看到的,標準型存取控制清單中的規則功能很有限,並不能設定出複雜的存取控制規則。以下介紹幾種不同的指令:
1. 增加一筆延伸型存取控制規則的指令。
2. 套用延伸型存取控制規則到某介面的指令。
增加一筆延伸型存取控制規則
增加一筆延伸型存取控制規則的指令和標準型存取控制規則類似,只是能設定的選項比較多,其指令格式如下所示:
這個指令的關鍵字一樣也是access-list,後面接上存取控制規則的識別碼,可選擇的動作也有permit和deny。
接下來,比較不同的是延伸型存取控制規則可以選擇的網路協定,可以選擇的網路協定有TCP、IP、ICMP、UDP、GRE和IGRP等協定,GRE指的是General Routing Encapsulation,而IGRP指的是Interior Gateway Routing Protocol。
然後,指定來源端IP位址和位址字元遮罩,再來就可以指定埠,這邊可以指定從來源端哪個埠出去的網路封包才需要套用這個存取控制規則。
設定的方式就是一個比較關鍵字加上埠號碼,例如要指定來源端的21號埠的話,可以寫成eq 21。
這裡的比較關鍵字就是「eq」,其他比較關鍵字還有「lt」、「gt」和「neq」,lt就是less than,代表小於,gt是greater than,代表大於,而neq是not equal,代表不等於,原本範例中的eq則代表equal,就是等於的意思。而埠的相關設定可以不輸入,是可有可無的設定項目。
設定好來源埠之後,後面繼續加上目的端的IP位址和相對應的位址字元遮罩,同樣也可以指定埠號碼。最後,可以額外指定是否要established這個關鍵字,若設定這個關鍵字,代表要允許TCP協定的網路封包。
但是前提是這些網路封包是使用已經建立好的網路連線(Established Connection),而且這關鍵字只能套用在Inbound的網路封包上。
至於最後的log關鍵字,則代表是否要在路由器設定螢幕上顯示出即時的網路封包紀錄(Log)。不過,由於延伸型存取控制清單的設定相當複雜,其指令遠複雜於這裡所介紹的。
這裡介紹的指令是比較常見的,尤其是用在TCP協定,至於其他比較複雜的指令,以後有機會再慢慢為各位介紹。
套用延伸型存取控制規則到介面
準備好存取控制規則之後,接下來把所設定好的存取控制規則套用到介面上。
指令格式和標準型控制清單一樣,其指令格式如下:
為了要設定到某個介面上,要先進入特定介面的Interface Mode底下,所以上面指令的模式必須在(config-if)底下才能執行。
其中的「ip access-group」是關鍵字,而後面只要接上存取控制規則的識別碼,然後指定要套用在Inbound還是Outbound即可。方向的選擇也可以不指定,若不指定的話,預設是只會套用在Outbound方向上。
套用存取控制清單於撥接導向路由設定
到這裡為止,已經知道如何設定存取控制清單,回頭來看撥接導向路由,讀者就會明白,這裡的存取控制清單所要定義的就是「有興趣的網路封包」。
一旦定義好所要使用的有興趣的封包為何之後,最後要做的就是把這些存取控制清單結合到撥接導向路由的設定上,而此處所要執行的指令如下:
底下用比較真實的設定範例來為各位介紹,請看底下的指令執行範例:
在這個範例中,筆者使用編號為101的延伸型存取控制清單來定義有興趣的封包,接著再把這個存取控制清單套用於撥接導向路由設定中。
從這裡可以看出,筆者設定FTP和Telnet的網路封包做拒絕的動作,而其餘的網路封包是允許的,意思相當於只要是FTP和Telnet以外的網路封包,都可以啟動撥接導向路由。
但也不是就代表FTP和Telnet的網路封包不能透過撥接導向路由來傳送,只是FTP和Telnet的網路封包無法啟動撥接導向路由的連線。一旦這樣的連線建立之後,FTP和Telnet的網路封包還是可以被傳送的。
結語
看完本文之後,覺得很複雜嗎?撥接導向路由的設定比起之前筆者所介紹的任何主題都稍微複雜一點,因為撥接導向路由技術牽扯的概念層面比較廣泛,而存取控制清單事實上真的也很複雜。
另外,存取控制清單在大型企業中,往往都是相當複雜的設定,筆者建議讀者先用紙筆或是其他方式記下存取控制清單,最後再設定到Cisco設備中,否則一旦要更改,往往都變成是大海撈針,而其中牽扯的管理技巧,以後會慢慢提到。
目前已介紹過的內容包含廣域網路、ISDN網路、存取控制清單和靜態路由。下一期本專欄的文章會針對撥接導向路由的設定做最後一個步驟的介紹,敬請期待。