2012年11月18日 星期日

從基本簡介到路由器設置 PPP協定一手掌握


利用PPP協定廣泛支援特性 整合多種異質網路協定
從基本簡介到路由器設置 PPP協定一手掌握

如果在企業網路環境中同時使用AppleTalk、TCP/IP、Novell IPX等多種不同的網路協定,該如何規劃才能整合多種不同的網路協定並運作得宜呢?此時就要思考什麼網路協定可以協助封裝這些不同網路協定,而且不需要在原本的網路環境中做太多額外的設定。本文所介紹的PPP協定,就是一個可以考慮的解決方案。

選擇PPP協定來整合多種不同網路協定,是因為PPP協定有一個很重要的特性:可支援多種網路層的協定,包括IP、IPX、AppleTalk等等。PPP協定的設計相當靈活,而且在網路第二層中可同時支援同步與非同步的連線。

以下將介紹PPP協定的階層式架構,由於網路設備中,Cisco產品較常被使用,因此會針對Cisco設備介紹如何設定PPP協定,以及PPP協定中重要的認證(Authentication)方式。

廣域網路簡介 

在介紹廣域網路(Wide Area Network,WAN)的設定之前,先說明基本的廣域網路概念。廣域網路與一般所謂的區域網路不同。區域網路一般是指範圍較小的網路區段,可能是同一棟大樓,或是同一層樓,或是一個比較小區域的地理位置。而廣域網路是範圍較廣的網路區段,例如跨國型的企業都會使用廣域網路將各個不同國家的分部連結起來,好讓資訊能在各個國家的分部之間流通。

PPP協定簡介 

PPP協定是普遍被使用的廣域網路協定,PPP是Point to Point Protocol的縮寫,如同名稱所示,PPP協定是指點對點的網路協定,通常用於兩個網路節點的直接連接,例如可用於兩台電腦透過電話線的網路連接,不過目前最普遍的用途是寬頻網路連線。

現在,很多ADSL網路服務供應商(ISP)提供使用者以PPP協定的方式撥接到網路服務供應商,然後連上網際網路。以往,則是使用SLIP(Serial Line Internet Protocol)協定。

SLIP協定是採用TCP/IP協定的點對點串列連線的標準。SLIP協定是很早就出現的協定,主要用在串列埠與數據機之間的連線,目前慢慢地被PPP協定取代。如下圖所示,接著介紹PPP協定的運作架構。


▲PPP協定的運作架構。


在以上這個網路架構圖中,中間兩台路由器使用PPP協定,之間的通訊採用PPP協定的資料封裝,而左邊的部分有三台電腦,分別採取不同的網路協定與使用PPP協定的路由器互相連接,由上圖可以看出,PPP協定其中一個重要的特性是可以與各種不同的網路協定互相整合。

左邊三台電腦即使採用AppleTalk、Novell IPX和TCP/IP協定,也可以同時與使用PPP協定的路由器連接並運作。而中間這台路由器,為了要銜接來自左邊各種不同網路協定的封包,PPP協定會採用NCP(Network Control Protocol)來負責上層資料的封裝過程。

另外,PPP協定還有一個重要的部分是LCP(Link Control Protocol),LCP負責底層線路控制與連接等過程,是PPP協定中最重要的部分。

若要設定使用PPP協定的路由器,可以透過以下這些實體介面來連接設定:

1. 非同步Serial介面
2. 同步Serial介面
3. 高速Serial介面(High Speed Serial Interface,HSSI)
4. 整合服務數位網路(ISDN)

PPP協定在廣域網路連線上的定位

也許讀者都聽過PPP協定,但是PPP協定到底什麼時候會用到呢?它又是什麼呢?與廣域網路有什麼關聯?

其實,PPP協定算是廣域網路在網路協定第二層封裝協定的種類之一,當網路封包要送往廣域網路之前,在網路第二層協定時,就一定會先透過特定的方式進行封裝,而為了保證能使用正確的封裝方式,所以設定Cisco設備以支援廣域網路時,必須選對正確的封裝協定,而封裝協定的選擇,與所採用的廣域網路技術及所使用的廣域網路設備有關。

有此可見,身為網路管理人員,一定要了解廣域網路所使用的封裝協定,如此才能正確地選擇,並且設定第二層封裝協定。一般廣域網路的網路協定之第二層封裝協定有以下幾個種類:HDLC、PPP、SLIP、X.25與LAPB、幀中繼(Frame Relay)以及ATM,PPP協定正是其中一種。

與PPP協定相關的RFC文件 

PPP協定相當於HDLC協定的延伸,是根據原有的HDLC協定規範而設計出來的。在RFC編號1661及編號1332文件內,都有定義PPP協定的詳細規格。PPP協定主要被定義在RFC編號1661文件中,定義了各種認證方式、加密和解密的方式、壓縮資料方式、PPP協定如何與其他網路協定合作及其交互關係。



另外,RFC編號1994文件也描述了關於PPP協定中的CHAP協定,也就是握手(Handshake)協定,用於建立撥號連接。而在RFC編號2516文件中,則定義了相當知名的PPPoE協定,PPPoE協定在乙太網路內用於傳輸PPP協定中的資料,經常被使用於ADSL。讀者家裡若使用ADSL,應該會常常看到這個縮寫。

至於RFC編號2364文件,則描述了PPPoA協定,這個協定主要用於當使用ATM網路卡來傳輸PPP協定的資料時。由於PPPoA應用在ATM網路,所以也被稱為PPPoATM。

除此之外,PPP協定甚至還在兩個網路系統之間支援多點連接,以便增加網路頻寬,在這樣的網路環境之下,PPP協定支援兩個頻寬的合併,也支援流量平衡的功能,而這些都被定義於RFC編號1717文件內。

前面提到,PPP協定分為LCP與NCP兩個部分,各自負責不同的工作內容,而關於LCP的設定部分,在RFC編號1548和編號1570文件中都有描述。

底下整理了一些與PPP協定相關的RFC文件讓讀者參考:




PPP協定的連線種類

基本上,廣域網路包含以下這些類型:Leased Line(專線)、Circuit Switched以及Packet Switched三種。而PPP協定屬於Leased Line或Circuit Switched這兩種。以下針對這兩種廣域網路的連線種類簡單介紹一下。

Leased Line類型

Leased Line就是所謂的Point-to-point或Dedicated的連線,說穿了,它就是固定的電路,也就是專線,如下圖所示。


▲Leased Line類型。

它的優點是可以保證頻寬,而且這頻寬是獨享的,不會與其他網路共享。不過,缺點是花費太高,因為是專線,所以成本相當高。在速度上,則可以到達45Mbps。

Circuit Switched類型

使用Circuit Switched這種廣域網路時,在整個網路傳輸的過程中,全部的網路連線都必須存活著,就像是撥接的方式,如下圖所示。


▲Circuit Switched類型。

事實上,這種就是「Dial On Demand」的網路類型。其實,ISDN和電話就是這種網路。以電話為例,當我們在台灣想與外國某個地方聯絡,一開始必須先撥號,一旦撥接成功後,在通訊過程中連線都不能中斷,否則整個連線就會中斷,而且也只有當需要交換資訊時才會撥號,因此就是Dial On Demand。

電話這種網路,也被稱為PSTN。關於電話網路、ISDN以及Dial On Demand這種網路類型,在未來的文章中會再介紹。

廣域網路封裝協定與連線種類的關係

前面介紹過,廣域網路有Leased Line、Packet Switched以及Circuit Switched三種主要的分類,而剛剛也提到廣域網路在網路協定第二層封裝協定的種類有HDLC、PPP、SLIP、X.25與LAPB、幀中繼(Frame Relay)以及ATM,但是它們的對應關係如何呢?

基本上,Leased Line廣域網路使用的第二層網路封裝協定包括HDLC、PPP及SLIP三種;而Packet Switched廣域網路使用到的第二層網路封裝協定有X.25、幀中繼(Frame Relay)以及HDLC三種。

而Circuit Switched廣域網路會使用的第二層網路封裝協定則是HDLC、PPP與SLIP。

有此可以發現,Circuit Switched和Leased Line兩種廣域網路的封裝協定是一樣的,而且HDLC和PPP協定相當廣泛地被使用。以下將剛才所說的對應關係整理成表格。



PPP協定的階層式架構

PPP協定使用階層式的架構,而PPP協定可使用的媒介如下所示:

1. 同步實體媒介
2. 非同步實體媒介
3. 整合服務數位網路(ISDN)

PPP協定主要運作於OSI網路七層中的第二層,也就是資料連結層(Data Link Layer)。在PPP協定中的階層式架構主要分成兩層,上層是NCP(Network Control Protocol),下層為LCP(Link Control Protocol)。

上層的NCP主要工作是負責認證等工作,並且與OSI網路架構的第三層協同運作,也因為NCP,PPP協定才能與各種不同的網路協定做整合。

下層的LCP則是負責建立資料連結的連線,PPP協定提供不少種類的設定給LCP,以便建立資料連結的連線,主要內容是協調點對點的網路連線以及檢查網路封包訊框等設定。


LCP的設定與特性 

接著,說明在Cisco路由器設備的PPP協定中,LCP有哪些設定的內容:

Cisco路由器設備PPP協定中的LCP設定


前面有提到,LCP的主要工作是建立PPP協定的連線以及與連線相關的工作,而在Cisco的網路設備中,可能包含的工作就如同上表所示。

其中,在連線認證方面,會要求建立連線的一方(也就是Caller)輸入與認證相關的資訊,例如密碼。輸入認證的相關資訊,其目的是為了確認要求建立連線的一方有足夠的管理權限以便使用這樣的PPP連線。一般而言,會被使用的認證協定有PAP協定與CHAP協定。

而壓縮主要可以用來增加PPP連線的網路流量,其做法如同該名稱所示,就是將傳遞的資料透過壓縮的方式,減少所需要承載的網路封包大小。在Cisco路由器中,一般使用的壓縮協定包含Stacker和Predictor兩種。

與眾多網路協定一樣,PPP協定的連線也具備錯誤偵測的功能,通常會使用Quality Magic Number來確保比較穩定而且不會有網路迴圈的資料傳輸。

至於最後的多連結部分,PPP協定的連線也可以在路由器的介面(Interfaces)上具備流量平衡(Load Balancing)的功能。

所謂的Load Balancing就是在具有相同路徑選擇時,將網路流量平均分配到這些網路路徑上,以便達到網路流量平均分攤的效果,減少每一條網路路徑的負擔。接著,以下面這個網路架構圖為例進行說明。


▲網路架構圖範例。

假設伺服器X想要傳送封包給伺服器Y,由圖中可看出,伺服器X要到達伺服器Y必須經過三個路由器設備,可以經由路由器A→B→D的網路路徑,或者經由路由器A→C→D的網路路徑。

若有開啟Load Balancing功能,則由伺服器X到伺服器Y的網路流量就會被分成兩條,分別走剛剛所說的兩種不同的網路路徑,這就是Load Balancing功能。在Cisco路由器上與PPP協定相關的Load Balancing功能有時候會與Multilink協定(也就是MLP)相關。

另外,須注意的是,Cisco的IOS從11.1版本以後就開始支援MLP。MLP協定被定義於RFC編號1717文件中,MLP協定主要提供網路封包分割以及將切割的網路封包做定序的工作。

一般而言,MLP協定會在平行多線路的環境中同時發送網路封包,在某些情況下,這些MLP連線會像單一連線一樣地工作,如此一來,就可以在路由器之間有效地增加網路流量。

多通道的PPP協定

這裡有兩種比較不一樣的PPP協定,分別是Multilink PPP和Multiclass PPP,以下分別加以介紹。

Multilink PPP協定

Multilink PPP又稱為MLPPP,或是MP、MPPP、MLP等等。MPPP允許在多個不同的PPP連線中傳遞網路封包。舉例來說,MPPP可以同時在兩條或是更多的網路專線、多條撥接網路上傳遞PPP封包。

但是,每一條PPP連線上所有的網路封包必須依照先後順序傳遞,因此所有的PPP網路封包必須加上序號,以便於之後組裝時了解網路封包的先後順序。

Cisco的網路設備必須把Cisco IOS升級到11.1,才能支援Multilink PPP。MPPP的技術被定義在RFC 1990中,有興趣的讀者可以前往查看。

Multiclass PPP協定 

一般來說,在多個不同的PPP連線中無法同時建立並使用多個PPP連線,Multilink PPP也不行。剛才介紹的Multilink PPP是指可以讓單一PPP連線同時在多個不同的連線媒介中完成。

Multiclass PPP是其中一種Multilink PPP的延伸,但是每一種Traffic的類型都用不同的序號來定序網路封包。詳細內容定義在RFC 2686文件之中。建議先看完Multilink PPP之後,再來研究Multiclass PPP。

PPP協定連線的建立過程 

基本上,PPP協定連線的建立過程分成以下三個階段:

1. 網路連線建立階段
2. 認證確認階段
3. 網路層協定處理階段

接著,分別針對這三個階段說明PPP協定的連線過程。

網路連線建立階段 
如同這個階段名稱所示,此階段的主要工作是建立PPP協定的連線,在這個階段,每個使用PPP協定的網路設備(例如Cisco路由器)都會發送LCP協定的網路封包,以便設定和測試網路連線。

在這個時候,可以透過LCP協定的設定值來設定PPP協定的連線,其設定包含最多能接收的封包單位數目、壓縮設定和認證協定的設定等,如果此時沒有設定這些設定值,就會自動採用預設值。

認證確認階段

一旦網路連線建立,而且認證協定被決定之後,就代表連線雙方的連線可以進入認證確認的階段。認證確認的階段可有可無,不一定需要這個階段,也可以完成PPP協定的連線。PPP協定支援PAP和CHAP兩種認證協定。

網路層協定處理階段

接下來,最後一個階段是網路層協定的處理階段,這個階段是必須的。在這個階段中,PPP協定會發送NCP協定封包來選擇,並且設定一個以上的網路層協定(例如IP協定),一旦決定了網路層的協定,雙方就可以開始發送網路封包。

PPP協定的認證協定 

以下介紹PPP協定的認證方式。如同前面所提到的,PPP協定所使用的認證協定有PAP協定和CHAP協定,但是PAP協定和CHAP協定有什麼不同?哪一種協定比較好?這裡會就這兩種認證協定分別加以介紹。 

PAP認證協定 

PAP認證協定是一種雙向握手(Two way handshake)協定,透過雙向握手的流程,讓遠端的電腦或是網路設備進行辨識(Identity)認證的工作。一旦網路連線建立,而且認證協定被決定之後,就代表連線雙方的連線可進入認證確認的階段。 

因此,認證的發生時間是在PPP協定連線建立之後就進行的。進行認證時,遠端的電腦或網路設備會不斷地發送帳號和密碼到Cisco路由器,這樣的發送過程會一直持續,直到這個認證被接受或者這個PPP連線被中斷為止。 

PAP認證協定的隱憂 

雖然PPP協定使用PAP認證協定,但事實上,PAP認證協定本身並不是一個很嚴謹的認證協定,因為PAP認證協定會把密碼用純文字的方式,也就是Clear Text來傳送,這也就代表著,在傳送過程中密碼不會被加密,因此當有人攔截到這樣的網路封包,就可以看到密碼內容。 

這樣的運作模式除了Token Ring網路架構之外,在大部分的網路環境中是相當不安全的。不僅如此,PAP協定針對Playback和Trial-and-error的攻擊方式也沒有任何的保護措施。 

CHAP認證協定 

另外一種PPP連線的認證協定是CHAP認證協定,CHAP認證協定採用的運作流程是Three way handshake,如果使用CHAP認證協定,則當PPP連線建立階段完成之後,Cisco路由器設備(本地端)就會發送所謂的Challenge封包給遠端的網路設備。 

接下來,遠端的網路設備會透過One way hash方式,針對傳送過來的Challenge值和密碼,計算出一個特定的值,然後將這個特定的值傳回給原本發送的Cisco路由器設備。這裡所使用的One way hash方式,一般都是使用MD5(Message Digest 5)演算法。 

然後,本地端的Cisco路由器設備根據已知的計算方式再次計算出hash值,並比對自己所計算的hash值與收到的hash值是否相同。 

如果兩個計算出來的hash值相同,代表這個認證已經通過,否則就會立刻中斷目前這個PPP連線。 

CHAP認證協定比較安全的地方 

看得出來,CHAP認證協定比PAP認證協定安全許多,因為雙方都會計算出特定的hash值加以比對,而且並不會把密碼直接用明文的方式來傳送。不僅如此,CHAP認證協定對於Playback的攻擊方式有相對應的保護措施。 

剛剛提到的Challenge值是很難被預測出來的值,因為Challenge值是亂數產生的,所以這同時也代表著所計算出來的hash值也是亂數產生的。 

此外,剛剛提過Challenge封包會一直發送,這種做法也可以避免受到攻擊,因為每次發送的Challenge值都不一樣。 

PPP協定認證的設定方式 

到目前為止,讀者應該對PPP協定有了一定程度的了解,接下來介紹實作的部分,也就是PPP協定認證的設定方式。 

設定PPP協定的封裝 

一開始,先在Cisco路由器上設定PPP協定的封裝,其指令如下: 


這個指令必須在Interface模式下執行。這個指令相當於啟動PPP協定的使用,是設定PPP協定的第一步驟。 

前面提到,可以透過連接以下四種實體介面的方式來設定:非同步Serial介面、同步Serial介面、高速Serial介面(HSSI)、整合服務數位網路(ISDN)。 

如果是在非同步的Serial介面上設定Cisco路由器在PPP協定上的設定,則需要額外的步驟來啟動PPP協定的使用。不過,由於篇幅有限,難度較高,這裡將不說明非同步Serial介面的設定方式,只是讀者要稍微注意一下。 

設定路由器主機名稱 

在設定PPP協定的認證之前,當前的介面必須已經設定過PPP協定的封裝(Encapsulation),也就是已經透過上一個步驟啟動PPP協定的使用。 

接下來,必須確保每一個使用PPP協定的Cisco路由器均有設定「主機名稱」。 

如何判定Cisco路由器已經設定好主機名稱呢?方法很簡單,如果已設定好主機名稱,其設定好的主機名稱會出現在命令列提示符號之前。假如未設定主機名稱,則必須先執行下列指令來設定主機名稱: 


KC406是主機名稱的設定範例,指令關鍵字是hostname。一般而言,設定主機名稱主要是為了方便管理,而這個名稱一旦設定之後,就會顯示在提示符號之前,方便管理員辨識目前是在哪一台設備的CLI中。 

但是,對PPP協定的認證來說,這個主機名稱已經不再只是方便管理這麼簡單,而是會被拿來當作認證的帳號名稱,也就是username。請注意,這裡所設定的主機名稱,大小寫視為相異。 

設定遠端路由器的主機名稱與密碼 

接下來設定遠端Cisco路由器的認證帳號名稱與密碼,可用下面這個指令來完成: 


上面這個指令範例是設定遠端的路由器,其主機名稱為LOLO,密碼為1120。對於Cisco路由器而言,這個密碼對於雙方路由器而言,必須是相同的。 

在Cisco IOS版本11.2以前,這個密碼是加密過的,但是從Cisco IOS版本11.2開始,這個密碼就不再加密,而是用明文的方式。 

如果想把密碼加密,必須執行下面這個指令: 


設定認證協定種類 

接著,當然就是要設定PPP協定認證的種類。這裡有PAP協定和CHAP協定兩種認證協定可以選擇,其設定的指令如下: 


上面的指令範例代表採用CHAP認證協定,指令的關鍵字為ppp authentication,若要採用PAP認證協定,只要將chap改成pap即可,該指令內容如下: 


無論是設定成PAP認證協定,還是設定為CHAP認證協定,都代表所有透過這個介面進來的PPP連線要求,都會使用原先所設定的認證協定來要求認證。 

這裡要注意的是,若某一台Cisco路由器設定成某一種認證協定,假設使用CHAP認證協定,那麼所有其他想要與這台路由器建立PPP連線的Cisco路由器,都必須使用CHAP認證協定才行,否則將無法通過認證動作。 

如果讀者覺得這種強迫一定要使用同一種認證協定的做法太沒有彈性的話,其實也是可以一次指定兩種認證協定,例如執行以下這個指令: 


這個指令範例會先試著採用PAP認證,如果連進來的PPP連線並不是使用PAP認證協定,則會再試試CHAP認證協定。 

檢視PPP協定的設定值 

由於PPP協定的設定值是設定在「介面」之上,所以PPP協定的設定值也在介面上,因此檢視PPP協定的設定值指令為: 


其指令關鍵字為Show interface,其執行結果範例如下: 


以上就是使用PPP協定的部分介面資料,大部分的資訊都過於複雜,所以這裡就只針對某些重點部分稍加解釋。 

由於PPP協定是網路第二層的協定,所以在第一行看到line protocol is up就代表PPP協定已經是在運作的狀態下。另外,也會看到下面這一行: 


由於使用HDLC協定和PPP協定,其介面資料可能都很相似,因此可以透過上面這一行來辨識目前所使用的是哪一個廣域網路協定。這裡顯示Encapsulation PPP,所以很明顯地正在使用PPP協定。 

結語 

這篇文章介紹了PPP協定的知識,包含PPP協定的架構、PPP協定的連線建立過程,所使用的認證協定以及在Cisco路由器上的設定指令等等。 

對網路管理人員來說,如何將公司內部網路連線到廣域網路是一個相當重要的課題。連線到廣域網路的方式有很多種,但是網路管理人員要考慮很多因素,以便於規劃使用哪一種方式來設定,例如服務供應商的網路種類、公司的連線需求等等。

轉載自《網管人;作者:胡凱智》


沒有留言:

張貼留言