陳泓 黃東文 葉小艷 張芒



摘 ?要:文章研究一種跨域VPN互聯方案并設計一個開放平臺,讓使用者用按需充值的方式使用VPN服務,為小微企業提供低成本的VPN方案。該平臺在開源的OpenVPN平臺基礎上研發完成,由企業客戶端、個人客戶端、代理服務端和系統管理工具等四個部分組成,采用了虛擬網卡、虛擬網橋、隧道技術,并采用數據庫技術實現系統管理功能。
關鍵詞:VPN;虛擬網卡;虛擬網橋;隧道協議;OpenVPN
中圖分類號:TP311 ? ? 文獻標識碼:A ? ? ?文章編號:1006-8937(2015)06-0059-03
VPN(Virtual Private Network,虛擬專用網絡)是指利用密碼技術和訪問控制技術在公共網絡(如Internet)中建立的專用通信網絡。
本文以開源OpenVPN項目為基礎,研究在互聯網上部署一個開放的平臺,提供跨域的VPN互聯服務,讓使用者用按需充值的方式使用VPN服務,為小微企業提供低成本的VPN方案。
1 ?工作基礎
本文的研究基礎是單域VPN代理機制與OpenVPN。
1.1 ?單域VPN代理機制
單域VPN代理是常見的VPN方案。每一個需要接受外部訪問的企業網絡,都在網絡邊緣部署一個VPN網關,這需要購買獨立的設備,有一定的成本負擔。
大公司的VPN的使用頻率高,投入較高的成本購買VPN硬件服務器或者租用ISP提供的VPN服務是物有所值。但是小微企業對VPN的使用是偶發的,而且VPN訪問的資源通常是企業網絡內部的某臺主機(如數據庫服務器或Web服務器)而不是整個網絡,因而投入專項資金去部署VPN網關成本上不合算,故希望有低成本的解決方案。
1.2 ?OpenVPN
OpenVPN是一個開源VPN項目,能在Linux、xBSD與Windows 2000/XP上運行,其核心技術是虛擬設備,包括虛擬網卡和虛擬網橋。
虛擬網卡是使用網絡底層編程技術實現的一種驅動軟件,安裝后在主機上多出現一個網卡,可以像其它網卡一樣進行配置。服務程序可以在應用層打開虛擬網卡:如果應用軟件(如IE)向虛擬網卡發送數據,則服務程序可以讀取到該數據;如果服務程序寫合適的數據到虛擬網卡,應用軟件也可以接收得到。虛擬網卡在很多操作系統下都有相應的實現,這也是OpenVPN能夠跨平臺一個很重要的理由。
在OpenVPN中,如果用戶訪問一個遠程的虛擬地址(屬于虛擬網卡配用的地址系列,區別于真實地址),則操作系統會通過路由機制將數據包發送到虛擬網卡上,服務程序接收該數據并進行相應處理后,通過物理網卡從外網上發送出去,遠程服務程序通過物理網卡從外網上接收數據,并作相應處理后,發送給虛擬網卡,則應用軟件可以接收到,完成了一個單向傳輸的過程。反之亦然。
虛擬網橋存在于VPN服務器端,表現為使用軟件模擬一個真實的以太網交換機。它的作用是把一個以太網絡接口和一個或多個虛擬網卡橋接在一個網橋接口上,就像它們在一個以太網子網內。其最重要的作用有兩點:
①MAC學習。像交換機一樣建立MAC地址-端口的對照表。
②報文轉發。每發送一個數據包,網橋都會提取其目的MAC地址,從自己的地址-端口對照表中查找由哪個端口把數據包發送出去,使數據到達對應的虛擬網卡。
OpenVPN只提供了核心功能的支持。在實際應用中,需要進行一些修改和定制開發,方可滿足具體需求,并提供輔助功能。
2 ?跨域VPN代理平臺架構與工作機制
描述了跨域VPN代理平臺的架構和工作機制如圖1所示。圖1中有三個關鍵實體:企業內部網絡A中的FTP資料服務器、中間網絡C中的VPN代理服務器、外地局域網B中的PC。圖1中的虛線部分表示虛擬連接,一次VPN訪問經過了三個不同的局域網,對于不同的外地PC和不同的公司局域網,都由同一代理服務器作為中繼,體現跨域互聯的特點。
2.1 ?平臺架構
平臺由三個邏輯部件構成:企業客戶端(部署在資料服務器上)、個人客戶端(部署在外地PC上)和代理服務端(含管理工具,部署在代理服務器上)。
企業客戶端的主功能是為資料服務器申請VPN接入服務,個人客戶端的主功能是登錄VPN代理服務器,代理服務端的主功能是提供VPN代理服務并管理用戶權限、流量、日志。
在使用VPN時,首先在資料服務器上調用企業客戶端向VPN代理服務器發起注冊,獲得一個C網的IP地址,并保持連接,然后在外地PC上調用個人客戶端登錄VPN,也獲得一個C網的IP地址,經過這兩步建立起一個虛擬通道,使外地PC訪問資料服務器。
2.2 ?工作機制
假設網絡C的內部網段地址是10.0.0.0/8,資料服務器經過注冊,得到了一個IP地址10.0.0.234。
下面從數據在三個邏輯部件中的流轉過程來說明該平臺的工作機制。
2.2.1 ?個人客戶端上
PC構造出一個數據包,目標是10.0.0.234,數據包發送到虛擬網卡,用隧道協議對數據包進行封裝,目標是VPN代理服務器,數據包通過物理網卡發到VPN服務器。
2.2.2 ?VPN代理服務器上
物理網卡接收到數據包,用隧道協議對其拆封得到原始數據包,目標是10.0.0.234,守護進程查詢得到其對應的虛擬網卡MAC地址,通過虛擬網橋轉發到虛擬網卡,虛擬網卡上用隧道協議封裝,目標是資源服務器,物理網卡將數據包發到資料服務器。
2.2.3 ?資料服務器上
物理網卡接收到數據包,經過TCP/IP傳送到VPN進程上,VPN進程用隧道協議解包,并將數據包再次傳入TCP/IP協議棧,TCP/IP協議棧將其數據包發到對應的應用進程。
3 ?平臺設計
以下從VPN代理服務器、企業客戶端、個人客戶端、系統管理工具四個軟件組建來說明平臺的設計方法。所示圖片是測試期產生的實際效果圖。
3.1 ?VPN代理服務器
服務器系統將運行Centos6.4平臺上,主要開發語言為c語言,輔助語言為python。含核心模塊ppp/bridge+pptp和輔助模塊:cloud+deduction+backpwd。
ppp/bridge是本系統的驅動部分,扮演著VPN數據傳輸介質的作用。
PPP扮演虛擬網卡的角色,用來接收來自TCP/IP協議棧的網絡分包并發送或者反過來將接收到的網絡分包傳給協議棧處理以及將網絡分包在內核與用戶態之間傳送,模擬物理鏈路的數據接收和發送;Bridge用來存儲CHM表,CHM記錄著撥號上來的客戶端的詳細信息。Bridge扮演著交換機角色,主要對接收的數據包進行封裝處理以及對數據進行相應轉發。
pptp是一個協議模塊,在有了驅動模塊基礎上,該模塊決定能否維持機器正常通訊,它提供了一個協議棧,用于封裝和拆封數據包的VPN協議。
cloud用于響應客戶端更新私有云表。
deduction用于月結扣費。
mailpwd用于密碼忘記的郵件模塊。
3.2 ?企業客戶端
部署在window平臺,采用C#進行開發。主功能是為資料服務器申請VPN接入服務。
進入企業客戶端后,出現企業業務主界面,單擊“加入企業私有云”按鈕,出現相應界面,如圖2所示。
填寫角色類型、提供服務、和訪問密碼;提交成功后,VPN代理服務器上為資料服務器生成一個網絡C的地址,如圖3所示。
新增加的FTP服務器在VPN代理服務器上獲得了一個IP地址“10.0.0.234”,以后外地主機通過訪問該主機地址來訪問資料服務器。
3.3 ?個人客戶端
部署在window平臺,采用C#進行開發,主功能是登錄VPN代理服務器,還提供充值等輔助功能。選擇一個代理服務器,輸入密碼,進行連接,如圖4所示。
成功后,PC上將形成一個虛擬網卡,其IP地址是網絡C的一個地址。借助虛擬網卡,外地PC就可以像訪問同一個局域網中主機一樣訪問企業內部網絡的資料服務器了。
3.4 ?VPN服務器管理工具
管理工具部署在Window平臺,采用C#進行開發,管理用戶權限、流量、日志,如圖5、圖6所示。
包括radius、radius-mysql、mysql等模塊。
radius模塊主要用來驗證用戶信息,防止權限濫用;
其次用來流量限制、時間限制、用戶人數登錄限制、日志記錄、設置計費頻率。
radius-mysql模塊可以把數據都放到mysql里面進行集中管理。這個模塊主要功能是radius與mysql一個對接模塊,將radius的所有信息記錄在mysql里面。mysql模塊是數據庫部分。
4 ?結 ?語
本文源于廣東省大學生創新創業項目,所研究的VPN平臺,經過線上測試,在企業服務代理、游戲加速等應用上都有一定的使用價值。下一階段是考慮租用公用云來推廣,為更多的小微企業提供服務。為了達到這一目標,在安全性、性能、使用體驗等方面還要繼續改進,相關的研究將會繼續開展下去。
參考文獻:
[1] 劉建軍.小微型企業信息化建設分析[J].科技情報開發與經濟,2013,(1).
[2] 任志敏,黃國策,曹鵬.短波IP網絡中IP代理的設計與實現[J].信息技術,2009,(4).
[3] 程思,程家興.VPN中的隧道技術研究[J].計算機技術與發展,2010,(2).