亚洲成年人黄色一级片,日本香港三级亚洲三级,黄色成人小视频,国产青草视频,国产一区二区久久精品,91在线免费公开视频,成年轻人网站色直接看

一種基于VPN連接實(shí)現(xiàn)Android設(shè)備網(wǎng)絡(luò)靈活管控的方法與流程

文檔序號(hào):12890075閱讀:1312來(lái)源:國(guó)知局
本發(fā)明屬于網(wǎng)絡(luò)管控
技術(shù)領(lǐng)域
:,尤其涉及一種android設(shè)備的靈活管控方法。
背景技術(shù)
::安卓(android)系統(tǒng)作為自由及開(kāi)放源代碼的操作系統(tǒng),近幾年大量使用在智能設(shè)備,如智能手機(jī)和平板電腦上。隨之而來(lái)的大量的程序被研發(fā)用于安卓系統(tǒng)上,還有大量的使用場(chǎng)景需要有不同的實(shí)際需求。從用戶來(lái)看,程序在后臺(tái)偷跑流量,偷偷將用戶隱私數(shù)據(jù)傳輸出去,導(dǎo)致網(wǎng)銀被盜,被監(jiān)聽(tīng)監(jiān)視,無(wú)端扣費(fèi),隱私泄露;從單位來(lái)看,在工作時(shí)候玩耍手機(jī),導(dǎo)致工作效率低下,而又要用手機(jī)傳播數(shù)據(jù),進(jìn)行聯(lián)系,無(wú)法不用,這就需要針對(duì)特定應(yīng)用進(jìn)行網(wǎng)絡(luò)管控,還有在某些特定保密單位,網(wǎng)絡(luò)的靈活管控對(duì)于失泄密的預(yù)防有很大幫助。目前均是用戶自己手動(dòng)打開(kāi)或關(guān)閉網(wǎng)絡(luò),但在未注意的時(shí)候,有的程序在后臺(tái)偷偷打開(kāi),用戶無(wú)法得知。技術(shù)實(shí)現(xiàn)要素:本發(fā)明的目的在于:提供一種基于vpn連接實(shí)現(xiàn)android設(shè)備網(wǎng)絡(luò)靈活管控的方法,以解決現(xiàn)有android設(shè)備偷跑流量,容易泄露隱私、泄密等技術(shù)問(wèn)題,用戶還可靈活配置,選擇性打開(kāi)或者關(guān)閉某些應(yīng)用程序的網(wǎng)絡(luò)使用功能。本發(fā)明采用的技術(shù)方案如下:一種基于vpn連接實(shí)現(xiàn)android設(shè)備網(wǎng)絡(luò)靈活管控的方法,包括以下步驟:步驟一、建立vpn隧道:將android設(shè)備通信連接于vpn,實(shí)現(xiàn)android設(shè)備與vpn進(jìn)行數(shù)據(jù)交換;步驟二、執(zhí)行網(wǎng)絡(luò)管控:vpn通過(guò)將其從android設(shè)備收到的數(shù)據(jù)轉(zhuǎn)發(fā)到原本/虛假地址的方式,實(shí)現(xiàn)android設(shè)備網(wǎng)絡(luò)的打開(kāi)或關(guān)閉;若需要選擇性打開(kāi)或關(guān)閉指定應(yīng)用程序的網(wǎng)絡(luò),則將vpn從該應(yīng)用程序收到的數(shù)據(jù)進(jìn)行解析,判斷vpn收到的數(shù)據(jù)是否符合特定格式,如果符合,則將vpn收到的數(shù)據(jù)正常轉(zhuǎn)發(fā)到原本地址,以打開(kāi)指定應(yīng)用程序的網(wǎng)絡(luò);如果不符合,則將vpn收到的數(shù)據(jù)轉(zhuǎn)發(fā)到虛假地址,以關(guān)閉指定應(yīng)用程序的網(wǎng)絡(luò)。進(jìn)一步的,步驟一中,建立vpn隧道的過(guò)程包括:1.1:android設(shè)備的vpn程序使用socket將相應(yīng)的ip數(shù)據(jù)包發(fā)送到真實(shí)的網(wǎng)絡(luò)設(shè)備上;1.2:android設(shè)備通過(guò)iptables和nat將所有ip數(shù)據(jù)包處理后,轉(zhuǎn)發(fā)到tun虛擬機(jī);1.3:android設(shè)備的vpn程序通過(guò)打開(kāi)/dev/tun設(shè)備,并讀取/dev/tun設(shè)備上的數(shù)據(jù)獲得所有轉(zhuǎn)發(fā)到tun虛擬機(jī)上的ip數(shù)據(jù)包。進(jìn)一步的,網(wǎng)絡(luò)設(shè)備為wifi設(shè)備。進(jìn)一步的,步驟二中,采用link_socket_read()方法接收數(shù)據(jù)并進(jìn)行解析。進(jìn)一步的,步驟二中,使用ssl協(xié)議進(jìn)行數(shù)據(jù)的處理,以判斷vpn收到的數(shù)據(jù)是否符合特定格式。進(jìn)一步的,步驟一中,建立vpn隧道不需要獲得android設(shè)備的root權(quán)限。綜上所述,由于采用了上述技術(shù)方案,本發(fā)明的有益效果是:本發(fā)明通過(guò)建立vpn隧道,實(shí)現(xiàn)android設(shè)備與vpn進(jìn)行數(shù)據(jù)交換,并利用vpn來(lái)android設(shè)備網(wǎng)絡(luò)的打開(kāi)或關(guān)閉,任何應(yīng)用程序均無(wú)法在后臺(tái)偷偷打開(kāi)網(wǎng)絡(luò),偷偷傳輸數(shù)據(jù),解決了現(xiàn)有android設(shè)備偷跑流量,容易泄露隱私、泄密等技術(shù)問(wèn)題;而且,還可以通過(guò)本發(fā)明實(shí)現(xiàn)選擇性打開(kāi)或者關(guān)閉某些應(yīng)用程序的網(wǎng)絡(luò)使用功能,滿足了用戶靈活配置應(yīng)用程序網(wǎng)絡(luò)的需求。附圖說(shuō)明圖1是一種基于vpn的連接實(shí)現(xiàn)android設(shè)備網(wǎng)絡(luò)靈活管控的方法流程圖。圖2是一種vpnservice框架數(shù)據(jù)轉(zhuǎn)換流程圖。具體實(shí)施方式本說(shuō)明書中公開(kāi)的所有特征,除了互相排斥的特征和/或步驟以外,均可以以任何方式組合。下面結(jié)合圖1~2,對(duì)本發(fā)明作詳細(xì)說(shuō)明。一種基于vpn連接實(shí)現(xiàn)android設(shè)備網(wǎng)絡(luò)靈活管控的方法,包括以下步驟:步驟一、建立vpn隧道:將android設(shè)備通信連接于vpn,實(shí)現(xiàn)android設(shè)備與vpn進(jìn)行數(shù)據(jù)交換;所述方法中,主要是利用vpnservice框架,建立起一條從設(shè)備到遠(yuǎn)端的vpn連接,那么ip數(shù)據(jù)包在設(shè)備上就會(huì)完成步驟二中的四個(gè)轉(zhuǎn)換。建立vpn隧道的過(guò)程包括:1.1:android設(shè)備的vpn程序使用socket將相應(yīng)的ip數(shù)據(jù)包發(fā)送到真實(shí)的網(wǎng)絡(luò)設(shè)備上;一般網(wǎng)絡(luò)設(shè)備只有無(wú)線網(wǎng)卡,因此是發(fā)送到真實(shí)的wifi設(shè)備上;1.2:android系統(tǒng)通過(guò)iptables和nat將所有ip數(shù)據(jù)包處理后,轉(zhuǎn)發(fā)到tun虛擬機(jī),端口是tun0;1.3:android設(shè)備的vpn程序通過(guò)打開(kāi)/dev/tun設(shè)備,并讀取/dev/tun設(shè)備上的數(shù)據(jù)獲得所有轉(zhuǎn)發(fā)到tun虛擬機(jī)上的ip數(shù)據(jù)包。因?yàn)樵O(shè)備上的所有ip數(shù)據(jù)包都會(huì)被nat轉(zhuǎn)成原地址是tun0端口發(fā)送的,所以也就是vpn程序可以獲得進(jìn)出該設(shè)備的所有數(shù)據(jù)。步驟二、執(zhí)行網(wǎng)絡(luò)管控:vpn通過(guò)將其從android設(shè)備收到的數(shù)據(jù)轉(zhuǎn)發(fā)到原本/虛假地址的方式,實(shí)現(xiàn)android設(shè)備網(wǎng)絡(luò)的打開(kāi)或關(guān)閉;若需要選擇性打開(kāi)或關(guān)閉指定應(yīng)用程序的網(wǎng)絡(luò),則將vpn從該應(yīng)用程序收到的數(shù)據(jù)進(jìn)行解析,判斷vpn收到的數(shù)據(jù)是否符合特定格式,如果符合,則將vpn收到的數(shù)據(jù)正常轉(zhuǎn)發(fā)到原本地址,以打開(kāi)指定應(yīng)用程序的網(wǎng)絡(luò);如果不符合,則將vpn收到的數(shù)據(jù)轉(zhuǎn)發(fā)到虛假地址,以關(guān)閉指定應(yīng)用程序的網(wǎng)絡(luò)。整個(gè)轉(zhuǎn)發(fā)過(guò)程為:經(jīng)過(guò)處理的ip數(shù)據(jù)包vpn調(diào)用虛擬網(wǎng)卡的字符處理程序tun_write()寫入虛擬網(wǎng)卡的字符設(shè)備,設(shè)備驅(qū)動(dòng)程序完成數(shù)據(jù)從用戶區(qū)到核心區(qū)的復(fù)制,并將數(shù)據(jù)寫入skb鏈表,然后調(diào)用網(wǎng)卡netif_rx()接收程序,數(shù)據(jù)包再次進(jìn)入系統(tǒng)tcp/ip協(xié)議棧,傳到上層應(yīng)用程序。所述方法中,要實(shí)現(xiàn)數(shù)據(jù)能夠傳輸成功,需要實(shí)現(xiàn)一個(gè)繼承自activity類的帶ui的客戶程序和一個(gè)繼承自vpnservice類的服務(wù)程序。首先必須要在androidmanifest.xml中顯式申明使用“android.permission.bind_vpn_service”權(quán)限??蛻舫绦蛞话阋紫日{(diào)用vpnservice.prepare函數(shù)。目前android只支持一條vpn連接,如果新的程序想建立一條vpn連接,必須先中斷系統(tǒng)中當(dāng)前存在的那個(gè)vpn連接。同時(shí),由于vpn程序的權(quán)利,必須由用戶點(diǎn)擊確認(rèn)連接窗口。vpnservice.prepare函數(shù)的目的,主要是用來(lái)檢查當(dāng)前系統(tǒng)中是不是已經(jīng)存在一個(gè)vpn連接了,如果有了的話,是不是就是本程序創(chuàng)建的。如果當(dāng)前系統(tǒng)中沒(méi)有vpn連接,或者存在的vpn連接不是本程序建立的,則vpnservice.prepare函數(shù)會(huì)返回一個(gè)intent。這個(gè)intent就是用來(lái)觸發(fā)確認(rèn)對(duì)話框的,程序會(huì)接著調(diào)用startactivityforresult將對(duì)話框彈出來(lái)等用戶確認(rèn)。如果用戶確認(rèn)了,則會(huì)關(guān)閉前面已經(jīng)建立的vpn連接,并重置虛擬端口。該對(duì)話框返回的時(shí)候,會(huì)調(diào)用onactivityresult函數(shù),并告之用戶的選擇。如果當(dāng)前系統(tǒng)中有vpn連接,并且這個(gè)連接就是本程序建立的,則函數(shù)會(huì)返回null,就不需要用戶再確認(rèn)了。因?yàn)橛脩粼诒境绦虻谝淮谓pn連接的時(shí)候已經(jīng)確認(rèn)過(guò)了,就不要再重復(fù)確認(rèn)了,直接手動(dòng)調(diào)用onactivityresult函數(shù)就行了。如果返回結(jié)果是ok的,也就是用戶同意建立vpn連接,繼承自vpnservice類的服務(wù)啟動(dòng)起來(lái),通過(guò)intent傳遞一些別的參數(shù)。服務(wù)程序?qū)崿F(xiàn)必須要繼承自android.net.vpnservice類,publicclassmyvpnserviceextendsvpnservice。vpnservice類封裝了建立vpn連接所必須的所有函數(shù),后面會(huì)逐步用到。建立連接的第一步是要用合適的參數(shù),創(chuàng)建并初始化好tun0虛擬網(wǎng)絡(luò)端口,這可以通過(guò)在vpnservice類中的一個(gè)內(nèi)部類builder來(lái)做到:parcelfiledescriptorinterface=builder.establish();可以看到,這里使用了標(biāo)準(zhǔn)的builder設(shè)計(jì)模式。在正式建立(establish)虛擬網(wǎng)絡(luò)接口之前,需要設(shè)置好幾個(gè)參數(shù),分別是:1)mtu(maximuntransmissionunit),即表示虛擬網(wǎng)絡(luò)端口的最大傳輸單元,如果發(fā)送的包長(zhǎng)度超過(guò)這個(gè)數(shù)字,則會(huì)被分包;2)address,即這個(gè)虛擬網(wǎng)絡(luò)端口的ip地址;3)route,只有匹配上的ip數(shù)據(jù)包,才會(huì)被路由到虛擬端口上去。如果是0.0.0.0/0的話,則會(huì)將所有的ip數(shù)據(jù)包都路由到虛擬端口上去;4)dnsserver,就是該端口的dns服務(wù)器地址;5)searchdomain,就是添加dns域名的自動(dòng)補(bǔ)齊。dns服務(wù)器必須通過(guò)全域名進(jìn)行搜索,但每次查找都輸入全域名太麻煩了,可以通過(guò)配置域名的自動(dòng)補(bǔ)齊規(guī)則予以簡(jiǎn)化;6)session,就是你要建立的vpn連接的名字,它將會(huì)在系統(tǒng)管理的與vpn連接相關(guān)的通知欄和對(duì)話框中顯示出來(lái);7)configureintent,這個(gè)intent指向一個(gè)配置頁(yè)面,用來(lái)配置vpn連接。它不是必須的,如果沒(méi)設(shè)置的話,則系統(tǒng)彈出的vpn相關(guān)對(duì)話框中不會(huì)出現(xiàn)配置按鈕。最后調(diào)用builder.establish函數(shù),如果一切正常的話,tun0虛擬網(wǎng)絡(luò)接口就建立完成了。并且,同時(shí)還會(huì)通過(guò)iptables命令,修改nat表,將所有數(shù)據(jù)轉(zhuǎn)發(fā)到tun0接口上。這之后,就可以通過(guò)讀寫vpnservice.builder返回的parcelfiledescriptor實(shí)例來(lái)獲得設(shè)備上所有向外發(fā)送的ip數(shù)據(jù)包和返回處理過(guò)后的ip數(shù)據(jù)包到tcp/ip協(xié)議棧:parcelfiledescriptor類有一個(gè)getfiledescriptor函數(shù),其會(huì)返回一個(gè)文件描述符,這樣就可以將對(duì)接口的讀寫操作轉(zhuǎn)換成對(duì)文件的讀寫操作。每次調(diào)用fileinputstream.read函數(shù)會(huì)讀取一個(gè)ip數(shù)據(jù)包,而調(diào)用fileoutputstream.write函數(shù)會(huì)寫入一個(gè)ip數(shù)據(jù)包到tcp/ip協(xié)議棧。所述方法中:1).vpn連接對(duì)于應(yīng)用程序來(lái)說(shuō)是完全透明的,應(yīng)用程序完全感知不到vpn的存在,也不需要為支持vpn做任何更改;2).并不需要獲得android設(shè)備的root權(quán)限就可以建立vpn連接。根據(jù),在應(yīng)用程序內(nèi)的androidmanifest.xml文件中申明需要一個(gè)參數(shù)名稱為“android.permission.bind_vpn_s”“android.permission.bind_vpn_service”的特殊權(quán)限;3).在正式建立vpn連接之前,android系統(tǒng)會(huì)彈出一個(gè)對(duì)話框,需要用戶明確的同意;4).一旦建立起了vpn連接,android設(shè)備上所有發(fā)送出去的ip數(shù)據(jù)包,都會(huì)被轉(zhuǎn)發(fā)到虛擬網(wǎng)卡的網(wǎng)絡(luò)接口上去(主要是通過(guò)給不同的套接字打fwmark標(biāo)簽和iproute2策略路由來(lái)實(shí)現(xiàn)的);5).vpn程序可以通過(guò)讀取這個(gè)接口上的數(shù)據(jù),來(lái)獲得所有設(shè)備上發(fā)送出去的ip數(shù)據(jù)包;同時(shí),可以通過(guò)寫入數(shù)據(jù)到這個(gè)接口上,將任何ip數(shù)據(jù)包插入系統(tǒng)的tcp/ip協(xié)議棧,最終送給接收的應(yīng)用程序;6).android系統(tǒng)中同一時(shí)間只允許建立一條vpn連接。如果有程序想建立新的vpn連接,在獲得用戶同意后,前面已有的vpn連接會(huì)被中斷;7).通過(guò)使用vpnservice,讓vpn程序可以獲得設(shè)備上的所有ip數(shù)據(jù)包。通過(guò)前面的簡(jiǎn)單分析,用來(lái)在android設(shè)備上建立和遠(yuǎn)端服務(wù)器之間的vpn連接。通過(guò)以上實(shí)施方式的描述可知,本領(lǐng)域的技術(shù)人員可以清楚地了解到本發(fā)明可以借助軟件增加必須的通用硬件平臺(tái)的方式來(lái)實(shí)現(xiàn)。雖然通過(guò)實(shí)施例描述了本發(fā)明,本領(lǐng)域的技術(shù)人員知道,本發(fā)明有很多變形和變化而不能脫離本發(fā)明的精神,一樣受本發(fā)明的權(quán)利要求保護(hù)。本發(fā)明未詳細(xì)闡述的部分屬于本領(lǐng)域公知技術(shù),本領(lǐng)域技術(shù)人員根據(jù)已有的描述已能夠在不付出創(chuàng)造性勞動(dòng)的前提下進(jìn)行實(shí)施,因此,不再贅述。當(dāng)前第1頁(yè)12當(dāng)前第1頁(yè)12
當(dāng)前第1頁(yè)1 2 
網(wǎng)友詢問(wèn)留言 已有1條留言
  • 152569... 來(lái)自[中國(guó)] 2022年08月12日 18:11
    資料太水了 就一個(gè)PDF概念說(shuō)明 網(wǎng)上實(shí)現(xiàn)的方法一大堆。差評(píng)
    0
1