詳細介紹PPTP、L2TP、IPSec、OpenVPN和SSTP的區別
VPN (虛擬專用網)發展至今已經不在是一個單純的經過加密的訪問隧道,它已經融合了訪問控制、傳輸管理、加密、路由選擇、可用性管理等多種功能,並在全球的資訊保安體系中發揮著重要的作用。 |
在網路上,有關各種VPN協議優缺點的比較是仁者見仁,智者見智,很多技術人員由於出於使用目的考慮,包括訪問控制、安全和使用者簡單易用,靈活擴充套件等各方面,權衡利弊,難以取捨;尤其在VOIP語音環境中,網路安全顯得尤為重要,因此現在越來越多的網路電話和語音閘道器支援VPN協議。
主流的VPN協議有PPTP、L2TP、IPSec、OpenVPN和SSTP,具體區別如下:
點對點隧道協議 (PPTP) 是由包括微軟和3Com等公司組成的PPTP論壇開發的一種點對點隧道協,基於撥號使用的PPP協議使用PAP或CHAP之類的加密演算法,或者使用 Microsoft的點對點加密演算法MPPE。其通過跨越基於 TCP/IP 的資料網路建立 VPN 實現了從遠端客戶端到專用企業伺服器之間資料的安全傳輸。PPTP 支援通過公共網路(例如 Internet)建立按需的、多協議的、虛擬專用網路。PPTP 允許加密 IP 通訊,然後在要跨越公司 IP 網路或公共 IP 網路(如 Internet)傳送的 IP 頭中對其進行封裝。
第 2 層隧道協議 (L2TP) 是IETF基於L2F (Cisco的第二層轉發協議)開發的PPTP的後續版本。是一種工業標準 Internet 隧道協議,其可以為跨越面向資料包的媒體傳送點到點協議 (PPP) 框架提供封裝。PPTP和L2TP都使用PPP協議對資料進行封裝,然後新增附加包頭用於資料在網際網路絡上的傳輸。PPTP只能在兩端點間建立單一隧道。 L2TP支援在兩端點間使用多隧道,使用者可以針對不同的服務質量建立不同的隧道。L2TP可以提供隧道驗證,而PPTP則不支援隧道驗證。但是當L2TP 或PPTP與IPSEC共同使用時,可以由IPSEC提供隧道驗證,不需要在第2層協議上驗證隧道使用L2TP。 PPTP要求網際網路絡為IP網路。L2TP只要求隧道媒介提供面向資料包的點對點的連線,L2TP可以在IP(使用UDP),楨中繼永久虛擬電路(PVCs),X.25虛擬電路(VCs)或ATM VCs網路上使用。
IPSec 隧道模式隧道是封裝、路由與解封裝的整個過程。隧道將原始資料包隱藏(或封裝)在新的資料包內部。該新的資料包可能會有新的定址與路由資訊,從而使其能夠通 過網路傳輸。隧道與資料保密性結合使用時,在網路上竊聽通訊的人將無法獲取原始資料包資料(以及原始的源和目標)。封裝的資料包到達目的地後,會刪除封裝,原始資料包頭用於將資料包路由到最終目的地。
隧道本身是封裝資料經過的邏輯資料路徑,對原始的源和目的端,隧道是不可見的,而只能看到網路路徑中的點對點連線。連線雙方並不關心隧道起點和終點之間的任何路由器、交換機、代理伺服器或其他安全閘道器。將隧道和資料保密性結合使用時,可用於提供VPN。
封裝的資料包在網路中的隧道內部傳輸。在此示例中,該網路是 Internet。閘道器可以是外部 Internet 與專用網路間的周界閘道器。周界閘道器可以是路由器、防火牆、代理伺服器或其他安全閘道器。另外,在專用網路內部可使用兩個閘道器來保護網路中不信任的通訊。
當以隧道模式使用 IPSec 時,其只為 IP 通訊提供封裝。使用 IPSec 隧道模式主要是為了與其他不支援 IPSec 上的 L2TP 或 PPTP VPN 隧道技術的路由器、閘道器或終端系統之間的相互操作。
SSL/TLS協議提供了資料私密性、端點驗證、資訊完整性等特性。SSL/TLS協議由許多子協議組成,其中兩個主要的子協議是握手協議和記錄協議。握手協議允許伺服器和客戶端在應用協議傳輸第一個資料位元組以前,彼此確認,協商一種加密演算法和密碼鑰匙。在資料傳輸期間,記錄協議利用握手協議生成的金鑰加密和解密後來交換的資料。
SSL/TLS獨立於應用,因此任何一個應用程式都可以享受它的安全性而不必理會執行細節。SSL/TLS置身於網路結構體系的 傳輸層和應用層之間。此外,SSL/TLS本身就被幾乎所有的Web瀏覽器支援。這意味著客戶端不需要為了支援SSL/TLS連線安裝額外的軟體。這兩個特徵就是SSL/TLS能應用於VPN的關鍵點。
典型的SSL VPN應用如OpenVPN,是一個比較好的開源軟體。PPTP主要為那些經常外出移動或家庭辦公的使用者考慮;而OpenVPN主要是針對企業異地兩地總分公司之間的VPN不間斷按需連線,例如ERP在企業中的應用。
OpenVPN 允許參與建立VPN的單點使用預設的私鑰,第三方證照,或者使用者名稱/密碼來進行身份驗證。它大量使用了OpenSSL加密庫,以及SSLv3/TLSv1 協議。OpenVPN能在 Linux、xBSD、Mac OS X與Windows 2000/XP上執行。它並不是一個基於Web的VPN軟體,也不與IPsec及其他VPN軟體包相容。
OpenVPN使用OpenSSL庫加密資料與控制資訊:它使用了OpesSSL的加密以及驗證功能,意味著,它能夠使用任何OpenSSL支援的演算法。它提供了可選的資料包HMAC功能以提高連線的安全性。此外,OpenSSL的硬體加速也能提高它的效能。
OpenVPN提供了多種身份驗證方式,用以確認參與連線雙方的身份,包括:預享私鑰,第三方證照以及使用者名稱/密碼組合。預享金鑰最為簡單,但同時它只能用於建立點對點的VPN;基於PKI的第三方證照提供了最完善的功能,但是需要額外的精力去維護一個PKI證照體系。OpenVPN2.0後引入了使用者名稱/口令組合的身份驗證方式,它可以省略客戶端證照,但是仍有一份伺服器證照需要被用作加密。
OpenVPN所有的通訊都基於一個單一的IP埠,預設且推薦使用UDP協議通訊,同時TCP也被支援。OpenVPN連線能通過大多數的代理伺服器,並且能夠在NAT的環境中很好地工作。服務端具有向客戶端“推送”某些網路配置資訊的功能,這些資訊包括:IP地址、路由設定等。OpenVPN提供了兩種虛擬網路介面:通用Tun/Tap驅動,通過它們,可以建立三層IP隧道,或者虛擬二層乙太網,後者可以傳送任何型別的二層乙太網路資料。傳送的資料可通過LZO演算法壓縮。IANA(Internet Assigned Numbers Authority)指定給OpenVPN的官方埠為1194。OpenVPN 2.0以後版本每個程式可以同時管理數個併發的隧道。
OpenVPN使用通用網路協議(TCP與UDP)的特點使它成為IPsec等協議的理想替代,尤其是在ISP(Internet service provider)過濾某些特定VPN協議的情況下。在選擇協議時候,需要注意2個加密隧道之間的網路狀況,如有高延遲或者丟包較多的情況下,請選擇 TCP協議作為底層協議,UDP協議由於存在無連線和重傳機制,導致要隧道上層的協議進行重傳,效率非常低下。
OpenVPN與生俱來便具備了許多安全特性:它在使用者空間執行,無須對核心及網路協議棧作修改;初始完畢後以chroot方式執行,放棄root許可權;使用mlockall以防止敏感資料交換到磁碟。
OpenVPN通過PKCS#11支援硬體加密標識,如智慧卡。
安全套接字隧道協議(Secure Socket Tunneling Protocol,SSTP)是一種VPN隧道的形式,提供了一種通過SSL3.0通道傳輸PPP或L2TP流量的機制。SSL利用金鑰協商提供傳輸級別的安全性。通過TCP埠443使用SSL,允許SSTP通過幾乎所有的防火牆和代理伺服器,除了需要身份驗證的Web代理。
SSTP可用於Linux、BSD和Windows。MikroTik的RouterOS還包括一個SSTP客戶端和伺服器端。對於Windows,SSTP僅可用於自Windows Vista SP1之後的系統。
這種SSTP只適用於遠端訪問,通常不支援站點與站點之間的VPN隧道。RouterOS的版本有沒有這樣的限制。
原文地址: https://www.linuxprobe.com/l2tp-ipsec-openvpn.html
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31559985/viewspace-2668153/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- l2tp是什麼意思?PPTP和L2TP有哪些區別?pptp
- 蒸汽平臺和steam有什麼區別 蒸汽平臺和steam不同詳細介紹
- L2TP與PPTP的不同點——VecloudpptpCloud
- Kafka詳細介紹Kafka
- javascript this詳細介紹JavaScript
- ApplicationContext 詳細介紹APPContext
- JDBC 詳細介紹JDBC
- Ifconfig詳細介紹
- Git詳細介紹Git
- 詳細介紹php和apache的關係和作用PHPApache
- FTP和TFTP的區別與介紹FTP
- vuex詳細介紹和使用方法Vue
- 註解的詳細介紹
- Http Module 的詳細介紹HTTP
- ssr、ss和vpn介紹和區別
- CentOS快速搭建IPsec/L2TP VPNCentOS
- Go語言詳細介紹:logo和版本Go
- java運算子和表示式詳細介紹Java
- Spring bean詳細介紹SpringBean
- python字典詳細介紹Python
- Nacos 介面詳細介紹
- SOLIDWORKS API詳細介紹SolidAPI
- Go Channel 詳細介紹Go
- spring @component 的作用詳細介紹Spring
- DeFi和CeFi的區別詳細講解
- 區塊鏈去中心化技術詳細介紹區塊鏈中心化
- 區塊鏈錢包開發方案詳細介紹區塊鏈
- 什麼是整型型別?Python整型詳細介紹型別Python
- PHP 的Closure的bind 詳細介紹PHP
- 解析天翼雲IPsec VPN和SSL VPN的區別
- NTFS和FAT32區別介紹
- jar包和war包的介紹與區別JAR
- Flutter系列(一)——詳細介紹Flutter
- Nginx服務詳細介紹Nginx
- LVM詳細介紹及建立LVM
- Webpack 打包 Javascript 詳細介紹WebJavaScript
- 【SCN】Oracle SCN 詳細介紹Oracle
- Java異常詳細介紹Java