虛擬專用網(wǎng)絡(luò)的實(shí)現(xiàn)方法及客戶端設(shè)備的制造方法
【技術(shù)領(lǐng)域】
[0001] 本發(fā)明實(shí)施例涉及計(jì)算機(jī)技術(shù),尤其涉及一種虛擬專用網(wǎng)絡(luò)的實(shí)現(xiàn)方法及客戶端 設(shè)備。
【背景技術(shù)】
[0002] 虛擬專用網(wǎng)絡(luò)(VirtualPrivate化twork,簡(jiǎn)稱VPN)是一條穿過公用網(wǎng)絡(luò)的安 全、穩(wěn)定的隧道。通過對(duì)網(wǎng)絡(luò)數(shù)據(jù)的封包和加密傳輸,在一個(gè)公用網(wǎng)絡(luò)建立一個(gè)臨時(shí)的、安 全的連接,從而實(shí)現(xiàn)在公網(wǎng)上傳輸私有數(shù)據(jù)、達(dá)到私有網(wǎng)絡(luò)的安全級(jí)別。常用的兩種VPN技 術(shù)分別是基于傳統(tǒng)網(wǎng)絡(luò)安全協(xié)議的VPN技術(shù)和基于安全套接層(SecuritySocketLayer, 簡(jiǎn)稱SSL)VPN技術(shù),前者主要作用于網(wǎng)絡(luò)層,而后者主要作用于應(yīng)用層。SSLVPN是WSSL 為基礎(chǔ)的VPN技術(shù),它利用S化協(xié)議提供的基于證書的身份認(rèn)證、數(shù)據(jù)加密和消息完整性驗(yàn) 證機(jī)制,為用戶遠(yuǎn)程訪問公司內(nèi)部網(wǎng)絡(luò)(W下簡(jiǎn)稱內(nèi)網(wǎng))提供了安全保證。SSLVPN有多種 使用方式,其中3層SSLVPN使用的最為廣泛。網(wǎng)絡(luò)驅(qū)動(dòng)包括傳輸層驅(qū)動(dòng)接口燈ransport DriverInte;rface,簡(jiǎn)稱TDI)驅(qū)動(dòng)和網(wǎng)絡(luò)驅(qū)動(dòng)接 口規(guī)范(NetworkDriverInte;rface Specification,簡(jiǎn)稱NDI巧驅(qū)動(dòng),其中,NDIS又可分為協(xié)議驅(qū)動(dòng)、中間層驅(qū)動(dòng)和網(wǎng)卡驅(qū)動(dòng)。3 層SSLVPN需要安裝客戶端軟件。在啟動(dòng)SSLVPN客戶端(W下簡(jiǎn)稱客戶端)登錄SSLVPN 網(wǎng)關(guān)(W下簡(jiǎn)稱網(wǎng)關(guān))之后,客戶端與網(wǎng)關(guān)建立一條S化隧道,并從網(wǎng)關(guān)申請(qǐng)一個(gè)虛擬IP 地址,客戶端對(duì)用戶的操作系統(tǒng)進(jìn)行配置,使得系統(tǒng)上的應(yīng)用程序可W使用該虛擬IP地址 訪問內(nèi)網(wǎng)服務(wù)器??蛻舳私孬@使用虛擬IP地址的報(bào)文,將截獲的報(bào)文通過之前建立的SSL 隧道轉(zhuǎn)發(fā)到網(wǎng)關(guān),由網(wǎng)關(guān)將送些報(bào)文轉(zhuǎn)發(fā)給內(nèi)網(wǎng)服務(wù)器。
[0003] 現(xiàn)有技術(shù)中,在安裝客戶端的時(shí)候在用戶操作系統(tǒng)中新建一張?zhí)摂M網(wǎng)卡,平時(shí)該 虛擬網(wǎng)卡處于禁用狀態(tài)。在啟動(dòng)客戶端并登錄網(wǎng)關(guān)時(shí),客戶端從網(wǎng)關(guān)申請(qǐng)到一個(gè)虛擬IP 地址,客戶端啟動(dòng)該虛擬網(wǎng)卡并將申請(qǐng)到的虛擬IP地址設(shè)置為該虛擬網(wǎng)卡的地址。當(dāng)有 進(jìn)程通過該虛擬網(wǎng)卡訪問內(nèi)網(wǎng)服務(wù)器時(shí),應(yīng)用程序發(fā)送的數(shù)據(jù)經(jīng)過驅(qū)動(dòng)找向下發(fā)送數(shù)據(jù), 最終發(fā)送到NDIS虛擬網(wǎng)卡驅(qū)動(dòng)時(shí),虛擬網(wǎng)卡接收上層驅(qū)動(dòng)下發(fā)的報(bào)文,將報(bào)文提交給客戶 端,客戶端通過登錄時(shí)建立的S化隧道將報(bào)文發(fā)送到網(wǎng)關(guān),網(wǎng)關(guān)再將報(bào)文轉(zhuǎn)發(fā)到內(nèi)網(wǎng)服務(wù) 器上。
[0004] 現(xiàn)有技術(shù)的問題是,系統(tǒng)中的所有的進(jìn)程都可W使用虛擬網(wǎng)卡,都可W訪問內(nèi)網(wǎng) 服務(wù)器,如果需要限制某些進(jìn)程的訪問則沒有辦法實(shí)現(xiàn),且啟動(dòng)客戶端時(shí)由于需要同時(shí)啟 動(dòng)虛擬網(wǎng)卡,客戶端啟動(dòng)速度慢。
【發(fā)明內(nèi)容】
[0005] 本發(fā)明實(shí)施例提供一種虛擬專用網(wǎng)絡(luò)的實(shí)現(xiàn)方法及客戶端設(shè)備,W解決現(xiàn)有技術(shù) 中不能實(shí)現(xiàn)對(duì)進(jìn)程訪問的控制,且啟動(dòng)客戶端時(shí)由于需要同時(shí)啟動(dòng)虛擬網(wǎng)卡,客戶端啟動(dòng) 速度慢的問題。
[0006] 第一方面,本發(fā)明實(shí)施例提供一種虛擬專用網(wǎng)絡(luò)的實(shí)現(xiàn)方法,所述方法應(yīng)用于基 于安全套接層協(xié)議的虛擬專用網(wǎng)絡(luò)SSLVPN中,所述SSLVPN包括;客戶端設(shè)備、網(wǎng)關(guān)和所 述SSLVPN的內(nèi)網(wǎng)服務(wù)器,所述客戶端設(shè)備通過網(wǎng)關(guān)與所述內(nèi)網(wǎng)服務(wù)器通信,所述客戶端 設(shè)備包括傳輸層驅(qū)動(dòng)接口TDI驅(qū)動(dòng)、網(wǎng)絡(luò)驅(qū)動(dòng)接口規(guī)范NDIS協(xié)議驅(qū)動(dòng)、網(wǎng)絡(luò)驅(qū)動(dòng)接口規(guī)范 NDIS中間層驅(qū)動(dòng)、網(wǎng)絡(luò)驅(qū)動(dòng)接口規(guī)范NDIS網(wǎng)卡驅(qū)動(dòng)和客戶端,所述方法包括:
[0007] 所述NDIS中間層驅(qū)動(dòng)捕獲應(yīng)用程序向所述內(nèi)網(wǎng)服務(wù)器發(fā)送的報(bào)文,根據(jù)所述報(bào) 文對(duì)應(yīng)的進(jìn)程標(biāo)識(shí)號(hào)PID,判斷是否允許所述報(bào)文對(duì)應(yīng)的進(jìn)程使用所述SSLVPN;
[0008] 若允許使用,則所述NDIS中間層驅(qū)動(dòng)建立新報(bào)文,將所述新報(bào)文的目的地址設(shè)置 為所述應(yīng)用程序所在的客戶端設(shè)備的本機(jī)地址,將所述新報(bào)文的目的端口號(hào)設(shè)置為客戶端 接收所述報(bào)文的端口號(hào),將原所述報(bào)文的源網(wǎng)絡(luò)互連協(xié)議IP地址修改為虛擬網(wǎng)絡(luò)互連協(xié) 議IP地址,并將原所述報(bào)文作為所述新報(bào)文的載荷,將所述新報(bào)文提交給NDIS網(wǎng)卡驅(qū)動(dòng); 所述虛擬網(wǎng)絡(luò)互連協(xié)議IP地址為所述客戶端與所述網(wǎng)關(guān)建立安全套接層協(xié)議S化隧道后, 向所述網(wǎng)關(guān)獲取到的虛擬網(wǎng)絡(luò)互連協(xié)議IP地址;
[0009] 所述NDIS網(wǎng)卡驅(qū)動(dòng)將所述新報(bào)文發(fā)送到所述客戶端,由所述客戶端向所述內(nèi)網(wǎng) 服務(wù)器發(fā)送所述新報(bào)文。
[0010] 結(jié)合第一方面,在第一方面的第一種實(shí)現(xiàn)方式中,所述根據(jù)所述報(bào)文對(duì)應(yīng)的進(jìn)程 標(biāo)識(shí)號(hào)PID,判斷是否允許所述報(bào)文對(duì)應(yīng)的進(jìn)程使用所述SSLVPN,包括:
[0011] 獲取所述報(bào)文的協(xié)議類型和端口號(hào),根據(jù)協(xié)議類型、端口號(hào)和進(jìn)程標(biāo)識(shí)號(hào)PID的 映射關(guān)系確定所述報(bào)文對(duì)應(yīng)的PID,根據(jù)所述PID判斷是否允許所述PID對(duì)應(yīng)的進(jìn)程使用所 述S化VPN。
[0012] 結(jié)合第一方面、或第一方面的第一種實(shí)現(xiàn)方式,在第一方面的第二種實(shí)現(xiàn)方式中, 所述NDIS中間層驅(qū)動(dòng)捕獲應(yīng)用程序向所述內(nèi)網(wǎng)服務(wù)器發(fā)送的報(bào)文之前,還包括:
[001引所述TDI驅(qū)動(dòng)獲取發(fā)送報(bào)文的報(bào)文流的信息,所述信息包括協(xié)議類型、端口號(hào)和 進(jìn)程標(biāo)識(shí)號(hào)PID,將所述信息通知所述NDIS中間層驅(qū)動(dòng),所述NDIS中間層驅(qū)動(dòng)存儲(chǔ)所述信 息的映射關(guān)系。
[0014] 結(jié)合第一方面、或第一方面的第一、第二種實(shí)現(xiàn)方式,在第一方面的第H種實(shí)現(xiàn)方 式中,所述根據(jù)所述報(bào)文對(duì)應(yīng)的進(jìn)程標(biāo)識(shí)號(hào)PID,判斷是否允許所述報(bào)文對(duì)應(yīng)的進(jìn)程使用所 述SSLVPN之前,還包括:
[0015] 所述客戶端在所述NDIS中間層驅(qū)動(dòng)中設(shè)置是否允許所述報(bào)文對(duì)應(yīng)的進(jìn)程使用所 述SSLVPN的進(jìn)程標(biāo)識(shí)號(hào)PID。
[0016] 結(jié)合第一方面、或第一方面的第一至第H任一種實(shí)現(xiàn)方式,在第一方面的第四種 實(shí)現(xiàn)方式中,還包括:
[0017] 所述客戶端接收到所述網(wǎng)關(guān)轉(zhuǎn)發(fā)的所述內(nèi)網(wǎng)服務(wù)器的報(bào)文,將所述報(bào)文的目的地 址改為所述客戶端所在客戶端設(shè)備的本機(jī)地址,通過原始套接字RawSocket接口發(fā)送所述 報(bào)文到NDIS協(xié)議驅(qū)動(dòng),由所述NDIS協(xié)議驅(qū)動(dòng)轉(zhuǎn)發(fā)到對(duì)應(yīng)的應(yīng)用程序。
[0018] 第二方面,本發(fā)明實(shí)施例提供一種客戶端設(shè)備,應(yīng)用于基于安全套接層協(xié)議的虛 擬專用網(wǎng)絡(luò)SSLVPN中,所述SSLVPN包括;客戶端設(shè)備、網(wǎng)關(guān)和所述SSLVPN的內(nèi)網(wǎng)服務(wù) 器,所述客戶端設(shè)備通過網(wǎng)關(guān)與所述內(nèi)網(wǎng)服務(wù)器通信,所述客戶端設(shè)備包括傳輸層驅(qū)動(dòng)接 口TDI驅(qū)動(dòng)、網(wǎng)絡(luò)驅(qū)動(dòng)接口規(guī)范NDIS協(xié)議驅(qū)動(dòng)、網(wǎng)絡(luò)驅(qū)動(dòng)接口規(guī)范NDIS中間層驅(qū)動(dòng)、網(wǎng)絡(luò) 驅(qū)動(dòng)接口規(guī)范NDIS網(wǎng)卡驅(qū)動(dòng)和客戶端,所述NDIS中間層驅(qū)動(dòng),用于捕獲應(yīng)用程序向所述內(nèi) 網(wǎng)服務(wù)器發(fā)送的報(bào)文,根據(jù)所述報(bào)文對(duì)應(yīng)的進(jìn)程標(biāo)識(shí)號(hào)PID,判斷是否允許所述報(bào)文對(duì)應(yīng)的 進(jìn)程使用所述SSLVPN;
[0019] 若允許使用,則建立新報(bào)文,將所述新報(bào)文的目的地址設(shè)置為所述應(yīng)用程序所在 的客戶端設(shè)備的本機(jī)地址,將所述新報(bào)文的目的端口號(hào)設(shè)置為客戶端接收所述報(bào)文的端口 號(hào),將原所述報(bào)文的源網(wǎng)絡(luò)互連協(xié)議IP地址修改為虛擬網(wǎng)絡(luò)互連協(xié)議IP地址,并將原所述 報(bào)文作為所述新報(bào)文的載荷,將所述新報(bào)文提交給NDIS網(wǎng)卡驅(qū)動(dòng);所述虛擬網(wǎng)絡(luò)互連協(xié)議 IP地址為所述客戶端與所述網(wǎng)關(guān)建立安全套接層協(xié)議S化隧道后,向所述網(wǎng)關(guān)獲取到的虛 擬網(wǎng)絡(luò)互連協(xié)議IP地址;
[0020] 所述NDIS網(wǎng)卡驅(qū)動(dòng),用于將所述新報(bào)文發(fā)送到所述客戶端,由所述客戶端向所述 內(nèi)網(wǎng)服務(wù)器發(fā)送所述新報(bào)文。
[0021] 結(jié)合第二方面,在第二方面的第一種實(shí)現(xiàn)方式中,所述NDIS中間層驅(qū)動(dòng),具體用 于:
[0022] 獲取所述報(bào)文的協(xié)議類型和端口號(hào),根據(jù)協(xié)議類型、端口號(hào)和進(jìn)程標(biāo)識(shí)號(hào)PID的 映射關(guān)系確定所述報(bào)文對(duì)應(yīng)的PID,根據(jù)所述PID判斷是否允許所述PID對(duì)應(yīng)的進(jìn)程使用所 述S化VPN。
[0023] 結(jié)合第二方面、或第二方面的第一種實(shí)現(xiàn)方式,在第二方面的第二種實(shí)現(xiàn)方式中, 所述TDI驅(qū)動(dòng),用于獲取發(fā)送報(bào)文的報(bào)文流的信息,所述信息包括協(xié)議類型、端口號(hào)和進(jìn)程 標(biāo)識(shí)號(hào)PID,將所述信息通知所述NDIS中間層驅(qū)動(dòng),所述NDIS中間層驅(qū)動(dòng)存儲(chǔ)所述信息的 映射關(guān)系。
[0024] 結(jié)合第二方面、或第二方面的第一、第二種實(shí)現(xiàn)方式,在第二方面的第H種實(shí)現(xiàn)方 式中,所述客戶端,用于在所述NDIS中間層驅(qū)動(dòng)中設(shè)置是否允許所述報(bào)文對(duì)應(yīng)的進(jìn)程使用 所述SSLVPN的進(jìn)程標(biāo)識(shí)號(hào)PID。
[0025] 結(jié)合第二方面、或第二方面的第一至第H任一種實(shí)現(xiàn)方式,在第二方面的第四