資料介紹
這可能是第一篇關(guān)于BadVPN原理的中文介紹,所以我恪守職責(zé),希望能將BadVPN的原理闡述清楚,而不僅僅是為了欺世盜名取天下之先。
前言
我關(guān)注VPN已經(jīng)多年了,有三類VPN讓我覺(jué)得驚嘆幫我理解了網(wǎng)絡(luò)協(xié)議的體系結(jié)構(gòu)。首先IPSec,I2TP,PPTP這種傳統(tǒng)的VPN技術(shù)讓我知道原來(lái)協(xié)議棧還可以如此的相互Over,然后就接觸到了OpenVPN,如此一個(gè)簡(jiǎn)單的玩意兒竟然擁有如此強(qiáng)大的組網(wǎng)能力,我喜歡這個(gè)OpenVPN,一去就是三五年,期間這個(gè)玩意兒也為我?guī)?lái)很多現(xiàn)實(shí)的東西,比如獎(jiǎng)金,比如加薪升職什么的,打心眼里,我覺(jué)得利用OpenVPN的理念,可以創(chuàng)造出世界第一等的VPN產(chǎn)品。。.直到我遇到了BadVPN!
當(dāng)然,最基本的VPN就是IPSec VPN,然而要想配置好一個(gè)多點(diǎn)的IPSec VPN網(wǎng)絡(luò)及其復(fù)雜和費(fèi)事,最終EzVPN彌補(bǔ)了這個(gè)不足,它通過(guò)一個(gè)所謂的中心節(jié)點(diǎn)簡(jiǎn)化了配置。然而這一切都是“官方”的方案。落實(shí)到普通程序員可以就地使用的方案,沒(méi)幾個(gè)。OenVPN是一個(gè),BadVPN也是一個(gè)。
我承認(rèn),前幾年我被OpenVPN沖昏了頭腦,竟然忽略了世界上還有一個(gè)叫做BadVPN的東西。都到了2017年了,我才第一次注意到它,這多多少少有點(diǎn)讓自己覺(jué)得悲哀。
BadVPN是另一個(gè)VPN
為了能快速理解BadVPN的原理,我準(zhǔn)備從OpenVPN開(kāi)始,當(dāng)你知道了OpenVPN有什么問(wèn)題的時(shí)候,就會(huì)更加容易理解BadVPN是如何解決這些問(wèn)題的了,而這些正是理解BadVPN的關(guān)鍵。我先來(lái)展示一個(gè)OpenVPN的結(jié)構(gòu)圖,假設(shè)使用TAP Bridge模式:
可以看出,OpenVPN有一個(gè)所謂的“中心節(jié)點(diǎn)”,其它所有的子節(jié)點(diǎn)都連接到這個(gè)中心節(jié)點(diǎn)。OpenVPN的這個(gè)中心節(jié)點(diǎn)身兼兩職:
1. 提供總體的控制功能,負(fù)責(zé)與子節(jié)點(diǎn)密鑰協(xié)商,分配虛擬子網(wǎng)的IP地址給子節(jié)點(diǎn),推送策略給子節(jié)點(diǎn)等;
2. 同時(shí)作為一個(gè)對(duì)等的VPN節(jié)點(diǎn)存在,和各個(gè)子節(jié)點(diǎn)所攜帶的子網(wǎng)互聯(lián)互通。
上述兩點(diǎn)可以看出,第一點(diǎn)是控制平面的功能,第二點(diǎn)是數(shù)據(jù)平面的功能,二者完全在一個(gè)鏈路上傳輸,這意味著什么?這意味著要精心設(shè)計(jì)OpenVPN的協(xié)議,以區(qū)分到來(lái)的數(shù)據(jù)包包含的是控制信息還是數(shù)據(jù)。
OpenVPN協(xié)議區(qū)分了數(shù)據(jù)是控制面的數(shù)據(jù)還是數(shù)據(jù)面的數(shù)據(jù),然而這種區(qū)分是帶內(nèi)實(shí)現(xiàn)的,也就是說(shuō)通過(guò)協(xié)議頭的字段來(lái)實(shí)現(xiàn)的,姑且不說(shuō)封裝這個(gè)協(xié)議頭會(huì)帶來(lái)什么開(kāi)銷,僅僅在OpenVPN進(jìn)程中去多路復(fù)用并行處理控制平面和數(shù)據(jù)平面就夠復(fù)雜的了。
按照傳統(tǒng)的網(wǎng)絡(luò)設(shè)計(jì)觀點(diǎn),中心節(jié)點(diǎn)即服務(wù)端就是一個(gè)交換機(jī),而各個(gè)VPN子節(jié)點(diǎn)客戶端就像是“該交換機(jī)端口的另一端”連接的各個(gè)主機(jī)或者級(jí)聯(lián)交換機(jī),這是一個(gè)典型的星型拓?fù)?。然而按?a target='_blank' class='arckwlink_none'>SDN控制平面的觀點(diǎn)來(lái)看的話,中心節(jié)點(diǎn)就是一個(gè)控制器,它控制了整個(gè)的VPN網(wǎng)絡(luò)轉(zhuǎn)發(fā)邏輯,所有的子節(jié)點(diǎn)要發(fā)送數(shù)據(jù)必須無(wú)條件轉(zhuǎn)發(fā)到中心節(jié)點(diǎn),讓中心節(jié)點(diǎn)決定數(shù)據(jù)轉(zhuǎn)發(fā)到何方,這意味著哪怕是子節(jié)點(diǎn)客戶端之間互相通信,也必須經(jīng)由中心節(jié)點(diǎn)來(lái)轉(zhuǎn)發(fā)。
不管站在什么立場(chǎng)上來(lái)看,OpenVPN的中心節(jié)點(diǎn)都是一個(gè)單點(diǎn),不管是從效率還是從可用性上來(lái)權(quán)衡,這都不是一個(gè)優(yōu)雅的方式。說(shuō)點(diǎn)題外話,幸虧我個(gè)人精通Linux網(wǎng)絡(luò),可以通過(guò)iptables,iproute2,多線程改造OpenVPN,bonding TAP網(wǎng)卡,Keepalived等措施來(lái)破除這種限制,消除種種效率和可用性上的威脅,我才得以駕馭OpenVPN,不然的話,用OpenVPN來(lái)組網(wǎng)還真的限制多多。即便我有能力Hold住存在單點(diǎn)問(wèn)題的OpenVPN,最終我還是失敗了。我已經(jīng)把OpenVPN堆積的不成樣子了,迫切需要一個(gè)新的思路。
OpenVPN的中心節(jié)點(diǎn)扮演了過(guò)于重量級(jí)的角色,這導(dǎo)致了任意建立VPN通道的節(jié)點(diǎn)之間的關(guān)系不可能是對(duì)等的,OpenVPN必須以主從方式建立VPN通道。這就主從結(jié)構(gòu)的限制使得OpenVPN在組網(wǎng)方面很難構(gòu)建多點(diǎn)對(duì)多點(diǎn)的網(wǎng)狀拓?fù)洹?/p>
那么BadVPN有何不同呢?為了與OpenVPN做對(duì)比,我還是先來(lái)展示一個(gè)BadVPN的總覽圖:
所有的節(jié)點(diǎn)綜合起來(lái)構(gòu)成了一個(gè)巨大的交換機(jī),大家一起完成交換機(jī)的功能,各個(gè)VPN子節(jié)點(diǎn)(為了對(duì)比,我依然沿用OpenVPN中心節(jié)點(diǎn),子節(jié)點(diǎn)的術(shù)語(yǔ))就是交換機(jī)端口本身,而不再是“端口對(duì)端”連接的設(shè)備。其中,中心節(jié)點(diǎn)不再負(fù)責(zé)實(shí)際的數(shù)據(jù)轉(zhuǎn)發(fā),而僅僅作為一個(gè)“維護(hù)這個(gè)交換機(jī)組成部分”的控制器存在,中心節(jié)點(diǎn)負(fù)責(zé)以下的事宜:
1. 記錄該VPN網(wǎng)絡(luò)中擁有多少節(jié)點(diǎn)主機(jī),即“該大交換機(jī)中有多少端口”以及“端口的添加,刪除以及通告”;
2. 構(gòu)建子節(jié)點(diǎn)與中心節(jié)點(diǎn)之間,子節(jié)點(diǎn)與子節(jié)點(diǎn)之間的TLS控制通道,協(xié)商子節(jié)點(diǎn)之間的通信密鑰。
這意味著各個(gè)子節(jié)點(diǎn)之間的VPN互通不再需要經(jīng)過(guò)中心節(jié)點(diǎn),實(shí)際上也根本就沒(méi)有什么可以進(jìn)行數(shù)據(jù)通信的VPN中心節(jié)點(diǎn)。VPN通信節(jié)點(diǎn)之間變成了真正的點(diǎn)對(duì)點(diǎn)通信,除非你配置中繼(BadVPN的一種特殊運(yùn)行方式,在權(quán)限受制的場(chǎng)景下使用,本文不討論,詳情參見(jiàn)BadVPN的Document),任何VPN之間的通信都是直接通信,不需要經(jīng)過(guò)第三方。
這意味著什么?這意味著:
1. BadVPN的協(xié)議會(huì)非常簡(jiǎn)單;
2. BadVPN的處理過(guò)程會(huì)非常簡(jiǎn)單。
BadVPN將控制平面和數(shù)據(jù)平面做了帶外的分離,不再僅僅是帶內(nèi)分離而依靠協(xié)議來(lái)區(qū)分。關(guān)于這一點(diǎn),后面會(huì)詳述,下面的小節(jié)我們?cè)诟泄偕险J(rèn)識(shí)一下BadVPN的原理。
BadVPN的運(yùn)行原理圖解
長(zhǎng)篇大論終究會(huì)因?yàn)槲墓P不好而適得其反,所以還是通過(guò)畫(huà)圖具體來(lái)點(diǎn)情景分析為好。我分兩種場(chǎng)景來(lái)描述BadVPN的行為,即非打洞場(chǎng)景和打洞場(chǎng)景,先看非打洞場(chǎng)景。
- 集成電路封裝闡述 58次下載
- 基于BGP MPLS的以太網(wǎng)VPN環(huán)境搭建源碼 16次下載
- L2VPN與L3VPN 5次下載
- GRE_VPN概述 15次下載
- GETVPN OVER DMVPN‐P3 Solution 配置實(shí)例(Dynamic Multipoint VPN) 5次下載
- vpn代理服務(wù)器_VPN代理軟件下載 111次下載
- MPLS和VPN體系結(jié)構(gòu)_CCIP版 0次下載
- VPN技術(shù)在數(shù)字社區(qū)的應(yīng)用 28次下載
- 基于VPN技術(shù)的物流信息系統(tǒng)網(wǎng)絡(luò)設(shè)計(jì)
- 基于電子鑰匙的遠(yuǎn)程訪問(wèn)VPN身份鑒別方案
- 基于電子鑰匙的遠(yuǎn)程訪問(wèn)VPN身份鑒別方案
- 一種基于VPN網(wǎng)關(guān)的電原理設(shè)計(jì)與實(shí)現(xiàn)
- 基于PKI的VPN安全管理系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)
- VPN L2TP協(xié)議
- 軟件SSL VPN設(shè)計(jì)與實(shí)現(xiàn)
- DTU如何運(yùn)用VPN加密技術(shù)提升數(shù)據(jù)傳輸安全? 203次閱讀
- 什么是虛擬私有網(wǎng)VPN?VPN的常用技術(shù)有哪些? 1035次閱讀
- 什么是VPN?如何應(yīng)對(duì)VPN安全風(fēng)險(xiǎn) 3341次閱讀
- 20張圖帶你詳解EVPN 653次閱讀
- 1萬(wàn)字 20張圖帶你詳解EVPN 827次閱讀
- Juniper防火墻IPSec VPN的配置 3705次閱讀
- MPLS VPN是什么? 1.8w次閱讀
- 闡述邊緣計(jì)算服務(wù)的優(yōu)勢(shì) 2294次閱讀
- SSL VPN的基本工作原理是怎么樣的 1.2w次閱讀
- 關(guān)于元器件名稱、符號(hào)和封裝的命名問(wèn)題 9471次閱讀
- VPN的定義是什么?對(duì)SD-WAN有何作用 5089次閱讀
- 集成L2、L3服務(wù)的以太網(wǎng)VPN 8111次閱讀
- VPN的工作原理_好用的VPN有哪些(分類) 9.5w次閱讀
- 照明用LED的簡(jiǎn)要闡述 1145次閱讀
- 基于MPLS的VPN技術(shù)原理及其實(shí)現(xiàn) 985次閱讀
下載排行
本周
- 1電子電路原理第七版PDF電子教材免費(fèi)下載
- 0.00 MB | 1490次下載 | 免費(fèi)
- 2單片機(jī)典型實(shí)例介紹
- 18.19 MB | 93次下載 | 1 積分
- 3S7-200PLC編程實(shí)例詳細(xì)資料
- 1.17 MB | 27次下載 | 1 積分
- 4筆記本電腦主板的元件識(shí)別和講解說(shuō)明
- 4.28 MB | 18次下載 | 4 積分
- 5開(kāi)關(guān)電源原理及各功能電路詳解
- 0.38 MB | 10次下載 | 免費(fèi)
- 6基于AT89C2051/4051單片機(jī)編程器的實(shí)驗(yàn)
- 0.11 MB | 4次下載 | 免費(fèi)
- 7基于單片機(jī)和 SG3525的程控開(kāi)關(guān)電源設(shè)計(jì)
- 0.23 MB | 3次下載 | 免費(fèi)
- 8基于單片機(jī)的紅外風(fēng)扇遙控
- 0.23 MB | 3次下載 | 免費(fèi)
本月
- 1OrCAD10.5下載OrCAD10.5中文版軟件
- 0.00 MB | 234313次下載 | 免費(fèi)
- 2PADS 9.0 2009最新版 -下載
- 0.00 MB | 66304次下載 | 免費(fèi)
- 3protel99下載protel99軟件下載(中文版)
- 0.00 MB | 51209次下載 | 免費(fèi)
- 4LabView 8.0 專業(yè)版下載 (3CD完整版)
- 0.00 MB | 51043次下載 | 免費(fèi)
- 5555集成電路應(yīng)用800例(新編版)
- 0.00 MB | 33562次下載 | 免費(fèi)
- 6接口電路圖大全
- 未知 | 30320次下載 | 免費(fèi)
- 7Multisim 10下載Multisim 10 中文版
- 0.00 MB | 28588次下載 | 免費(fèi)
- 8開(kāi)關(guān)電源設(shè)計(jì)實(shí)例指南
- 未知 | 21539次下載 | 免費(fèi)
總榜
- 1matlab軟件下載入口
- 未知 | 935053次下載 | 免費(fèi)
- 2protel99se軟件下載(可英文版轉(zhuǎn)中文版)
- 78.1 MB | 537791次下載 | 免費(fèi)
- 3MATLAB 7.1 下載 (含軟件介紹)
- 未知 | 420026次下載 | 免費(fèi)
- 4OrCAD10.5下載OrCAD10.5中文版軟件
- 0.00 MB | 234313次下載 | 免費(fèi)
- 5Altium DXP2002下載入口
- 未知 | 233046次下載 | 免費(fèi)
- 6電路仿真軟件multisim 10.0免費(fèi)下載
- 340992 | 191183次下載 | 免費(fèi)
- 7十天學(xué)會(huì)AVR單片機(jī)與C語(yǔ)言視頻教程 下載
- 158M | 183277次下載 | 免費(fèi)
- 8proe5.0野火版下載(中文版免費(fèi)下載)
- 未知 | 138039次下載 | 免費(fèi)
評(píng)論
查看更多