專利名稱:安全遠(yuǎn)程接入公共通信環(huán)境的制作方法
技術(shù)領(lǐng)域:
本發(fā)明一般地涉及通過(guò)虛擬專用網(wǎng)絡(luò)(VPN)接入安全網(wǎng)絡(luò)中的遠(yuǎn)程應(yīng)用,并且特別地涉及由該遠(yuǎn)程應(yīng)用進(jìn)行的數(shù)據(jù)傳送。
背景技術(shù):
網(wǎng)絡(luò)是出于通信和資源共享的目的被放在一起的硬件和軟件的系統(tǒng)。網(wǎng)絡(luò)包括諸如互連傳輸介質(zhì)并控制傳輸?shù)膫鬏斢布驮O(shè)備和將數(shù)據(jù)解碼并格式化以及檢測(cè)并修正傳輸中的問(wèn)題的軟件之類的資源。目前有多種類型的網(wǎng)絡(luò)正在使用中。在諸如局域網(wǎng)(LAN) 和廣域網(wǎng)(WAN)的某些網(wǎng)絡(luò)中,資源被在物理上相互連接。在諸如虛擬專用網(wǎng)絡(luò)(VPN)的其它網(wǎng)絡(luò)中,由通過(guò)較大網(wǎng)絡(luò)路由的虛擬連接來(lái)載送資源之間的某些鏈接。VPN通常使用公共通信基礎(chǔ)設(shè)施(諸如因特網(wǎng))來(lái)為遠(yuǎn)程辦公室或單獨(dú)用戶提供對(duì)企業(yè)網(wǎng)絡(luò)的安全接入。VPN在通過(guò)安全程序和隧道化協(xié)議,諸如第二層隧道化協(xié)議(L2TP)、 安全套接層(SSL)協(xié)議和網(wǎng)際協(xié)議安全(IPSec)協(xié)議來(lái)保持私密性的同時(shí)通過(guò)使用共享公共基礎(chǔ)設(shè)施來(lái)工作。傳統(tǒng)VPN系統(tǒng)要求在用戶計(jì)算設(shè)備上安裝并管理稱為客戶端軟件的專用軟件以在計(jì)算設(shè)備中建立使得能夠連接到VPN并使用遠(yuǎn)程應(yīng)用的模塊。由于在用戶計(jì)算設(shè)備上維護(hù)軟件變得相對(duì)昂貴且費(fèi)時(shí),所以開(kāi)發(fā)了無(wú)客戶端VPN系統(tǒng)。這些無(wú)客戶端VPN系統(tǒng)不要求用客戶端軟件對(duì)設(shè)備進(jìn)行預(yù)配置。然而,此類無(wú)客戶端VPN系統(tǒng)單獨(dú)地受到其對(duì)靜態(tài)端口遠(yuǎn)程應(yīng)用的適用性的限制。隨著對(duì)動(dòng)態(tài)端口應(yīng)用(諸如網(wǎng)際協(xié)議語(yǔ)音(VoIP)和視頻會(huì)議) 的增長(zhǎng)需要,實(shí)現(xiàn)也能夠支持動(dòng)態(tài)端口應(yīng)用的無(wú)客戶端VPN接入的方式將是有利的。
發(fā)明內(nèi)容
描述了為用戶設(shè)備提供通過(guò)VPN對(duì)企業(yè)網(wǎng)絡(luò)的安全接入的方法和系統(tǒng)。用戶設(shè)備可以包括VPN客戶端和用戶應(yīng)用。用戶設(shè)備中的代理能夠攔截到操作系統(tǒng)服務(wù)的對(duì)建立源于用戶應(yīng)用的連接的請(qǐng)求,并且能夠基于被攔截的請(qǐng)求在代理與VPN客戶端應(yīng)用之間建立通信信道。然后,可以通過(guò)環(huán)回接口(loop-back interface)使由用戶應(yīng)用發(fā)送的分組改向至VPN客戶端。VPN客戶端能夠建立與企業(yè)網(wǎng)絡(luò)的VPN隧道并將數(shù)據(jù)分組轉(zhuǎn)送到企業(yè)網(wǎng)絡(luò)。同樣地,通過(guò)環(huán)回接口將由VPN客戶端從企業(yè)網(wǎng)絡(luò)接收到的分組路由到遠(yuǎn)程應(yīng)用。在本發(fā)明的一個(gè)實(shí)施例中,可以將用戶應(yīng)用和VPN客戶端動(dòng)態(tài)地下載到用戶設(shè)備上。VPN客戶端能夠執(zhí)行用戶設(shè)備上的用戶應(yīng)用并將代理與之相關(guān)聯(lián)。本領(lǐng)域的技術(shù)人員在閱讀與附圖相關(guān)聯(lián)的優(yōu)選實(shí)施例的以下詳細(xì)說(shuō)明之后將認(rèn)識(shí)到本發(fā)明的范圍并實(shí)現(xiàn)其附加方面。
被結(jié)合到本說(shuō)明書(shū)中并構(gòu)成其一部分的附圖舉例說(shuō)明本發(fā)明的多個(gè)方面并連同說(shuō)明用于解釋本發(fā)明的原理。
圖1是根據(jù)本發(fā)明的一個(gè)實(shí)施例的其中遠(yuǎn)程用戶能夠通過(guò)VPN來(lái)獲得遠(yuǎn)程接入的網(wǎng)絡(luò)的示例的功能塊表示。圖2表示根據(jù)本發(fā)明的一個(gè)實(shí)施例的用戶計(jì)算設(shè)備的示例。圖3舉例說(shuō)明示例性VPN客戶端應(yīng)用的工作。圖4舉例說(shuō)明圖3的VPN客戶端應(yīng)用的模塊。圖5舉例說(shuō)明用于實(shí)現(xiàn)VPN客戶端應(yīng)用的示例性方法。圖6表示用于從用戶應(yīng)用向VPN客戶端應(yīng)用傳送分組的方法。圖7表示用于從VPN客戶端向用戶應(yīng)用傳送分組的方法。
具體實(shí)施例方式下面闡述的實(shí)施例表示將使得本領(lǐng)域的技術(shù)人員能夠?qū)嵤┍景l(fā)明并舉例說(shuō)明實(shí)施本發(fā)明的最佳模式的必要信息。在根據(jù)附圖來(lái)閱讀以下說(shuō)明時(shí),本領(lǐng)域的技術(shù)人員將理解本發(fā)明的概念并將認(rèn)識(shí)到在本文中未特別提出的這些概念的應(yīng)用。應(yīng)理解的是這些概念和應(yīng)用落在本公開(kāi)和所附權(quán)利要求的范圍內(nèi)。本發(fā)明提供了用于通過(guò)虛擬專用網(wǎng)絡(luò)(VPN)來(lái)提供遠(yuǎn)程接入的方法和設(shè)備。所述方法和設(shè)備使得用戶即使在沒(méi)有用于用戶計(jì)算設(shè)備的管理特權(quán)的情況下也能夠使用通過(guò)諸如因特網(wǎng)的公共網(wǎng)絡(luò)連接的用戶計(jì)算設(shè)備來(lái)接入企業(yè)網(wǎng)絡(luò)內(nèi)的資源。圖1示出經(jīng)由公共網(wǎng)絡(luò)106與企業(yè)網(wǎng)絡(luò)104通信的示例性用戶設(shè)備102。用戶設(shè)備102可以包括各種類型的計(jì)算設(shè)備,諸如膝上型計(jì)算機(jī)、個(gè)人數(shù)字助理(PDA)和個(gè)人計(jì)算機(jī)。用戶設(shè)備102可以包括可公共接入設(shè)備,諸如因特網(wǎng)室、亭等中的設(shè)備。企業(yè)網(wǎng)絡(luò)104和公共網(wǎng)絡(luò)106可以是無(wú)線或有線網(wǎng)絡(luò)或兩者的組合。企業(yè)網(wǎng)絡(luò) 104包括被連接在一起以使得能夠在企業(yè)網(wǎng)絡(luò)104內(nèi)傳送數(shù)據(jù)的諸如路由器或交換機(jī)的網(wǎng)絡(luò)元件。企業(yè)網(wǎng)絡(luò)104可以具有許多元件,諸如電子郵件服務(wù)器、主機(jī)、資源及在本示例中未示出的其它公用網(wǎng)絡(luò)元件。本發(fā)明不限于與以任何特定方式配置的企業(yè)網(wǎng)絡(luò)一起使用, 并且因此已經(jīng)省略了企業(yè)網(wǎng)絡(luò)104的內(nèi)部結(jié)構(gòu)的細(xì)節(jié)以避免本發(fā)明的混淆。在優(yōu)選實(shí)施例中,企業(yè)網(wǎng)絡(luò)104包括企業(yè)應(yīng)用108和VPN網(wǎng)關(guān)110。VPN網(wǎng)關(guān)是眾所周知的,并且本發(fā)明不限于其中使用特定類型的外部資源的特定實(shí)施例。VPN網(wǎng)關(guān)110使得用戶能夠使用用戶設(shè)備102以安全的方式跨越公共網(wǎng)絡(luò)106獲得對(duì)企業(yè)網(wǎng)絡(luò)104的遠(yuǎn)程接入,諸如通過(guò)在用戶設(shè)備102與企業(yè)網(wǎng)絡(luò)104之間創(chuàng)建VPN隧道??梢栽趩蝹€(gè)服務(wù)器或多種服務(wù)器中包括企業(yè)應(yīng)用108,所述服務(wù)器可以是服務(wù)器場(chǎng)或服務(wù)器場(chǎng)的一部分。各種類型的服務(wù)器是眾所周知的,并且本發(fā)明不限于其中使用特定類型的服務(wù)器的特定實(shí)施例。傳統(tǒng)上,當(dāng)用戶想要獲得對(duì)企業(yè)網(wǎng)絡(luò)的遠(yuǎn)程接入時(shí),遠(yuǎn)程用戶將需要在將用來(lái)接入企業(yè)網(wǎng)絡(luò)的用戶計(jì)算機(jī)上安裝VPN客戶端。安裝的VPN客戶端將使得遠(yuǎn)程計(jì)算機(jī)能夠通過(guò)VPN隧道連接到企業(yè)網(wǎng)絡(luò)?,F(xiàn)在可用的VPN客戶端需要在設(shè)備中安裝核心水平組件,其要求較高水平的用戶特權(quán)(例如,管理用戶特權(quán))。由于VPN客戶端具體地被安裝在特定計(jì)算機(jī)上,所以如果用戶想要從不同的計(jì)算機(jī)獲得接入,則用戶將需要在該計(jì)算機(jī)上安裝VPN 客戶端。例如,如果用戶希望從家中登錄到企業(yè)網(wǎng)絡(luò)104中,則用戶將需要在其家庭計(jì)算機(jī)上安裝VPN客戶端,并且然后使用VPN客戶端來(lái)接入企業(yè)網(wǎng)絡(luò)104。如果用戶正在在沒(méi)有其中已經(jīng)安裝了 VPN客戶端的計(jì)算機(jī)的情況下旅行,則VPN接入常常是不可行的,因?yàn)楣部捎迷O(shè)備的管理用戶特權(quán)通常將不被許可。為了克服這些限制,根據(jù)本發(fā)明的實(shí)施例,可以使用可動(dòng)態(tài)下載VPN客戶端(諸如圖1所示的VPN客戶端112)來(lái)建立VPN隧道??梢詮睦缇W(wǎng)絡(luò)門戶(web portal)或諸如 USB驅(qū)動(dòng)器的外部存儲(chǔ)設(shè)備下載VPN客戶端112。在優(yōu)選實(shí)施例中,在VPN客戶端112被下載到用戶設(shè)備102上之前由網(wǎng)絡(luò)門戶或存儲(chǔ)設(shè)備來(lái)對(duì)用戶進(jìn)行認(rèn)證。通過(guò)促使VPN客戶端在會(huì)話期間被動(dòng)態(tài)地下載,不需要為用戶設(shè)備102預(yù)加載VPN 客戶端。因此,可以使用具有因特網(wǎng)瀏覽器的任何計(jì)算機(jī)來(lái)登錄到企業(yè)網(wǎng)絡(luò)104中??梢栽跁?huì)話終止時(shí)刪除動(dòng)態(tài)地下載的組件,使得一旦會(huì)話已結(jié)束,則可以終止VPN客戶端112的組件的可用性。因此,用戶將能夠甚至從公共可用計(jì)算機(jī)接入企業(yè)網(wǎng)絡(luò)。在一個(gè)實(shí)施例中,可以連同將通過(guò)網(wǎng)絡(luò)接口(web interface)被遠(yuǎn)程地執(zhí)行的用戶應(yīng)用114 一起下載VPN客戶端112。在操作中,可以在認(rèn)證時(shí)為用戶提供能夠被使得可用于用戶的應(yīng)用的列表。在選擇用戶應(yīng)用時(shí),可以將用戶應(yīng)用114和VPN客戶端112兩者動(dòng)態(tài)地下載到用戶設(shè)備102。VPN客戶端112可以執(zhí)行用戶應(yīng)用114并將VPN代理116與用戶應(yīng)用114相關(guān)聯(lián),以便攔截用于建立源自于用戶應(yīng)用114的連接(諸如套接字調(diào)用)的請(qǐng)求。此外,VPN代理116可以建立與VPN客戶端112的通信信道以使源自于遠(yuǎn)程應(yīng)用 114的分組(諸如數(shù)據(jù)分組)改向。VPN客戶端112還建立與VPN網(wǎng)關(guān)110的邏輯隧道或VPN 隧道以將分組加密并轉(zhuǎn)送。將參考圖2 4來(lái)詳細(xì)地解釋用戶設(shè)備102的實(shí)施例的各種方圖2表示用戶設(shè)備102的示例。為了便于解釋,在其中VPN客戶端112已被動(dòng)態(tài)地下載使得用戶設(shè)備102準(zhǔn)備好在公共網(wǎng)絡(luò)106上使用隧道進(jìn)行通信的狀態(tài)下示出圖2所示的實(shí)施例。如上文所討論的,一旦會(huì)話完成,則可以從計(jì)算機(jī)去除某些或全部VPN組件以使用戶設(shè)備102返回正常配置。在優(yōu)選實(shí)施例中,用戶設(shè)備102包括中央處理單元(CPU) 202、存儲(chǔ)器204和網(wǎng)絡(luò)接口 206。CPU 202實(shí)現(xiàn)用于存儲(chǔ)在存儲(chǔ)器204中的處理模塊的控制邏輯。存儲(chǔ)器204可以包括易失性和非易失性存儲(chǔ)器。用戶設(shè)備102經(jīng)由網(wǎng)絡(luò)接口 206與公共網(wǎng)絡(luò)106和企業(yè)網(wǎng)絡(luò)104相交互。網(wǎng)絡(luò)接口 206包括例如物理適配器,其包含被配置為連接到公共網(wǎng)絡(luò)106 上的物理鏈路和通過(guò)VPN客戶端112建立的VPN網(wǎng)絡(luò)的端口。在操作中,如所討論的,可以將VPN客戶端112和用戶應(yīng)用114動(dòng)態(tài)地下載到用戶設(shè)備102上。VPN客戶端112然后可以將VPN代理116與用戶應(yīng)用114相關(guān)聯(lián)。為此, VPN客戶端112執(zhí)行用戶應(yīng)用114并將VPN代理116與用戶應(yīng)用114相關(guān)聯(lián),使得VPN代理116攔截由用戶應(yīng)用114生成的到操作系統(tǒng)服務(wù)的用于建立連接的請(qǐng)求,諸如套接字調(diào)用。套接字調(diào)用可以包括關(guān)于套接字創(chuàng)建、獲得目的地套接字地址等的調(diào)用。在一個(gè)實(shí)施方式中,套接字調(diào)用可以是與應(yīng)用程序接口(API)相交互的調(diào)用,諸如由微軟公司提供的可在Windows操作系統(tǒng)中使用的WinSock API。此外,VPN代理116可以建立與VPN客戶端112的通信信道。這可以通過(guò)將被 VPN代理攔截的請(qǐng)求中的目的地地址變成環(huán)回接口地址來(lái)實(shí)現(xiàn)。環(huán)回接口是虛擬網(wǎng)絡(luò)接口,其可以與操作系統(tǒng)集成并用來(lái)在沒(méi)有故意處理或修改的情況下將數(shù)據(jù)路由回到源實(shí)體。用于環(huán)回的最常使用的IP地址是用于IPv4的127.0.0. 1,但是范圍127. 0. 0. 0至127. 255. 255. 255內(nèi)的任何地址被映射到該地址。環(huán)回接口可以被計(jì)算機(jī)上的網(wǎng)絡(luò)客戶端用來(lái)與同一計(jì)算機(jī)上的應(yīng)用通信??梢詫h(huán)回接口 208配置為將分組轉(zhuǎn)送到VPN客戶端 112或用戶應(yīng)用114。另外,VPN客戶端112建立與VPN網(wǎng)關(guān)110的邏輯隧道或VPN隧道并接收隧道IP 地址。在一個(gè)實(shí)施例中,隧道IP地址對(duì)應(yīng)于VPN網(wǎng)關(guān)110處的代理的和企業(yè)應(yīng)用108的IP 地址。在操作中,當(dāng)用戶應(yīng)用114將向企業(yè)應(yīng)用108發(fā)送分組時(shí),該分組經(jīng)由環(huán)回接口 208被改向至VPN客戶端112。VPN客戶端然后適當(dāng)?shù)貙⒎纸M加密并經(jīng)由VPN隧道發(fā)送分組到VPN網(wǎng)關(guān)110。同樣地,由VPN客戶端112從VPN網(wǎng)關(guān)110接收到的分組被經(jīng)由環(huán)回接口 208發(fā)送到用戶應(yīng)用114。圖3舉例說(shuō)明依照本發(fā)明的一個(gè)實(shí)施例的用戶設(shè)備102中的示例性VPN客戶端 112。用戶設(shè)備102被分配IP地址,其為網(wǎng)絡(luò)接口 206中的物理接口 302的IP地址。物理接口 302可以是使用戶設(shè)備102與任何網(wǎng)絡(luò)對(duì)接的網(wǎng)絡(luò)適配器,諸如網(wǎng)卡。物理接口 302 可以是由用戶設(shè)備102的操作系統(tǒng)通過(guò)諸如設(shè)備驅(qū)動(dòng)器的多種模塊支持的有線或無(wú)線網(wǎng)絡(luò)適配器。如所討論的,在成功認(rèn)證時(shí),為用戶提供對(duì)許多預(yù)配置用戶應(yīng)用(其可以位于各種位置處)的接入。在一個(gè)實(shí)施例中,預(yù)配置遠(yuǎn)程應(yīng)用可以位于USB設(shè)備上。用戶可以從預(yù)配置用戶應(yīng)用的列表中選擇期望的應(yīng)用,諸如用戶應(yīng)用114。所選擇的用戶應(yīng)用114然后被連同VPN客戶端112—起下載到用戶設(shè)備102上并由VPN客戶端112來(lái)執(zhí)行。在VPN客戶端112已經(jīng)在用戶設(shè)備102上執(zhí)行的情況下(例如, 由于早先已經(jīng)選擇了不同的用戶應(yīng)用),可以不重新下載VPN客戶端112。VPN客戶端112 還發(fā)起與用戶應(yīng)用114相關(guān)聯(lián)的VPN代理116。VPN代理的發(fā)起可以包括鉤子動(dòng)態(tài)鏈接庫(kù) (hook DLL)文件到用戶應(yīng)用114的關(guān)聯(lián)。在執(zhí)行時(shí),用戶應(yīng)用114可以調(diào)動(dòng)(invoke)系統(tǒng)調(diào)用以通過(guò)物理接口 302來(lái)建立通信路徑。在一個(gè)實(shí)施方式中,在Windows操作系統(tǒng)的情況下,執(zhí)行用戶應(yīng)用114調(diào)動(dòng) WinSock API調(diào)用。這些系統(tǒng)或API調(diào)用是由用戶應(yīng)用114為了在物理接口 302處創(chuàng)建套接字和為了獲取目的地網(wǎng)際協(xié)議(IP)地址以建立通信路徑而生成的。VPN客戶端112鉤住由用戶應(yīng)用114生成的API調(diào)用以使VPN代理116與遠(yuǎn)程應(yīng)用114相關(guān)聯(lián)。鉤子(hooking)是通過(guò)攔截由應(yīng)用進(jìn)行的庫(kù)函數(shù)調(diào)用或API調(diào)用來(lái)充當(dāng)事件處理程序的編程技術(shù)。通常,鉤子系統(tǒng)包括兩個(gè)部分鉤子服務(wù)器和諸如Winsock. dll的鉤子驅(qū)動(dòng)器。鉤子服務(wù)器向應(yīng)用的地址空間中注入鉤子驅(qū)動(dòng)器用于攔截API調(diào)用。并且,鉤子服務(wù)器控制鉤子驅(qū)動(dòng)器并與之通信。鉤子驅(qū)動(dòng)器執(zhí)行由應(yīng)用調(diào)動(dòng)的API調(diào)用的實(shí)際攔截。表現(xiàn)為鉤子服務(wù)器的VPN客戶端112通過(guò)創(chuàng)建VPN代理116并將VPN代理116與遠(yuǎn)程應(yīng)用114相關(guān)聯(lián)來(lái)執(zhí)行鉤子操作。VPN代理116包括API攔截邏輯,或者換言之用于攔截由遠(yuǎn)程應(yīng)用114生成的API調(diào)用的一組指令。VPN代理116能夠監(jiān)視由遠(yuǎn)程應(yīng)用114發(fā)出的套接字API調(diào)用并能夠?qū)⑻捉幼质录魉偷絍PN客戶端112。因此,每當(dāng)在用戶設(shè)備 102上執(zhí)行新的用戶應(yīng)用114時(shí),VPN客戶端112創(chuàng)建新的VPN代理116并將新的VPN代理 116與新的遠(yuǎn)程應(yīng)用114相關(guān)聯(lián)。因此,由新的遠(yuǎn)程應(yīng)用114生成的WinSock API調(diào)用被新的VPN代理116攔截并傳送到VPN客戶端112。
另外,如所討論的,VPN代理116經(jīng)由環(huán)回接口 208來(lái)建立與VPN客戶端112的通信信道,并且VPN客戶端112建立與VPN網(wǎng)關(guān)110的VPN網(wǎng)絡(luò)連接,諸如SSL隧道。環(huán)回接口是使得用戶應(yīng)用114能夠通過(guò)虛擬接口的IP地址而不是通過(guò)物理接口 302的IP地址從 VPN客戶端112發(fā)送或接收數(shù)據(jù)分組的虛擬接口。通過(guò)從VPN網(wǎng)關(guān)接收隧道的IP地址來(lái)建立SSL隧道。當(dāng)執(zhí)行第一用戶應(yīng)用114時(shí),可以由VPN客戶端112來(lái)僅建立SSL隧道一次。 隨后,每當(dāng)執(zhí)行新的用戶應(yīng)用114時(shí),可以在先前創(chuàng)建的SSL隧道中為新的用戶應(yīng)用114建立附加SSL會(huì)話??梢詫h(huán)回接口 208配置為在外出流動(dòng)(egress flow)期間將分組轉(zhuǎn)送到VPN客戶端112,用于將分組從用戶應(yīng)用114發(fā)送到企業(yè)應(yīng)用108。參考圖3,由1E、2E和3E來(lái)描繪外出流動(dòng)期間的分組所遵循的路徑。在一個(gè)實(shí)施方式中,VPN代理116將由用戶應(yīng)用114生成的分組的目的地地址變成環(huán)回接口 208的IP地址,同時(shí)分組的源地址仍然是物理接口 302的地址。結(jié)果,分組被從物理接口 302路由到環(huán)回接口 208??梢詫h(huán)回接口 208配置為將從物理接口 302接收到的分組發(fā)送到VPN客戶端112。VPN客戶端112在對(duì)應(yīng)于環(huán)回接口 208的套接字處偵聽(tīng)以接收分組。在VPN客戶端112處,將分組的源IP地址修改為由VPN網(wǎng)關(guān)110提供的代理源IP 地址。經(jīng)修改的分組的源IP地址表現(xiàn)為SSL隧道的一個(gè)末端的IP地址。并且,分組的目的地IP地址被修改為由VPN網(wǎng)關(guān)110提供的虛擬目的地IP地址。經(jīng)修改的分組的目的地 IP地址對(duì)應(yīng)于企業(yè)網(wǎng)絡(luò)104中的企業(yè)應(yīng)用108的IP地址并表現(xiàn)為SSL隧道的另一端的IP 地址。然后由VPN客戶端12使用SSL協(xié)議將具有已修改源和目的地IP地址的分組(在下文中稱為已修改分組)封裝并加密以便通過(guò)SSL隧道傳輸?shù)狡髽I(yè)應(yīng)用108。為封裝的SSL 分組提供了作為源IP地址的物理接口 302的IP地址和作為目的地IP地址的VPN網(wǎng)關(guān)110 的物理IP地址以便傳輸。因此,分組被從物理接口 302傳送到VPN網(wǎng)關(guān)110。在從用戶設(shè)備102接收到分組之后,VPN網(wǎng)關(guān)100可以打開(kāi)分組并將分組轉(zhuǎn)送到企業(yè)應(yīng)用108。同樣地,在進(jìn)入流動(dòng)期間,可以由用戶應(yīng)用114通過(guò)VPN客戶端112和環(huán)回接口 208從企業(yè)應(yīng)用108接收分組。參考圖3,由11,21和31來(lái)描繪進(jìn)入流動(dòng)期間的分組所遵循的路徑。在實(shí)施方式中,在進(jìn)入流動(dòng)期間,環(huán)回接口 208從VPN客戶端112接收分組并將分組路由到用戶應(yīng)用114。用戶應(yīng)用114在等待來(lái)自企業(yè)應(yīng)用108的連接請(qǐng)求的同時(shí)調(diào)動(dòng)偵聽(tīng)事件,對(duì)于該偵聽(tīng)事件而言,用戶應(yīng)用114調(diào)動(dòng)諸如WinSock API調(diào)用的API調(diào)用以將用戶應(yīng)用114的狀態(tài)傳送到企業(yè)應(yīng)用108。API調(diào)用被VPN代理116攔截,其將套接字偵聽(tīng)信息傳送到VPN客戶端112。VPN客戶端112在其通過(guò)隧道從企業(yè)應(yīng)用108接收到連接請(qǐng)求時(shí)通過(guò)環(huán)回接口 208向用戶應(yīng)用發(fā)起連接請(qǐng)求。作為回報(bào),企業(yè)應(yīng)用108向VPN網(wǎng)關(guān)110發(fā)送響應(yīng)分組。VPN網(wǎng)關(guān)110將響應(yīng)分組加密并向響應(yīng)分組添加報(bào)頭以便通過(guò)SSL隧道來(lái)發(fā)送響應(yīng)分組。由VPN網(wǎng)關(guān)110添加的報(bào)頭包含作為目的地地址的用戶設(shè)備102的隧道IP地址。VPN客戶端112接收這些響應(yīng)分組。在接收到響應(yīng)分組時(shí),VPN客戶端112打開(kāi)響應(yīng)分組并通過(guò)環(huán)回接口 208將打開(kāi)的響應(yīng)分組(URP)轉(zhuǎn)送到用戶應(yīng)用114。為此,可以將環(huán)回接口 208配置在對(duì)應(yīng)于用戶應(yīng)用114的物理接口 302上將從VPN客戶端112接收到的分組轉(zhuǎn)送到套接字地址。物理接口 302如進(jìn)入流動(dòng)31所描繪的那樣將分組發(fā)送到用戶應(yīng)用114。如所討論的,在數(shù)據(jù)分組的外出流動(dòng)和進(jìn)入流動(dòng)兩者期間,VPN代理116動(dòng)態(tài)地將關(guān)于環(huán)回接口 208和物理接口 302的套接字偵聽(tīng)信息傳送到VPN客戶端112。因此,VPN客戶端112不必被預(yù)先配置為在幾個(gè)靜態(tài)端口處進(jìn)行偵聽(tīng)。結(jié)果,系統(tǒng)能夠支持使用動(dòng)態(tài)端口的應(yīng)用,諸如VoIP、視頻會(huì)議等。圖4舉例說(shuō)明示例性VPN客戶端112中的模塊。在一個(gè)實(shí)施例中,VPN客戶端112 包括控制模塊402、數(shù)據(jù)處理模塊404、套接字條目映射模塊406、傳輸控制協(xié)議/網(wǎng)際協(xié)議棧(TCP/IP) 408和隧道處理模塊410。在用戶的成功認(rèn)證時(shí),向用戶顯示到預(yù)配置用戶應(yīng)用的鏈接。用戶可以從在用戶設(shè)備102上顯示的鏈接中選擇多個(gè)用戶應(yīng)用。對(duì)于由用戶選擇的諸如用戶應(yīng)用114的第一用戶應(yīng)用而言,將用戶應(yīng)用連同VPN客戶端112 —起下載到用戶設(shè)備102。然后,響應(yīng)于用戶的選擇單獨(dú)地下載僅僅用戶應(yīng)用。VPN客戶端112使用控制模塊402來(lái)執(zhí)行下載的用戶應(yīng)用??刂颇K402可以使分離的VPN代理116與由用戶選擇的每個(gè)遠(yuǎn)程應(yīng)用114相關(guān)聯(lián)。如所討論的,VPN代理116 在執(zhí)行時(shí)攔截由關(guān)聯(lián)遠(yuǎn)程應(yīng)用114調(diào)動(dòng)的WinSock API調(diào)用??刂颇K402還可以建立每個(gè)VPN代理116與VPN客戶端112之間的通信信道??梢越⑼ㄐ判诺酪员銈魉椭T如套接字創(chuàng)建、刪除和修改的套接字事件。每個(gè)VPN代理116又創(chuàng)建用于將分組從關(guān)聯(lián)的用戶應(yīng)用114改向到VPN客戶端112的環(huán)回接口 208。此外,控制模塊402可以在用戶設(shè)備102與 VPN網(wǎng)關(guān)110之間建立用于數(shù)據(jù)的安全傳輸?shù)乃淼?。通過(guò)環(huán)回接口 208和VPN客戶端112 在用戶設(shè)備102中的用戶應(yīng)用114與VPN網(wǎng)關(guān)110之間傳輸數(shù)據(jù)分組形式的數(shù)據(jù)。VPN客戶端112使用數(shù)據(jù)處理模塊404來(lái)從或向環(huán)回接口 208接收和/或發(fā)送數(shù)據(jù)分組。數(shù)據(jù)處理模塊404可以使用在諸如用操作系統(tǒng)創(chuàng)建的套接字的真實(shí)套接字與諸如在VPN隧道中創(chuàng)建的套接字的隧道套接字之間的映射以用于數(shù)據(jù)分組的傳輸。套接字條目映射模塊406可以包含具有關(guān)于真實(shí)套接字和隧道套接字的信息(諸如套接字的IP地址)的條目。這些條目允許數(shù)據(jù)處理模塊404識(shí)別適當(dāng)環(huán)回接口,必須通過(guò)該適當(dāng)環(huán)回接口路由數(shù)據(jù)分組。TCP/IP棧408處理關(guān)于諸如報(bào)頭準(zhǔn)備和修改的各種功能的協(xié)議和用于發(fā)送和/或接收數(shù)據(jù)分組的定時(shí)。此外,TCP/IP棧408提供用于數(shù)據(jù)處理模塊404的接口。通過(guò)隧道處理模塊410來(lái)處理封裝數(shù)據(jù)分組的封裝、打開(kāi)以及傳輸和接收。例如, 隧道處理模塊410可以用其SSL報(bào)頭將數(shù)據(jù)分組加密和封裝,使得它們可以被轉(zhuǎn)送到VPN 網(wǎng)關(guān)110。隧道處理模塊410還可以打開(kāi)數(shù)據(jù)分組并將其轉(zhuǎn)送到數(shù)據(jù)處理模塊404以便傳輸?shù)接脩魬?yīng)用114。因此,控制模塊402、數(shù)據(jù)處理模塊404、套接字映射條目406、TCP/IP棧408和隧道處理模塊410 —起工作以通過(guò)隧道使得數(shù)據(jù)分組改向。圖5是舉例說(shuō)明用于實(shí)現(xiàn)VPN客戶端112的示例性方法500的流程圖,而圖6是描繪用于將分組從用戶應(yīng)用114傳送到VPN客戶端112的方法600的流程圖??梢栽谟?jì)算機(jī)可執(zhí)行指令的一般背景下描述這些示例性方法。通常,計(jì)算機(jī)可執(zhí)行指令可以包括例行程序、程序、對(duì)象、組件、數(shù)據(jù)結(jié)構(gòu)、程序、模塊、函數(shù)等,其執(zhí)行特定功能或?qū)崿F(xiàn)特定的抽象數(shù)據(jù)類型。可以將計(jì)算機(jī)可執(zhí)行指令存儲(chǔ)在計(jì)算機(jī)可讀介質(zhì)上,并且可以加載或嵌入適當(dāng)?shù)脑O(shè)備中以便執(zhí)行。在方框502處開(kāi)始方法500,其中,由用戶接入VPN門戶鏈接,諸如能夠通過(guò)網(wǎng)頁(yè)瀏覽器來(lái)接入的企業(yè)網(wǎng)絡(luò)的網(wǎng)絡(luò)門戶。在另一示例中,可以通過(guò)網(wǎng)頁(yè)瀏覽器從企業(yè)網(wǎng)絡(luò)104 的網(wǎng)絡(luò)門戶接入VPN客戶端112。在方框504處,在VPN網(wǎng)關(guān)110上對(duì)用戶進(jìn)行認(rèn)證。為了向企業(yè)應(yīng)用108提供安全且受限的接入,可以通過(guò)使用多種技術(shù)在VPN網(wǎng)關(guān)110上對(duì)用戶進(jìn)行認(rèn)證。例如,可以借助于專用用戶名和口令在VPN網(wǎng)關(guān)110上對(duì)用戶進(jìn)行認(rèn)證。用戶的認(rèn)證還促進(jìn)VPN網(wǎng)關(guān)110 識(shí)別用戶被授權(quán)接入的企業(yè)應(yīng)用。在方框506處,用戶選擇用于被期望執(zhí)行的用戶應(yīng)用114的用戶應(yīng)用鏈接。當(dāng)在 VPN網(wǎng)關(guān)110上成功認(rèn)證用戶時(shí),可以從用戶已被授權(quán)接入的多個(gè)用戶應(yīng)用中選擇期望的用戶應(yīng)用114。在方框508處,下載并執(zhí)行經(jīng)由鏈接選擇的VPN客戶端112和用戶應(yīng)用。由VPN客戶端112來(lái)執(zhí)行所選擇的用戶應(yīng)用114以便執(zhí)行必需的功能。在步驟504至508的替換實(shí)施方式中,VPN客戶端112以及用戶應(yīng)用114可以位于中間設(shè)備中。例如,其可以位于通用串行總線(USB)設(shè)備中。另外,此類設(shè)備可以包括用于在步驟504中認(rèn)證用戶的附加標(biāo)記。在方框510處,可以將VPN代理116與用戶應(yīng)用114附著。例如,VPN客戶端112 可以發(fā)起由用戶應(yīng)用114生成的套接字API調(diào)用的鉤子操作以將VPN代理116與之相關(guān)聯(lián)。 VPN代理116是包括API攔截邏輯的模塊。換言之,VPN代理116適合于攔截API調(diào)用,諸如Windows平臺(tái)中的WinSock API調(diào)用。在方框512處,在用戶應(yīng)用114與VPN客戶端112之間建立通信信道。在實(shí)施方式中,與用戶應(yīng)用114附著的VPN代理116促進(jìn)通過(guò)使用多種技術(shù)通過(guò)環(huán)回接口 208在用戶應(yīng)用114與VPN客戶端112之間建立通信信道。例如,VPN代理116可以采用通過(guò)Winsock API調(diào)用來(lái)創(chuàng)建套接字的功能,提供有用于建立通信信道的Windows操作系統(tǒng)。在方框514處,在VPN客戶端112與VPN網(wǎng)關(guān)110之間建立邏輯隧道。VPN客戶端 112建立到VPN網(wǎng)關(guān)110的邏輯隧道以通過(guò)使用多種已知技術(shù)在VPN客戶端112與企業(yè)網(wǎng)絡(luò)104中的企業(yè)應(yīng)用108之間提供通信信道。在方框516處,接收隧道的IP地址以便與企業(yè)應(yīng)用108通信。為了促進(jìn)用戶設(shè)備 102與企業(yè)網(wǎng)絡(luò)104之間的通信,由VPN客戶端112從VPN網(wǎng)關(guān)110接收隧道的IP地址。描述方法500的順序并不意圖被理解為限制,并且可以按照任何順序?qū)⑷魏螖?shù)目的所述方法方框組合以實(shí)現(xiàn)該方法或替換方法。另外,在不脫離在此所描述的主題的精神和范圍的情況下,可以從所述方法刪除單獨(dú)的方框。此外,可以在任何適當(dāng)?shù)挠布④浖?、固件或其組合中實(shí)現(xiàn)所述方法。圖6舉例說(shuō)明從用戶應(yīng)用114向VPN客戶端112傳送分組的方法600,其中,用戶應(yīng)用114請(qǐng)求建立與企業(yè)應(yīng)用108的連接。在方框602處,與用戶應(yīng)用114相關(guān)聯(lián)的VPN代理116攔截來(lái)自用戶應(yīng)用114的請(qǐng)求以建立與企業(yè)應(yīng)用108的連接。通常,為了發(fā)送或接收分組,用戶應(yīng)用114需要與物理適配器或接口 302相連。用戶應(yīng)用114需要在發(fā)送分組之前在物理接口 302中創(chuàng)建套接字。用戶應(yīng)用114通常通過(guò)發(fā)起套接字調(diào)用來(lái)與物理接口 302相交互。例如,在Windows平臺(tái)環(huán)境中,用戶應(yīng)用114生成Winsock API調(diào)用以請(qǐng)求物理接口 302創(chuàng)建用于傳送數(shù)據(jù)業(yè)務(wù)的套接字。此外,調(diào)用包括向物理接口 302以確定分組將被發(fā)送到的目的地的IP地址的請(qǐng)求。源自于用戶應(yīng)用114的獲得目的地地址的此請(qǐng)求在方法600的方框602處被VPN代理 116攔截。在方框604處,響應(yīng)于對(duì)目的地地址的請(qǐng)求,VPN代理116創(chuàng)建環(huán)回接口 208。這可以通過(guò)將建立連接的請(qǐng)求中的目的地IP地址變成環(huán)回接口地址來(lái)實(shí)現(xiàn)。然后,環(huán)回接口 208能夠充當(dāng)中間模塊,該中間模塊可以暫時(shí)保持分組并使其改向至用戶設(shè)備102內(nèi)的預(yù)定位置或應(yīng)用。在方框606中,VPN代理向VPN客戶端發(fā)送偵聽(tīng)被尋址至環(huán)回接口 208的分組的請(qǐng)求。在方框608中,源自于用戶應(yīng)用114的分組被分配環(huán)回接口 208的地址作為目的地地址。因此,分組現(xiàn)在被改向至環(huán)回接口 208。在方框610中,VPN客戶端接收最初目的地是企業(yè)應(yīng)用108的分組,并且在分組到達(dá)環(huán)回接口 208處時(shí),分組被轉(zhuǎn)送到VPN客戶端112。圖7舉例說(shuō)明從VPN客戶端112向用戶應(yīng)用114傳送分組的方法700,其中,企業(yè)應(yīng)用118請(qǐng)求建立與用戶應(yīng)用114的連接。在方框702處,與用戶應(yīng)用114相關(guān)聯(lián)的VPN代理116攔截來(lái)自用戶應(yīng)用114的使得能夠偵聽(tīng)要連接的其它應(yīng)用的請(qǐng)求。此請(qǐng)求可以包括到物理接口 302的Winsock API調(diào)用。在方框704處,VPN代理請(qǐng)求VPN客戶端經(jīng)由環(huán)回接口 208將其從企業(yè)應(yīng)用108接收到的請(qǐng)求轉(zhuǎn)送到用戶應(yīng)用114。在方框706處,企業(yè)應(yīng)用108通過(guò)在VPN客戶端112與VPN網(wǎng)關(guān)110之間建立的
隧道來(lái)發(fā)送連接請(qǐng)求。在方框708處,VPN客戶端112通過(guò)環(huán)回接口 208發(fā)起與用戶應(yīng)用114的連接。描述方法600和700的順序并不意圖被理解為限制,并且可以按照任何順序?qū)⑷魏螖?shù)目的所述方法方框組合以實(shí)現(xiàn)該方法或替換方法。另外,在不脫離在此所描述的主題的精神和范圍的情況下,可以從所述方法刪除單獨(dú)的方框。此外,可以在任何適當(dāng)?shù)挠布?軟件、固件或其組合中實(shí)現(xiàn)所述方法。
權(quán)利要求
1.一種用于通過(guò)虛擬專用網(wǎng)絡(luò)(VPN)客戶端在用戶應(yīng)用與企業(yè)應(yīng)用之間建立連接的用戶設(shè)備中的方法,該方法包括步驟由代理來(lái)攔截到操作系統(tǒng)服務(wù)的用于建立連接的請(qǐng)求,所述請(qǐng)求源自于用戶應(yīng)用;以及基于被攔截的請(qǐng)求在VPN客戶端與代理之間建立通信信道。
2.權(quán)利要求1的方法,其中,所述請(qǐng)求包括套接字應(yīng)用程序接口(API)調(diào)用。
3.權(quán)利要求1的方法,其中,在VPN客戶端與代理之間建立通信信道的步驟包括在VPN 客戶端應(yīng)用與代理之間創(chuàng)建環(huán)回接口。
4.權(quán)利要求3的方法,其中,所述環(huán)回接口的創(chuàng)建包括將請(qǐng)求中的目的地地址變成環(huán)回接口地址。
5.權(quán)利要求4的方法,還包括由代理向VPN客戶端請(qǐng)求在環(huán)回接口中進(jìn)行偵聽(tīng)的步馬聚ο
6.權(quán)利要求1的方法,其中,所述代理通過(guò)VPN客戶端與用戶應(yīng)用相關(guān)聯(lián)。
7.權(quán)利要求1的方法,其中,代理的攔截步驟包括對(duì)用于創(chuàng)建套接字的應(yīng)用程序接口 (API)調(diào)用進(jìn)行鉤子操作。
8.一種用于通過(guò)VPN客戶端從用戶應(yīng)用向企業(yè)應(yīng)用傳送數(shù)據(jù)分組的用戶設(shè)備中的方法,所述方法包括步驟將數(shù)據(jù)分組的目的地地址變成環(huán)回接口地址,所述環(huán)回接口地址已經(jīng)響應(yīng)于代理攔截到操作系統(tǒng)服務(wù)的用于建立與企業(yè)應(yīng)用的連接的請(qǐng)求而與用戶應(yīng)用相關(guān)聯(lián),所述請(qǐng)求源自于用戶應(yīng)用;以及將數(shù)據(jù)分組轉(zhuǎn)送到VPN客戶端。
9.權(quán)利要求8的方法,還包括將環(huán)回接口地址映射到與VPN隧道相關(guān)聯(lián)的地址的步馬聚ο
10.權(quán)利要求9的方法,還包括依照所述映射使用傳送控制協(xié)議/網(wǎng)際協(xié)議(TCP/IP) 棧來(lái)準(zhǔn)備數(shù)據(jù)分組以便由隧道進(jìn)行傳輸?shù)牟襟E。
11.一種用于通過(guò)虛擬專用網(wǎng)絡(luò)(VPN)客戶端在企業(yè)應(yīng)用與用戶應(yīng)用之間建立連接的用戶設(shè)備中的方法,所述方法包括步驟由代理來(lái)攔截到操作系統(tǒng)服務(wù)的使得能夠偵聽(tīng)其它應(yīng)用的與用戶應(yīng)用相連接的請(qǐng)求的請(qǐng)求,所述請(qǐng)求源自于用戶應(yīng)用;由代理向VPN客戶端請(qǐng)求轉(zhuǎn)送來(lái)自企業(yè)應(yīng)用的連接請(qǐng)求; 由VPN客戶端通過(guò)VPN隧道接收來(lái)自企業(yè)應(yīng)用的連接請(qǐng)求;以及基于接收到的連接請(qǐng)求在VPN客戶端與代理之間建立通信信道。
12.權(quán)利要求11的方法,其中,到操作系統(tǒng)服務(wù)的請(qǐng)求包括套接字應(yīng)用程序接口 (API)調(diào)用。
13.權(quán)利要求11的方法,其中,在VPN客戶端與代理之間建立通信信道的步驟包括在 VPN客戶端應(yīng)用與代理之間創(chuàng)建環(huán)回接口。
14.權(quán)利要求11的方法,其中,所述代理通過(guò)VPN客戶端與用戶應(yīng)用相關(guān)聯(lián)。
15.權(quán)利要求1的方法,其中,代理的攔截步驟包括對(duì)用于創(chuàng)建套接字的應(yīng)用程序接口(API)調(diào)用進(jìn)行鉤子操作。
16.一種用于遠(yuǎn)程虛擬專用網(wǎng)絡(luò)(VPN)接入的系統(tǒng),包括 企業(yè)網(wǎng)絡(luò),其包括企業(yè)應(yīng)用;以及用戶設(shè)備,其中,所述用戶設(shè)備包括適合于攔截到操作系統(tǒng)服務(wù)的用于建立從用戶應(yīng)用到企業(yè)應(yīng)用的連接的請(qǐng)求并基于被攔截的請(qǐng)求在VPN客戶端與代理之間建立通信信道的代理模塊。
17.權(quán)利要求16的系統(tǒng),其中,所述請(qǐng)求包括套接字應(yīng)用程序接口(API)調(diào)用。
18.權(quán)利要求16的系統(tǒng),其中,所述代理模塊還適合于在VPN客戶端應(yīng)用與代理之間創(chuàng)建環(huán)回接口。
19.權(quán)利要求18的系統(tǒng),其中,所述代理還適合于請(qǐng)求VPN客戶端在環(huán)回接口中進(jìn)行偵聽(tīng)。
20.權(quán)利要求16的系統(tǒng),其中,所述代理已經(jīng)通過(guò)VPN客戶端與用戶應(yīng)用相關(guān)聯(lián)。
全文摘要
一種方法和系統(tǒng)為用戶設(shè)備提供通過(guò)VPN對(duì)企業(yè)網(wǎng)絡(luò)中的企業(yè)應(yīng)用的安全接入。從用戶設(shè)備接入企業(yè)應(yīng)用,使得其通過(guò)VPN客戶端來(lái)發(fā)送和接收數(shù)據(jù)分組。為此,源自于用戶應(yīng)用的發(fā)送分組的請(qǐng)求被與用戶應(yīng)用相關(guān)聯(lián)的VPN代理攔截。VPN代理又將環(huán)回接口的地址與用戶應(yīng)用相關(guān)聯(lián)。然后,通過(guò)環(huán)回接口將由用戶應(yīng)用發(fā)送的分組改向至VPN客戶端。同樣地,通過(guò)環(huán)回接口將由VPN客戶端從企業(yè)網(wǎng)絡(luò)接收到的分組路由到用戶應(yīng)用。
文檔編號(hào)H04L12/12GK102257760SQ200980151045
公開(kāi)日2011年11月23日 申請(qǐng)日期2009年12月16日 優(yōu)先權(quán)日2008年12月17日
發(fā)明者薩達(dá)西文 B. 申請(qǐng)人:北方電訊網(wǎng)絡(luò)有限公司