種 實現(xiàn)方式中,所述客戶端,還用于:
[0026] 接收到所述網關轉發(fā)的所述內網服務器的報文,將所述報文的目的地址改為所 述客戶端所在客戶端設備的本機地址,通過原始套接字RawSocket接口發(fā)送所述報文到 NDIS協(xié)議驅動,由所述NDIS協(xié)議驅動轉發(fā)到對應的應用程序。
[0027] 本發(fā)明實施例虛擬專用網絡的實現(xiàn)方法及客戶端設備,通過NDIS中間層驅動捕 獲應用程序向所述內網服務器發(fā)送的報文,根據(jù)所述報文對應的進程標識號PID,判斷是否 允許所述報文對應的進程使用所述SSLVPN;若允許使用,則所述NDIS中間層驅動建立新 報文,將所述新報文的目的地址設置為所述應用程序所在的客戶端設備的本機地址,將所 述新報文的目的端口號設置為客戶端接收所述報文的端口號,將原所述報文的源IP地址 修改為虛擬IP地址,并將原所述報文作為所述新報文的載荷,將所述新報文提交給NDIS網 卡驅動;所述虛擬IP地址為所述客戶端與所述網關建立安全套接層協(xié)議S化隧道后,向所 述網關獲取到的虛擬IP地址;所述NDIS網卡驅動將所述新報文發(fā)送到所述客戶端,由所述 客戶端向所述內網服務器發(fā)送所述新報文,實現(xiàn)了根據(jù)進程的PID判斷是否允許該進程使 用所述SSLVPN,實現(xiàn)了基于進程控制的虛擬專用網絡,而且由于不再使用虛擬網卡,客戶 端的啟動速度明顯加快。
【附圖說明】
[0028] 為了更清楚地說明本發(fā)明實施例或現(xiàn)有技術中的技術方案,下面將對實施例或現(xiàn) 有技術描述中所需要使用的附圖作一簡單地介紹,顯而易見地,下面描述中的附圖是本發(fā) 明的一些實施例,對于本領域普通技術人員來講,在不付出創(chuàng)造性勞動性的前提下,還可W 根據(jù)送些附圖獲得其他的附圖。
[0029] 圖1為本發(fā)明虛擬專用網絡的實現(xiàn)方法實施例一的流程圖;
[0030] 圖2為本發(fā)明方法實施例一的網絡驅動的結構圖;
[0031] 圖3為本發(fā)明方法實施例一的網絡架構圖;
[0032] 圖4為本發(fā)明客戶端設備實施例一的結構示意圖。
【具體實施方式】
[0033] 為使本發(fā)明實施例的目的、技術方案和優(yōu)點更加清楚,下面將結合本發(fā)明實施例 中的附圖,對本發(fā)明實施例中的技術方案進行清楚、完整地描述,顯然,所描述的實施例是 本發(fā)明一部分實施例,而不是全部的實施例?;诒景l(fā)明中的實施例,本領域普通技術人員 在沒有作出創(chuàng)造性勞動前提下所獲得的所有其他實施例,都屬于本發(fā)明保護的范圍。
[0034] 圖1為本發(fā)明虛擬專用網絡的實現(xiàn)方法實施例一的流程圖。圖2為本發(fā)明方法實 施例一的網絡驅動的結構圖。圖3為本發(fā)明方法實施例一的網絡架構圖。本實施例的執(zhí)行 主體可W為客戶端設備,如圖1所示,本實施例的方法可W應用于基于安全套接層協(xié)議的 虛擬專用網絡SSLVPN中,所述SSLVPN包括;客戶端設備、網關和所述SSLVPN的內網服 務器,所述客戶端設備通過網關與所述內網服務器通信,所述客戶端設備包括傳輸層驅動 接口TDI驅動、網絡驅動接口規(guī)范NDIS協(xié)議驅動、網絡驅動接口規(guī)范NDIS中間層驅動、網 絡驅動接口規(guī)范NDIS網卡驅動和客戶端,所述方法包括:
[0035] 步驟101、NDIS中間層驅動捕獲應用程序向內網服務器發(fā)送的報文,根據(jù)報文對 應的進程標識號PID,判斷是否允許報文對應的進程使用SSLVPN。
[003引具體地,圖2中所示為Windows操作系統(tǒng)網絡驅動的層次結構,本發(fā)明實施例中 報文的捕獲是在NDIS中間層驅動完成的。Windows操作系統(tǒng)網絡驅動包括傳輸層驅動接 口(TransportDriverInte;rface,簡稱TDI)驅動和網絡驅動接口規(guī)范(NetworkDriver InterfaceSpecification,簡稱NDI巧驅動,其中,NDIS驅動又可分為NDIS協(xié)議驅動、NDIS 中間層驅動和NDIS網卡驅動。NDIS協(xié)議驅動實現(xiàn)具體的網絡協(xié)議(如tcpip.sys),NDIS 網卡驅動實現(xiàn)對物理網卡的操作,NDIS中間層驅動位于NDIS網卡驅動程序和NDIS協(xié)議驅 動程序之間,它向上提供小端口(Miniport)函數(shù)集,向下提供協(xié)議(Protocol)函數(shù)集,因 此對于上層驅動程序而言,它是小端口驅動程序;對于底層的驅動,它是協(xié)議驅動程序。 [0037] TDI驅動中可W獲取當前通信的進程信息,而NDIS驅動則不能獲取當前通信的進 程信息。
[003引如圖3所示,圖3中實線直線箭頭表示應用程序向內網服務器發(fā)送報文的數(shù)據(jù)流 走向,虛線直線箭頭表示內網服務器向應用程序發(fā)送報文的數(shù)據(jù)流走向,客戶端設備上的 應用程序向內網服務器發(fā)送報文,NDIS中間層驅動捕獲報文,根據(jù)獲取到的所述報文對應 的進程標識號PID,判斷是否允許報文對應的進程使用SSLVPN。
[0039]步驟102、若允許使用,則NDIS中間層驅動建立新報文,將新報文的目的地址設置 為應用程序所在的客戶端設備的本機地址,將新報文的目的端口號設置為客戶端接收所述 報文的端口號,將原報文的源網絡互連協(xié)議IP地址修改為虛擬網絡互連協(xié)議IP地址,并將 原報文作為所述新報文的載荷,將新報文提交給NDIS網卡驅動。
[0040] 其中,所述虛擬網絡互連協(xié)議IP地址為客戶端與網關建立安全套接層協(xié)議S化隧 道后,向網關獲取到的虛擬網絡互連協(xié)議IP地址。
[0041] 具體地,若判斷出允許報文對應的進程使用SSLVPN,則由NDIS中間層驅動新建 一個新報文,將新報文的目的地址設置為應用程序所在的客戶端設備的本機地址,將新報 文的目的端口號設置為客戶端接收報文的端口號,計算新的校驗和,將原報文的源IP地址 修改為從網關申請到的虛擬IP地址,并將原報文作為新報文的載荷復制到新報文中,將新 報文提交給NDIS網卡驅動。
[0042]NDIS中間層驅動需要重新分配一塊內存存儲新報文,新報文的長度是原報文長度 加上一個UDP頭和IP頭的長度,IP頭包括目的地址和校驗和,UDP頭包括目的端口號和校 驗和。將原報文作為新報文的載荷復制到新報文中,填充新報文的UDP頭和IP頭,然后將 新報文提交給下一層驅動。送樣新報文就將原報文作為內容(包括原報文的載荷和原報文 的TCP/UDP頭部和原報文的IP頭部)發(fā)送給客戶端,客戶端接收到該新報文將其直接轉發(fā) 給網關。
[0043] 上述虛擬IP地址是客戶端啟動后,與所述網關建立安全套接層協(xié)議S化隧道,并 獲取虛擬IP地址。
[0044] 可選地,所述方法還包括:
[0045] 若不允許報文對應的進程使用SSLVPN,則將所述報文直接提交給NDIS網卡驅 動。
[0046] 步驟103、NDIS網卡驅動將新報文發(fā)送到客戶端,由客戶端向內網服務器發(fā)送新 報文。
[0047] 具體地,由NDIS網卡驅動將新報文發(fā)送到客戶端,由客戶端經網關發(fā)送到內網服 務器,若不允許報文對應的進程使用SSLVPN則直接將原報文給NDIS網卡驅動。
[0048] 本實施例,通過NDIS中間層驅動捕獲應用程序向所述內網服務器發(fā)送的報文,根 據(jù)所述報文對應的進程標識號PID,判斷是否允許所述報文對應的進程使用所述SSLVPN; 若允許使用,則所述NDIS中間層驅動建立新報文,將所述新報文的目的地址設置為所述應 用程序所在的客戶端設備的本機地址,將所述新報文的目的端口號設置為客戶端接收所述 報文的端口號,將原所述報文的源IP地址修改為虛擬IP地址,并將原所述報文作為所述新 報文的載荷,將所述新報文提交給NDIS網卡驅動;所述虛擬IP地址為所述客戶端與所述網 關建立安全套接層協(xié)議S化隧道后,向所述網關獲取到的虛擬IP地址;所述NDIS網卡驅動 將所述新報文發(fā)送到所述客戶端,由所述客戶端向所述內網服務器發(fā)送所述新報文,實現(xiàn) 了根據(jù)進程的PID判斷是否允許該進程使用所述SSLVPN,實現(xiàn)了基于進程控制的虛擬專 用網絡,而且由于不再使用虛擬網卡,客戶端的啟動速度明顯加快,提高了用戶體驗。
[0049] 下面采用具體的實施例,對圖1所示方法實施例的技術方案進行詳細說明。
[0050] 在本發(fā)明方法實施例二中,進一步地,所述NDIS中間層驅動建立新報文之前,還 包括:
[0051] 所述客戶端啟動一個用戶數(shù)據(jù)包協(xié)議UDP進行報文的接收,將接收報文的端口號 和所述虛擬IP地址通知所述NDIS中間層驅動。
[0052] 具體地,客戶端啟動后,首先會向與所