如何用通俗的語言解釋 VPN 中 PPTP 與 L2TP 協議的聯繫與區別?
通俗解釋:
PPP協議,點對點協議,相當於你乘飛機的廊橋,把飛機和登機大廳物理連接起來,然後把旅客(IP Packet)送到飛機(Internet)上。而如果沒有廊橋,需要擺渡車,L2TP與PPTP就相當於這個擺渡車。
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,即GRENAT設備 支持enhanced GREb) 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基於UDP1701PPTP是由GRE修改而來內部封裝的是3層的數據包L2TP內部封裝的是2層的數據幀L2TP其實是一個獨立的協議 記錄在rfc2661中 這協議本身不帶任何的加密措施,後加上了IPSEC賦予了新的活力。
PPTP記錄在rfc2637中 協議本身就帶加密措施,所以是不能帶ipsec的。通俗來講:
L2TP封裝中的數據單元層更低,使用範圍更廣。最典型的使用是PPPOE撥號的封裝。PPTP分裝的數據單元更高,速度會更快一些。L2TP基於UDP是沒有三次握手這種東西的,發起連接是靠數據流的產生。也就是說沒有數據流就沒有隧道(個人觀點:尼瑪,這東西根本就沒隧道。)PPTP是基於TCP的而且是有GRE修改而來,是有保持隧道的功能的。PPTP數據包在正常發送之前必須要確認隧道是否正常,不正常是不發的。L2TP是不管這個的。然後來說一下IPSECPPTP和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 哪個好用?
※如何評價「北大信科速騰棒」?