WAN - 數據在廣域網中的傳輸 - Ponit-to-Point 協議

廣域網,也就是大家俗稱的外網,公網。一般是連接不同區域的局域網或者城域網的進行通信的網絡。通過跨越了很大的物理範圍,有時甚至跨越幾個洲進行通信。通常廣域網由 ISP 提供。

但在 ISP 內部 TCP/IP 協議棧並不在適合,但由於 TCP/IP 在局域網中佔了很大比重,所以對於 ISP 來說,就需要一種方式來傳遞 TCP/IP 協議。

於是就出現了一種協議 - Serial Ponit-to-Point 協議,提供了一種串行鏈路的通信方式,屬於同步鏈路。通過 P-t-P 上海的公司就可以實現和在紐約的分公司實現通信了。

同步鏈路:可以同時傳輸不同公司的流量,但不能強佔其他公司流量的帶寬,類似專線。

異步鏈路:同時傳輸不同的流量,可以強佔其他類型流量的帶寬,類似共享。

PPP

實現 Point-to-Point 的協議常見有:PPP 和 HDLC 兩種,可以看做是數據鏈路層的協議。

NCP: 用來和網絡層打交道

LCP: 用來和物理層打交道

PPP 通信過程

在運行 PPP 的路由器中,會先發送 LCP 消息,建立連接。

成功後會再次發送 NCP 消息建立連接。並且 NCP 中包含 32 位的主機 IP.

在之前 TCP/IP 的局域網中,我們知道直連的兩臺路由器,如果配置了不同網段的接口地址,是無法交互的,因爲在路由表中沒有直連網段的路由。

但是在 PPP 協議中,直連的接口是可以交互的,因爲在連接 NCP 連接時,已經將 IP 告訴了對方,生成了路由。

PPP 認證

PPP 支持單向和雙向的 PAP 認證。

在建立起 LCP 連接後,

如果走單向認證:比如這裏 Branch 想要和 HQ 建立連接,就會在 HQ 先配置用戶名密碼。然後再給 Branch 配置用戶名密碼。然後 Branch 會將消息發給 HQ 如果驗證通過,則表示 Branch 到 HQ 這一方向的連接建立成功,進而繼續發送 NCP 消息。

如果是雙向認證:則需要在 Branch 和 HQ 雙向都配置一次密碼,然後再配置一次連接的密碼。如果雙向認證都過了,NCP 的連接纔會建立。

但 PAP 認證有個缺點,就是在發送密碼時,發送的是明文密碼,這就意味着如果中間有攻擊者的話,就存在安全隱患。

因此 PPP 還有另外一種通信方式 CHAP 認證。

先來看一下上面 PAP 的認證的隱患就在於,明文傳輸用戶名和密碼,讓中間人可以截獲。自然想解決這個問題,就希望不直接傳輸密碼。於是就有了如下的方案 - CHAP 認證:

CHAP 認證和 PAP 認證不同,這裏假設還是 Branch 想要和 HQ 建立連接:

  1. 注意,HQ 會先發起一個請求給到 Branch,請求的內容是一段隨機的字符串共 16 bit
  2. Branch 在收到後,會將自己的用戶名和密碼和該隨機的字符串一起通過哈希加密,得到另外的一個字符串。然後將該字符串傳給 HQ.
  3. HQ 在收到後,由於之前已經配置了用戶名和密碼,將之前發給 Branch 的字符串和用戶名密碼一起加密,然後和 Branch 發給自己的字符串進行對比。
  4. 如果一致則認證成功,否則認證失敗。

這裏假如存在一個攻擊者,截獲了 Branch 和 HQ 之間的全部消息,首先受到 HQ 給 Branch 的 16 bit 的隨機數。然後又截獲了 Branch 發給 HQ 的加密後的密文。

由於 hash 加密的特點,這裏即使知道加密後的結果,採用的算法,已經其中的一段隨機數,也無法得到配置的用戶名密碼。

PPP 配置

PPP 配置

# R1
R1(config)#interface serial 1/0
R1(config-if)#ip addr 1.1.1.1 255.255.255.0
R1(config-if)#no shutdown

# R1
R2(config)#interface serial 1/0
R2(config-if)#ip addr 2.1.1.1 255.255.255.0
R2(config-if)#no shutdown

# 由於默認是 HDLC,所以這裏配置不同網段是無法進行通信的 
R2#ping 1.1.1.1
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 1.1.1.1, timeout is 2 seconds:
.....
Success rate is 0 percent (0/5)
# 查看路由表,沒有去往 R1 的路由
R2#show ip route
Codes: L - local, C - connected, S - static, R - RIP, M - mobile, B - BGP
       D - EIGRP, EX - EIGRP external, O - OSPF, IA - OSPF inter area
       N1 - OSPF NSSA external type 1, N2 - OSPF NSSA external type 2
       E1 - OSPF external type 1, E2 - OSPF external type 2
       i - IS-IS, su - IS-IS summary, L1 - IS-IS level-1, L2 - IS-IS level-2
       ia - IS-IS inter area, * - candidate default, U - per-user static route
       o - ODR, P - periodic downloaded static route, H - NHRP, l - LISP
       a - application route
       + - replicated route, % - next hop override, p - overrides from PfR

Gateway of last resort is not set

      2.0.0.0/8 is variably subnetted, 2 subnets, 2 masks
C        2.1.1.0/24 is directly connected, Serial1/0
L        2.1.1.1/32 is directly connected, Serial1/0

# 將 R1 和 R2 改成 ppp 認證方式,這時就可以通信了
R1(config)#int s 1/0
R1(config-if)#encapsulation ppp

R2(config)#int s 1/0
R2(config-if)#encapsulation ppp

R2#show
*Aug  7 07:41:57.693: %SYS-5-CONFIG_I: Configured from console by console
R2#show ip route
Codes: L - local, C - connected, S - static, R - RIP, M - mobile, B - BGP
       D - EIGRP, EX - EIGRP external, O - OSPF, IA - OSPF inter area
       N1 - OSPF NSSA external type 1, N2 - OSPF NSSA external type 2
       E1 - OSPF external type 1, E2 - OSPF external type 2
       i - IS-IS, su - IS-IS summary, L1 - IS-IS level-1, L2 - IS-IS level-2
       ia - IS-IS inter area, * - candidate default, U - per-user static route
       o - ODR, P - periodic downloaded static route, H - NHRP, l - LISP
       a - application route
       + - replicated route, % - next hop override, p - overrides from PfR

Gateway of last resort is not set

      1.0.0.0/32 is subnetted, 1 subnets
C        1.1.1.1 is directly connected, Serial1/0
      2.0.0.0/8 is variably subnetted, 2 subnets, 2 masks
C        2.1.1.0/24 is directly connected, Serial1/0
L        2.1.1.1/32 is directly connected, Serial1/0

PAP 認證配置 R1 想和 R2 建立連接:

# R2
R2(config)# hostname R2
R2(config)#username cisco password cisco
R2(config)#int s 1/0
R2(config-if)#ppp authentication pap

# R1
R1(config)# hostname R1
R1(config)# int s 1/0
R1(config-if)# ppp pap sent-username cisco password cisco

CHAP 配置

# R2 配置 R1 作爲用戶名
R2(config)# hostname R2
R2(config)#username R1 password cisco
R2(config)#in s 1/0
R2(config-if)#ppp authentication chap

# R1 配置 R2 作爲用戶名
R1(config)#username R2 password cisco
R1(config)#int s1/0
R1(config-if)#ppp authentication chap

如果配置雙向認證,兩端起的密碼必須一致,並且 username 應該等於對方的 hostname

總結

由於在廣域網的環境下,TCP/IP 協議棧不在合適,但由於其在局域網中被普遍使用,所以需要在 ISP 的網絡中傳輸。爲了進行傳輸,PPP 協議被髮明出來。

onit-to-Point 本身是一種鏈路的同步協議,常見 Ponit-to-Point 認證協議有兩種,PPP 和 HDLC。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章