1. 程式人生 > >PPP / PPPoE

PPP / PPPoE

PPP(Point-to-Point Protocol 點到點協議)是點到點專線中的協議。還有個變種,在多路訪問網路中需要虛擬點到點連線PPPoE。提供了一種標準的方式在點對點的鏈路上傳輸多種網路層協議(IP,IPX,AppleTalk)的資料報。PPP可在鏈路建立過程中檢查鏈路質量,還支援PAP和CHAP密碼驗證。

PPP鏈路的建立:

1.用LCP※1來建立鏈路。配置為PPP協議的WAN埠會發送LCP包,內含配置選項,來配置和測試鏈路。如果一端是PPP協議,一端是HDLC協議,鏈路是無法建立的

2.(是可選的)在鏈路上可以用PAP/CHAP來認證。建立鏈路並通過認證後,PPP進入鏈路開啟狀態。

3.用NCP※2允許封裝多種網路層協議,並負責傳輸PPP鏈路上的資料。這樣一條PPP鏈路就建立起來了

※1:LCP即鏈路控制協議,用於建立和維護點到點鏈路

※2:NCP即網路控制協議,用於建立和配置網路層協議(IP,IPX,AppleTalk),當然現狀都是IP協議,IPX和AppleTalk已被淘汰。

PPP認證:

PPP認證不是必須的,支援兩種認證方式:PAP和CHAP。

PAP(Password Authentication Protocol 密碼認證協議):用明文密碼兩次握手來實現認證。LCP建立鏈路後,配置PAP認證後,源埠會不停傳送使用者名稱和密碼直至認證通過。安全性較低,一方面因為密碼是明文。另一個方面因為是源埠傳送使用者名稱和密碼,對方不能控制認證的頻率和次數,因此源埠可以重複地嘗試攻擊,例如每秒1萬次試驗攻擊PAP密碼並破解。

CHAP(Challenge Handshake Authentication Protocol 質詢握手認證協議):比PAP更可靠,用三次握手來實現認證。認證步驟:

1.LCP建立鏈路後,配置CHAP認證後,CHAP定期執行訊息詢問,源埠傳送使用者名稱和隨機數口令進行詢問。

2.對方埠收到後,先檢查本地資料庫中是否有一致的使用者名稱,如沒有就忽略。如有,就用使用者名稱和密碼和收到的隨機數口令做成HASH,然後將HASH及自己的使用者名稱傳送給源埠。

3.源埠收到後,先檢查本地資料庫中是否有一致的使用者名稱,如沒有就忽略。如有,就用使用者名稱和密碼和隨機數口令做成HASH,與收到的HASH比對,一致就認證通過

它比PAP更安全,一方面因為隨機數口令在鏈路存在時是不斷改變的不可預知。另一方面由本地路由器或第三方身份認證伺服器控制著傳送詢問的頻率,不允許在沒收到詢問訊息時主動進行認證嘗試。簡單地說CHAP是要對方先發質詢,然後你將密碼傳送給對方,再等對方確認是否OK,而且傳遞的都是經MD5演算法加密後生成的HASH值。

PPP多鏈路捆綁:

PPP multilink是將多個物理鏈路合併成一條邏輯鏈路。原理是由LCP在初始化時設定一個功能選項,將報文分成多個小塊的片段同時送到遠端路由器,LCP再將它們恢復成完整報文。切片一般看有幾根物理鏈路,如果捆綁兩條就切成兩片。這樣能合併頻寬,提高傳輸效率,且物理介面不必再配置IP地址,直接在合併的虛鏈路multilink上配置IP地址即可。

PPP配置:


兩端預設都是封裝成HDLC,將R1的s0/0口改成封裝PPP:


這樣鏈路兩端封裝協議不匹配會down掉,必須將R2的s0/0口也改成封裝PPP,這樣一條不需要認證的PPP鏈路就通起來了。雙方路由表中也會產生一條路由。

現在配成需要PAP認證,將R1作為源埠傳送使用者名稱密碼:


R1上開啟PAP認證後,原本連通的PPP鏈路將down掉。需要在R2上要配置接收用的使用者名稱密碼:


這樣down掉的PPP鏈路又能重新Up起來。此時R1是認證的發起方,而R2是認證的被動接收方。如果想R2也同樣有權發起認證,可以逆向地配置:


這樣就實現了PAP的雙向認證。

再來試試CHAP認證,CHAP沒有主動和被動之分,兩邊都要配置使用者名稱(對方的hostname)密碼:


實驗一下PPP多鏈路連線:


將兩條鏈路捆綁在一起,只要為multilink配置IP地址即可:


再如上在R2上同樣配置即可。

PPPoE:

PPPoE(Point to Point Protocol over Ethernet)提供在乙太網鏈路上的PPP連線(PPP是s口上的協議)。可以使乙太網的主機通過一個簡單的橋接裝置連到一個遠端的接入集中器上。通過PPPoE協議遠端接入裝置能實現對每個接入使用者的控制和計費。目前流行的ADSL就使用了PPPoE協議。PPPoE的封裝層次:IP->PPP->PPPoE->Ethernet。

ADSL(Asymmetric Digital Subscriber Line 非對稱使用者數字環路)是一種能夠通過普通電話線(銅線)就能提供寬頻資料業務的技術。ADSL支援上行速率640Kbps-1Mbps,下行速率1-8Mbps;當使用分離器時可以支援同時打電話和上網;使用的頻段在4KHz-1MHz(一般語音會話的頻寬僅為300Hz-4KHz),有效傳輸距離3-5Km範圍以內。

ADSL常見的接入方式有橋接接入和路由接入:

橋接接入:

1.ADSL Modem----單PC    //效能很好,家庭使用者較多使用

2.ADSL Modem----閘道器伺服器----交換機----較少PC    //效能一般

3.ADSL Modem----寬頻路由器----交換機----較多PC    //效能很好,企業可以使用

路由接入:

ADSL Modem(帶路由功能)----較少PC    //效能較好,SOHO較多使用

ADSL路由器----較少PC    //效能很好,SOHO較多使用

建立PPPoE通道(ADSL撥號)分兩個階段:發現階段會話階段

發現階段有4個報文:初始化廣播報文PADI,迴應報文PADO,單播請求報文PADR,會話ID報文PADS。(會話終止時還有終止報文PADT)

發現階段有4個步驟:第一步使用者主機發送廣播報文PADI請求建立鏈路。第二步乙太網上的訪問集中器(AC)收到廣播後以單播方式回送一個PADO應答。第三步因為PADI是廣播的,所以主機可能收到多個PADO報文,主機選擇一個AC單播發送PADR請求建立連結。第四步AC收到PADR請求建立報文後,就會向主機回覆一個PADS報文,內含session ID

會話階段:PPP包被封裝在PPPoE以太幀中,PPPoE的負載是整個PPP包,以太協議為0x8864。

PPPoE配置:


R1配成伺服器,開啟CHAP認證,密碼為pppoetest ,IP地址分配範圍為12.1.1.100-200:


上面模板1裡將TCP的MTU調整成1452不是必須的,但建議調整一下。因為最大MTU是1500,如果超過1500會切片,但有些TCP應用不允許切片,那些應用就不能用了。為何要改成1452呢?因為TCP頭部要20個位元組,IP頭部要20個位元組,PPPoE本身要8位元組,因此MTU可用1500-20-20-8=1452。

R2配成主機撥號端,模擬ADSL撥號獲得IP地址來上網:


上面撥號組1裡同樣將最大MTU調整為1492,因為最大MTU是1500,PPPoE本身要8位元組,因此最大可用MTU為1492。TCP的MTU調整成1452,原因同上。調整MTU不是必須的。

現在檢視R2的IP地址表,會發現自動獲得了一個伺服器分配的IP: