廣域網,也就是大家俗稱的外網,公網。一般是連接不同區域的局域網或者城域網的進行通信的網絡。通過跨越了很大的物理範圍,有時甚至跨越幾個洲進行通信。通常廣域網由 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 建立連接:
- 注意,HQ 會先發起一個請求給到 Branch,請求的內容是一段隨機的字符串共 16 bit
- Branch 在收到後,會將自己的用戶名和密碼和該隨機的字符串一起通過哈希加密,得到另外的一個字符串。然後將該字符串傳給 HQ.
- HQ 在收到後,由於之前已經配置了用戶名和密碼,將之前發給 Branch 的字符串和用戶名密碼一起加密,然後和 Branch 發給自己的字符串進行對比。
- 如果一致則認證成功,否則認證失敗。
這裏假如存在一個攻擊者,截獲了 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。