HCNA Routing&Switching之廣域網協議HDLC和PPP

1874發表於2021-08-23

  前文我們瞭解了地址轉換技術NAT相關話題,回顧請參考https://www.cnblogs.com/qiuhom-1874/p/15168042.html;今天我們來聊一聊廣域網中的兩個二層封裝協議HDLC和PPP協議;

  什麼是廣域網?廣域網(Wide Area Network),簡稱WAN;是一種跨越大的、地域性的計算機網路的集合。通常跨越省、市,甚至一個國家。廣域網中經常會使用序列鏈路來提供遠距離的資料傳輸;HDLC(High-Level Data Link Control)高階資料鏈路控制協議和PPP(Point to Point Protocol)點對點協議是兩種典型的串列埠封裝協議;在前邊的博文中我們提到過,串列埠鏈路和乙太網鏈路最根本的區別就在於二層的封裝不同;乙太網二層封裝是需要封裝源mac和目標mac,而串列埠鏈路不需要;對於二層以上的封裝兩者沒有太大區別;

  HDLC協議應用

  提示:HDLC是一種面向位元的鏈路層協議;HDLC傳輸的資訊單位為幀,是面向位元的同步資料控制協議的典型;

   HDLC的配置

  實驗:如下拓撲,配置R1和R2使用HDLC封裝傳輸資料

  配置R1

HCNA Routing&Switching之廣域網協議HDLC和PPP
sys
sys R1
int s4/0/0
link-proto hdlc
y
ip add 1.0.0.1 24
d th
View Code

  配置R2

HCNA Routing&Switching之廣域網協議HDLC和PPP
sys
sys R2
int s4/0/0
link-proto hdlc
y
ip add 1.0.0.2 24
d th
View Code

  提示:預設華為的裝置串列埠都是ppp封裝,我們只需要在對應的串列埠介面模式下使用link-protocol hdlc命令來更改介面的封裝為hdlc即可。這裡需要注意一點,通訊雙方的協議必須相同,雙方才可以正常通訊;

  HDLC介面地址借用

  什麼是地址借用呢?我們知道在路由器上一個介面如果沒有ip地址就無法自動生成直連路由,也就無法轉發報文;ip地址借用是指允許一個沒有IP地址的介面從其他介面借用ip地址。這樣一來可以避免一個介面獨佔ip地址,節約ip地址資源;一般建議使用迴環介面的ip地址,因為迴環介面總是處於up狀態,從而能穩定的提供可用的ip地址;

  配置上述拓撲,串列埠ip地址借用lo1介面ip地址

  在R1上刪除原有介面的ip地址,在lo1上配置ip地址

  在R2上刪除原有介面的ip地址,在lo1上配置ip地址

  配置R1的s4/0/0介面借用lo1介面的地址

  配置R1的s4/0/0介面借用lo1介面的地址

  提示:可以看到在對應串列埠介面下使用ip address unnumbered interface loopback 1命令就可以將lo1上的地址配置在對應的串列埠介面下;

  驗證:R1和R2可以正常通訊嗎?

  提示:可以看到雖然地址都配置上了,但是無法正常通訊;

  檢視路由

  提示:可以看到對應路由的出介面是lo1並不是對應的串列埠,對於R2的路由也是一樣的;所以導致R1pingR2(或者R2pingR1)時資料包是傳送不出去;解決辦法,新增靜態路由,指定對應的出介面為串列埠s4/0/0介面;

  在R1上新增靜態路由

  在R2上新增靜態路由

  提示:這裡需要注意,如果迴環介面不是32位掩碼,這裡新增靜態路由要新增明細路由,其原因是明細路由會最優先匹配上;如果是網段路由,對應靜態路由的優先順序沒有直連路由的優先順序高,所以在對應路由表中,直連路由優先;如果迴環介面是32位掩碼,這裡配置網段路由和明細路由都可以;總之新增了靜態路由以後,在路由表中對應路由的出介面是對應的串列埠即可;

  驗證:現在R1和R2是否能夠正常ping通呢?

  提示:可以看到現在R1pingR2就能正常ping通;說明我們配置的靜態路由生效;

  PPP協議應用

  提示:PPP協議是一種點到點鏈路層協議,主要用於在全雙工的同步或非同步鏈路上進行點到點的資料傳輸;

  HDLC和PPP協議對比

  PPP協議特點

  1、PPP既支援銅鼓傳輸有支援非同步傳輸,而x.25、FR等資料鏈路層協議僅支援同步傳輸,SLIP僅支援非同步傳輸;

  2、PPP協議具有很好的擴充套件性,例如當需要乙太網鏈路層在ppp協議是,ppp可以擴充套件為PPPoE;

  3、PPP提供了LCP(link control protocol)協議,用於各種鏈路層引數協商;

  4、PPP提供了各種NCP(network control protocol)協議;如ipcp,ipxcp;用於個網路層引數的協商,更好地支援了網路層協議;

  5、PPP提供了認證協議:CHAP(challenge-handshake authentication protocol)和PAP(password authentication protocol),更好的保證了網路的安全性;

  6、無重傳機制,網路開銷小,速度快;

  PPP元件

  提示:PPP為了能夠適應多種多樣的鏈路型別,定義了鏈路控制協議LCP;LCP可以自動檢測環路環境;協商鏈路引數,如最大資料包長度,使用何種認證協議等等;與其他鏈路層協議相比,ppp協議一個重要的特點是可以提供認證功能,鏈路兩端可以協商使用何種認證協議來實施認證過程,只有認證成功之後才會建立連線;NCP主要用於協商網路層地址等引數;對於不同的網路層協議,對應著不同的NCP協議;例如IPCP用於協商控制ip協議,IPXIP用於協商控制IPX協議等;

  PPP鏈路建立過程

  提示:dead階段是物理層不可用階段,當通訊雙方的兩端檢測到物理線路啟用時,就會從dead階段遷移至establish階段,即鏈路建立階段;在establish階段,ppp鏈路進行了LCP引數協商,協商內容包括最大接受單元MRU、認證方式、魔術字(magic number)等選項;LCP引數協商成功後會進入Opened狀態,表示底層鏈路已經建立;在多數情況下,鏈路兩端的裝置是需要經過認證後才能夠進入網路層協議階段;ppp鏈路在預設情況下是不要求進行認證的,如果要求認證,則在鏈路建立階段必須指定認證協議。認證方式是在鏈路建立階段進行協商的。如果在這個階段再次受到了configure-request報文,則優惠返回到鏈路建立階段;在network階段,ppp鏈路進行NCP協商;通過NCP協商來選擇和配置一個網路層協議並進行網路層引數協商。只有相應的網路層協議協商成功以後,該網路層協議才可以通過這條ppp鏈路進行資料的收發;如果在該階段受到了configure-request報文,也會返回到鏈路建立階段;ncp協商成功後,ppp鏈路將保持通訊狀態;在ppp執行過程中,可以隨時中斷連線,例如物理鏈路斷開、認證失敗、超時定時器時間、管理員通過配置關閉連線等等都可能導致鏈路進入terminate階段;在terminate階段,如果所有的資源都被釋放,通訊雙方回到dead階段,知道通訊雙方重新建立ppp連線;

  LCP報文型別

  1、configure-request(配置請求):鏈路層協商過程中傳送到第一個報文,該報文表示點到點雙方開始進行鏈路層引數協商;

  2、configure-ack(配置響應):收到對端發來的configure-request報文,如果引數取值完全接受,則以此報文響應;

  提示:ppp鏈路層封裝協議,需要建立ppp鏈路的兩端裝置都必須傳送configure-request報文,只有當每個裝置都收到對端的configrue-ack型別的報文才表示鏈路的建立過程已經成功完成;

  3、configure-nak(配置不響應):收到對端發來的configure-request報文,如果引數取值不被本端認可,則傳送此報文並攜帶本端可接受的配置引數;

  提示:configure-nak報文中包含RTB可以接受的取值(或取值範圍),RTA收到configure-nak報文後,會將對應引數修改為RTB能接受的取值或取值範圍,然後再次傳送configure-request報文;

  4、configure-reject(配置拒絕):收到對端發來的configure-request報文,如果本端不能識別對端傳送的configure-request中的某些引數,則傳送此報文並攜帶那些本端不能識別的配置引數;

  提示:在重新傳送的configure-request報文中就不會再包含對端不被識別的引數;

  LCP協商引數

  1、在vrp平臺上,MRU引數使用介面上配置的最大傳輸單元(MTU)值表示。

  2、常用的ppp認證協議有pap和chap,一條ppp鏈路的兩端可以使用不同的認證協議認證對端,但是被認證方必須支援認證方要求使用的認證協議並正確配置使用者名稱和密碼等認證資訊;

  3、LCP使用魔術字來檢測鏈路環路和其他異常情況。魔術字是一個隨機產生的數字,隨機機制需要保證兩端產生相同魔術字的可能性為0;

  4、收到一個configure-request報文之後,其中包含的魔術字需要和本地產生的魔術字進行對比,如果不同表示鏈路無環路,則使用configure-ack報文確認(如果其他引數也協商成功),表示魔術字協商成功。在後續傳送的報文中,如果報文中有魔術字欄位,則該欄位設定為協商成功的魔術字;

  IPCP靜態地址協商

  提示:IPCP使用和LCP相同的協商機制、報文型別、但IPCP並非呼叫LCP,只是工作過程、報文等和LCP相同;ip地址協商的方式有兩種,一種是靜態配置協商,一種是動態配置協商;上圖就是靜態配置協商示意圖;

  靜態ip地址協商過程

  1、通訊雙方都要傳送configure-request報文,在此報文中包含本端配置的ip地址;

  2、通訊雙方接收到對端傳送的configure-request報文之後,檢查其中的ip地址,如果ip地址是一個合法的單播ip地址,而且和本地配置的ip地址不同(不衝突),則認為對端可以使用該地址,回應一個configure-ack報文進行確認;

  IPCP動態地址協商

  動態ip協商ip地址過程

  1、RTA向RB傳送一條configure-request報文,此報文中會包含一個ip地址0.0.0.0,表示向對端請求ip地址;

  2、RTB收到雙數configure-request報文後,認為其中包含的ip地址(0.0.0.0)不合法,使用configure-nak回覆包含一個新ip地址10.1.1.1給ra;

  3、RTA收到此cinfigure-nak報文之後,更新本地ip地址,並重新傳送一條configure-request報文,該報文包含新配置的ip地址10.1.1.1;

  4、RTB收到configure-request報文之後,認為其中包含的ip地址為合法地址,回應一個configure-ack報文;

  5、在向RTA回覆configure-ack報文的同時,RTB也要向RTA傳送configure-request報文,請求使用地址10.1.1.2;

  6、RTA收到configure-request報文後,認為其中包含的ip地址為合法地址,回應一個configure-ack報文;

  PPP配置

  提示:ppp的配置和hdlc的配置一樣,我們只需要在對應的串列埠介面模式下使用link-protocol 命令來修改對應的介面封裝為ppp即可;華為ARG3系列路由器預設序列介面就是ppp協議封裝;

  PPP認證模式-PAP

  提示:PAP認證協議為兩次握手認證協議,密碼以明文方式在鏈路上傳輸;首先LCP協商完成以後,認證方要求被認證通過方使用PAP進行認證;被認證方將配置的使用者名稱和密碼資訊使用authenticate-request報文以明文方式傳送給認證方;認證方收到被認證方傳送到使用者名稱和密碼後,它會根據本地配置的使用者名稱和密碼被認證方傳送過來的使用者名稱和密碼是否匹配;如果匹配則返回authenticate-ack報文,表示認證成功;否則返回authenticate-nak報文,表示認證失敗;PAP認證協議可以做無限次的嘗試(這意味則我們可以進行暴力破解),只有在鏈路建立的階段進行認證,一旦鏈路建立成功,後續不再做認證;

  實驗:如下拓撲,配置PPP認證模式為PAP

  在認證方建立用於ppp認證的使用者名稱和密碼

  在認證方對應串列埠介面配置認證模式為pap

  提示:建立好的鏈路如果中途修改認證,此時鏈路並不會立刻斷開;要想生效,我們可以把對應介面宕掉在啟動;

  shutdown R1的s4/0/0介面,再啟動

  提示:可以看到當我們把s4/0/0介面shutdown後在啟動,對應鏈路就斷掉,重新建立鏈路時,提示我們R1的s4/0/0介面啟用了PAP認證,認證失敗的原因是對端沒有啟用PAP認證;

  在被認證方配置pap認證

  驗證鏈路是否正常建立?

  提示:可以看到鏈路正常建立;對應介面都up起來了;

  抓包看看是否能夠抓到使用者名稱和密碼?

  提示:可以看到在鏈路上抓包可以抓到被認證方傳送的PAP認證的使用者名稱和密碼都是使用明文進行傳輸;

  驗證鏈路是否正常建立

  提示:在鏈路任意一段檢視對應的介面資訊,如果對應介面中顯示LCP opened 和IPCP opened表示lcp和ipcp都建立和協商成功;

  PPP認證模式-CHAP

  提示:CHAP(Challenge Handshake Authentication Protocol)挑戰/質詢握手認證協議,以MD5來隱藏密碼,三次握手機制,由認證方發起認證有效避免暴力破解,在鏈路建立成功後具有再次認證檢測機制,目前在企業網的遠端接入環境中用的比較常見。

  CHAP認證過程需要進行三次報文的互動;為了匹配請求報文和回應報文,報文中包含有identifier欄位,一次認真過程所使用的報文均使用相同的identifier資訊;

  認證過程

  1、LCP協商完成後,認證方傳送一個challenge報文給被認證方,報文中包含有id資訊和一個隨機產生的challenge字串,此id即為後續報文所使用的id;

  2、被認證方收到challenge報文之後,進行一次加密運算,運算公式為md5(id+密碼+challenge隨機字串),意思是將id,密碼和challenge三部分連成一個字串,然後對該字串進行md5運算,得到一個16位元組長的摘要資訊,然後將此摘要資訊和埠上配置的CHAP使用者名稱一起封裝在response報文中傳送給認證方;

  3、認證方收到被認證方傳送的response報文後,按照啟用的使用者名稱在本地查詢對應的密碼資訊,得到密碼資訊後,進行一次加密運算,運算方式和被認證方運算方式相同,md5(id+密碼+challenge隨機字串),其中id和challenge是一樣的;然後對比加密運算後的摘要資訊和Response報文中封裝的摘要資訊,如果兩者一樣,則表示認證成功,不一樣則表示認證失敗;

  實驗:將上述PAP認證模式更改為CHAP認證模式

  在認證方的對應介面下修改認證模式為CHAP

  提示:認證的使用者名稱和密碼,如果存在則不需再建立,如果沒有需要建立;其次使用者名稱和密碼都是在認證方建立;

  在被認證方的對應介面下配置CHAP認證資訊

  提示:PAP的認證資訊其實可以不用刪除;

  重啟埠,讓其配置生效 

  驗證鏈路是否建立

  抓包檢視認證過程

  認證成功抓包

  認證失敗抓包

  提示:可以看到CHAP認證每次都會經歷三次握手;認證成功對應給出歡迎訊息,認證失敗給出非法的使用者或密碼;

相關文章