如何用通俗的語言解釋 VPN 中 PPTP 與 L2TP 協議的聯繫與區別?


通俗解釋:

PPP協議點對點協議,相當於你乘飛機的廊橋,把飛機和登機大廳物理連接起來,然後把旅客(IP Packet)送到飛機(Internet)上。

而如果沒有廊橋,需要擺渡車,L2TPPPTP就相當於這個擺渡車

L2TP是一輛敞篷車,沒有安全,為了全車旅客的安全,配備了安全人員(IP security),保護所有乘客(IP Packet),安全到達目的地,然後再登機(Internet)。

PPTP是兩輛車,一輛負責開道(控制通道,TCP Port 1723,用於建立安全通道),一輛運送旅客(IP/GRE)安全通道,運送旅客的車配備了一些安全人員,只負責保衛VIP旅客(IP Packet,end user traffic)的安全,其它旅客(IP Packet,control traffic)就沒有人保衛,最終也到達目的地,登機(Internet)

你可以看出,它們是殊途同歸,最終的目的都是為了把旅客(IP Packet)送上飛機(Internet),只是途徑不一樣,安全級別也不一樣。

專業同學通道:

PPTP:Point to Point Protocol Tunnel Protocol

L2TP: Layer 2 Tunnel Protocol

如果非要說他們有什麼聯繫,那就是他們都能把PPP協議作為自己的Payload,封裝PPP協議,這是他們之間唯一的聯繫,那有人一定要問,PPP作為點對點協議用在撥號網路好好的,為什麼要把它封裝起來?還要用什麼PPTP,L2TP做啥?文章有點長,堅持看下去,你將會有不一樣的收穫。

即然他們都和PPP協議有關,那我們一定要談談PPP,這是一種撥號上網協議,無論是傳統電話網路PSTN、ISDN、還是ADSL,最終來完成用戶認證,分配用戶電腦/modem IP地址的都是由PPP協議來完成的,他們之間的差別只是傳輸介質不同,過程是殊途同歸,就是在PPP client 和PPP server之間完成PPP會話,認證用戶,分配IP地址。但是這三種傳統的部署方式最大的不足:太不靈活了!需要client 和server 之間是點對點連接,無論是PSTN circuit 、ISDN circuit、ADSL subscriber,都需要在同一台電信局端設備上,第一完成電路的終結( circuit termination),第二完成PPP會話的終結 ( PPP session termination),見下圖:

這就需要在PSTN 接入伺服器(NAS)、ISDN NAS、DSLAM NAS上:

配置PPP 伺服器

配置認證伺服器

配置地址池

這將會有很多很多的NAS存在於不同的網路,這種非常分散的方式不利於管理,而且管理成本很高。

於是就有了一種設想,能否把電路的終結PPP會話的終結這兩個功能物理分離,在一台設備上完成電路的終結,另一台設備完成PPP會話的終結。在這兩台物理分離的設備上,以IP網路為傳輸介質,建立一個隧道tunnel, 來把電路終結剝離出來的PPP封裝在這個隧道上,傳輸到PPP伺服器,完成PPP會話的終結,這樣我們只需要一台、二台集中的PPP伺服器就可以了,見下圖,值得慶幸的是,我們恰恰有這兩種隧道協議可以完成這個設想。

這兩種隧道協議就是PPTP和L2TP,雖然它們最終實現的目標一致,即封裝PPP協議,穿越IP網路/ATM雲/MPLS雲,到達PPP Server,完成PPP會話,以及PPP用戶數據流量,但是它們的實現方式大相徑庭,所以我們還是分開介紹,先來談談PPTP協議。

PPTP

由微軟公司牽頭設計的企業標準,後來標準化,但是還是留下深深的企業烙印,對應標準RFC2637。

分 control connection 和 tunnel connection 兩個層次:

Control connection是一種基於TCP的連接,用於協商如何建立、釋放、修改tunnel,如何區別這些tunnel。

PAC -----------TCP 1723-------------PNS

Tunnel connection 是一種基於增強型GRE,跑在IP層上,協議號47,所謂增強型,是GRE頭有Key Tunnel ID,一方面可以區分tunnel,另一方面可以無障礙穿越NAT設備。

PAC -----------Enhanced GRE-------------PNS

綜上,無論是控制、數據層面都是跑在IP層以上的,所以PPTP離不開IP網路的支持。另外控制層面、數據層面的分離,多通道的模式使實現起來較複雜,配置防火牆策略也要同時考慮2個通道。

另外PPTP只是靠被封裝的PPP協議來提供安全性,TCP會話以及GRE Tunnel都是明文方式,安全性強度不夠高。

L2TP

我們這裡談的是L2TPv2,即由思科公司牽頭開發的協議,對應的標準是RFC2661。

即然是由思科來牽頭設計這個協議,那肯定要考慮網路的多樣性,而不能像微軟公司設計PPTP那樣,僅僅考慮IP網路作為底層傳輸網路,所以L2TP可以傳輸在以下網路上:

1)IP網路

協議號:115

LAC -----------IP 115------------LNS

優點是協議頭較小,但不利於NAT Transversal

2)IP/UDP

UDP PORT 1701

LAC -----------UDP 1701-----------LNS

方便NAT transversal

3)二層ATM交換網路

LAC -----------ATM-----------LNS

可以承載在ATM雲上

4)MPLS

LAC -----------MPLS-----------LNS

可以承載在二層、三層MPLS VPN上

5)Frame Relay

LAC -----------Frame Relay-----------LNS

可以承載在幀中繼交換網路上

此外,控制層面、數據層面使用同一個通信通道,即用一個IP tunnel ,或同一個UDP tunnel ,簡化網路的實現與部署。

綜合以上對網路多樣性的支持、以及單通道的實現,使的L2TP獲得更廣泛的支持,所以L2TP獲得了發展與升級,現在最新版是L2TPv3,不僅支持對PPP的封裝,還支持Ethernet 、ATM、HDLC、Frame Relay 的封裝,幾乎可以和Layer 2 MPLS匹敵了,對應的協議標準RFC3931。

但是L2TP本身也不提供安全加密,需要藉助IP security來加密L2TP tunnel,因為是加密整個tunnel,所以安全性更高。

以上PPTP,L2TP都是配置在接入網,其實這兩個協議非常靈活,只要有IP網路的主機、伺服器、路由器都可以使用,我們來談談PPTP、L2TP配置在用戶電腦上的場景。

用戶希望PPTP、或者L2TP+ IP security 來遠程撥號到公司伺服器,獲得公司VPN的連接。

這裡有一個前提,就是用戶已經ADSL上網了,有了IP connectivity ,這個時候這兩種協議都可以實現,只要保證以下前提:

a) PPTP

防火牆開放 TCP 1723

防火牆開放 IP protocol 47,即GRE

NAT設備 支持enhanced GRE

b) L2TP

採用UDP tunnel

防火牆開放 UDP 1701 L2TP

防火牆開放 UDP 500 IKE

防火牆開放 UDP 4500 IKE NAT Transversal

至於ESP,因為封裝在UDP tunnel 里,所以沒有必要單獨考慮。

如果程序員需要開發一個類似的PPTP隧道協議,不對協議本身有一個深刻的理解,開發出來的產品就會破綻百出,歡迎參加1月20日上午十點的live:PPTP無法連接那些事:https://www.zhihu.com/lives/930130295452221440


聯繫嘛,它們都是二層VPN協議,L2TP吸收了PPTP的一部分優點(還綜合了L2F的一部分)

區別還是很多的,最主要的是L2TP的隧道(Tunnel)是安全的(IPSec),而PPTP僅僅是在PPP協議上進行了加密而已,實際上並不是安全的隧道(GRE)。

從設計的角度來看主要差別在於:

1. L2TP是IETF標準協議,意味著各種設備廠商的設備之間用L2TP一般不會有問題;而PPTP是微軟出的,有些非微軟的設備不一定支持。

2。L2TP使用AES或者3DES加密(256位密鑰),用IPSec協商加密方式,並且有電腦/用戶雙重認證機制,而PPTP只支持MPPE(最多128位密鑰),只用PPP協商加密方式,並只有用戶一層認證機制,相對來說L2TP更安全。

3。L2TP使用的IPSec,絕大多數防火牆都支持,而PPTP使用GRE,有些防火牆可能有問題。

4。L2TP由於封裝了更多安全隧道的信息,所以開銷更高,而PPTP開銷低,所以相對而言PPTP速度更快。


工作的層面不一樣。PPTP工作在應用層,L2TP,如他的名稱所說,工作在數據鏈路層。

通俗的說,就是如果我要用一個安全的方法,寄一個禮物給你,我有兩種方法選擇。一種是找一個鐵盒子,把東西裝在,上上鎖(你有這把鎖的鑰匙),然後用快遞發給你。這個就是PPTP;另外一種方法,我自己雇一個人,自己買一輛車,然後開車送過去。這個是L2TP。

PPTP除了數據,下層的協議都是不安全的,快遞員是不安全的,車是不安全的,快遞員儘管不能打開你的鐵盒子,但是可以丟掉,或者另外找一個鐵盒子代替他;而L2TP從數據鏈路層開始,都是安全的,車是安全的,人也是安全的,所以可以保證整個發送的過程都是可靠的。

另外,PPTP使用IP網路連接,對於網路的兼容性好;L2TP從數據鏈路層開始進行安全處理,需要交換節點以及網路服務提供商支持。


PPTP和L2TP其實都是5層協議。

PPTP基於TCP 1723 L2TP基於UDP1701

PPTP是由GRE修改而來內部封裝的是3層的數據包

L2TP內部封裝的是2層的數據幀

L2TP其實是一個獨立的協議 記錄在rfc2661中 這協議本身不帶任何的加密措施,後加上了IPSEC賦予了新的活力。

PPTP記錄在rfc2637中 協議本身就帶加密措施,所以是不能帶ipsec的。

通俗來講:

L2TP封裝中的數據單元層更低,使用範圍更廣。最典型的使用是PPPOE撥號的封裝。

PPTP分裝的數據單元更高,速度會更快一些。

L2TP基於UDP是沒有三次握手這種東西的,發起連接是靠數據流的產生。也就是說沒有數據流就沒有隧道(個人觀點:尼瑪,這東西根本就沒隧道。)

PPTP是基於TCP的而且是有GRE修改而來,是有保持隧道的功能的。

PPTP數據包在正常發送之前必須要確認隧道是否正常,不正常是不發的。L2TP是不管這個的。

然後來說一下IPSEC

PPTP和L2TP/IPSEC比較是不公平的。L2TP/IPSEC的安全技術要高出PPTP所使用的安全機制太多代.標準的IPSEC的協商有兩個階段第一階段有6個步驟第二階段有3個步驟。PPTP就算用最高級的EAP-TLS也只是IPSEC的一半中的一半。

L2TP/IPSEC應該比的是 GRE/IPSEC。


按技術里說的點對點,什麼二層通道,什麼穿透,估計你不會喜歡看這些,那麼就簡單來說。

輪使用時速度:幾乎沒區別

輪安全:L2TP高,openvpn更高,PPTP就不怎樣了。

例:之前測試過客戶端連接PPTP然後在服務端抓包,居然能抓到明文的包,根據別人的包直接就能登錄到別人的論壇帳號。不過不需要擔心這點,一般伺服器管理員不會抓你的包,抓了也要找半天哪個才是論壇登錄的包,其次用VPN就會被盜號影響自己聲譽,砸自己飯碗。

輪連接時速度:

PPTP連接速度很快,如果伺服器近+給力的情況下,點一下連接就很快就連上

L2TP就沒那麼快了,至於OPENVPN,就算是VPN是區域網的,連接時速度也很慢

輪網路環境:

pptp,使用率最高的協議,連接速度快而穩定,適合大部分網路

l2tp,安全和兼容性好的協議,適合特殊網路和重視安全網路事物

openvpn,只要服務端無異常和客戶端配置正確,基本上沒有連不上。而且不容易被檢測出使用了代理

個人感覺,openvpn並不流行,做這個的人並不是很多,服務端配置蛋疼,客戶端配置麻煩。vpn協議中流行的就PPTP和L2TP。

再給我個人總結吧:

PPTP:適合大部分網路,只要工作事物並不是非常重要,可以用這個。

L2TP:網路環境特殊,如:網吧/教育網/鐵通網/公司區域網等,這些對PPTP支持不好甚至不支持,在沒有映射埠的情況下可以使用

OPENVPN:個人不太喜歡,連接速度慢,還要創建一個網卡,又不能輕易刪掉,看著蛋疼


簡單回答一下,

作為隧道協議,上層載入ppp協議簡單封裝的ip協議,從這個角度來講ip over [ppp over gre (over ip over ethernet over physiclayer)] =&> ip over pptp,基於乘客協議是ip協議(傳輸協議和隧道協議分別是ppp和gre,ps:pptp用到tcp來控制隧道建立為理解方便暫時不管),ip協議是傳統的三層協議,故 pptp被稱為二層協議,所以稱其為3層4層5層的小夥伴請注意參考系的選擇。

同理,ip over[ppp over udp (over ip over ethernet over physiclayer)] =&>ip over l2tp,也是二層協議,

註:l2tp後期升級版本引入了ip sec的加密機制,但並不影響他乘載ip協議的本質。

另,為什麼ip sec是三層隧道協議?

ip sec有兩種模式,傳輸Transport模式和隧道Tunnel模式,如果說隧道Tunnel模式,可以理解成,

ip over [ipsec over udp over xx...],這種情況下 ipsec地位同l2tp pptp其實並沒有區別,所以ip sec仍然可以理解成二層隧道協議,但是,更多的或者說更早的應用中,ip sec使用的傳輸Transport模式中,ip sec具有侵入性的改變了ip協議,或者更直接的說,就是直接替代了ip協議的地位,變成 tcp/udp over[ipsec over udp over xx... ]這個改變非常關鍵,在這個體系當中,乘客協議編程了tcp協議,傳統的認為tcp是標準的4層協議,所以從這個角度講ip sec應該是三層隧道協議。

圖侵刪。。。。來自網路

更深層次的理解推薦看這裡:

第四章 互聯網安全協議

另外,從乘客協議的角度,可以理解下 ssl協議 為什麼是4層隧道協議。

然後可以再理解下sock5屬於幾層隧道協議。


PPTP和L2TP都使用PPP協議對數據進行封裝,然後添加附加包頭用於數據在互聯網路上的傳輸。儘管兩個協議非常相似,但是仍存在以下幾方面的不同:

1.PPTP要求互聯網路為IP網路。L2TP只要求隧道媒介提供面向數據包的點對點的連接。L2TP可以在IP(使用UDP),楨中繼永久虛擬電路(PVCs),X.25虛擬電路(VCs)或ATM VCs網路上使用。

2.PPTP只能在兩端點間建立單一隧道。L2TP支持在兩端點間使用多隧道。使用L2TP,用戶可以針對不同的服務質量創建不同的隧道。

3.L2TP可以提供包頭壓縮。當壓縮包頭時,系統開銷(overhead)佔用4個位元組,而PPTP協議下要佔用6個位元組。

4.L2TP可以提供隧道驗證,而PPTP則不支持隧道驗證。但是當L2TP或PPTP與IPSEC共同使用時,可以由IPSEC提供隧道驗證,不需要在第2層協議上驗證隧道

L2TP:第二層隧道協議 (L2TP: Layer 2 Tunneling Protocol)
來自:http://www.networkdictionary.com/chinese/protocols/

第二層隧道協議(L2TP)是用來整合多協議撥號服務至現有的網際網路服務提供商點。 PPP 定義了多協議跨越第二層點對點鏈接的一個封裝機制。特別地,用戶通過使用眾多技術之一(如:撥號 POTS、ISDN、ADSL 等)獲得第二層連接到網路訪問伺服器(NAS),然後在此連接上運行 PPP。在這樣的配置中,第二層終端點和 PPP 會話終點處於相同的物理設備中(如:NAS)。

L2TP 擴展了 PPP 模型,允許第二層和 PPP 終點處於不同的由包交換網路相互連接的設備來。通過 L2TP,用戶在第二層連接到一個訪問集中器(如:數據機池、ADSL DSLAM 等),然後這個集中器將單獨得的 PPP 幀隧道到 NAS。這樣,可以把 PPP 包的實際處理過程與 L2 連接的終點分離開來。

對於這樣的分離,其明顯的一個好處是,L2 連接可以在一個(本地)電路集中器上終止,然後通過共享網路如幀中繼電路或英特網擴展邏輯 PPP 會話,而不用在 NAS 上終止。從用戶角度看,直接在 NAS 上終止 L2 連接與使用 L2TP 沒有什麼功能上的區別。L2TP 協議也用來解決「多連接聯選組分離」問題。多鏈接 PPP,一般用來集中 ISDN B 通道,需要構成多鏈接捆綁的所有通道在一個單網路訪問伺服器(NAS)上組合。因為 L2TP 使得 PPP 會話可以出現在接收會話的物理點之外的位置,它用來使所有的通道出現在單個的 NAS 上,並允許多鏈接操作,即使是在物理呼叫分散在不同物理位置的 NAS 上的情況下。

L2TP 使用以下兩種信息類型,即控制信息和數據信息。控制信息用於隧道和呼叫的建立、維持和清除。數據信息用於封裝隧道所攜帶的 PPP 幀。控制信息利用 L2TP 中的一個可靠控制通道來確保發送。當發生包丟失時,不轉發數據信息。


不知道這篇文章算不算標準答案,你可以參考http://www.vpnsg.com/faq/722.html


推薦閱讀:

為什麼知乎的華人感覺好愛國,如何評價現在的粉乎?
VPN提供商能截獲HTTPS的信息嗎?
Google+, Facebook 和 Instagram 哪個好用?
如何評價「北大信科速騰棒」?

TAG:VPN | PPTP | 計算機網路 | 網路工程 | 網路協議 |