CN107332872A - 一种基于VPN连接实现Android设备网络灵活管控的方法 - Google Patents

一种基于VPN连接实现Android设备网络灵活管控的方法 Download PDF

Info

Publication number
CN107332872A
CN107332872A CN201710369286.4A CN201710369286A CN107332872A CN 107332872 A CN107332872 A CN 107332872A CN 201710369286 A CN201710369286 A CN 201710369286A CN 107332872 A CN107332872 A CN 107332872A
Authority
CN
China
Prior art keywords
vpn
android device
network
data
received
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN201710369286.4A
Other languages
English (en)
Inventor
甘刚
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Chengdu Union Cloud Security Technology Co Ltd
Original Assignee
Chengdu Union Cloud Security Technology Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Chengdu Union Cloud Security Technology Co Ltd filed Critical Chengdu Union Cloud Security Technology Co Ltd
Priority to CN201710369286.4A priority Critical patent/CN107332872A/zh
Publication of CN107332872A publication Critical patent/CN107332872A/zh
Pending legal-status Critical Current

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/54Presence management, e.g. monitoring or registration for receipt of user log-on information, or the connection status of the users
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/55Detecting local intrusion or implementing counter-measures
    • G06F21/556Detecting local intrusion or implementing counter-measures involving covert channels, i.e. data leakage between processes
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/544Buffers; Shared memory; Pipes
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/547Remote procedure calls [RPC]; Web services

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Hardware Design (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

本发明公开了一种基于VPN连接实现Android设备网络灵活管控的方法,包括以下步骤:将Android设备通信连接于VPN,实现Android设备与VPN进行数据交换;VPN通过将其从Android设备收到的数据转发到原本/虚假地址的方式,实现Android设备网络的打开或关闭;若需要选择性打开或关闭指定应用程序的网络,则将VPN从该应用程序收到的数据进行解析,判断VPN收到的数据是否符合特定格式,如果符合,则将VPN收到的数据正常转发到原本地址,以打开指定应用程序的网络;如果不符合,则将VPN收到的数据转发到虚假地址,以关闭指定应用程序的网络。本发明解决了现Android设备偷跑流量,容易泄露隐私、泄密等技术问题,用户还可灵活配置,选择性打开或者关闭某些程序的网络使用功能。

Description

一种基于VPN连接实现Android设备网络灵活管控的方法
技术领域
本发明属于网络管控技术领域,尤其涉及一种Android设备的灵活管控方法。
背景技术
安卓(Android)系统作为自由及开放源代码的操作系统,近几年大量使用在智能设备,如智能手机和平板电脑上。随之而来的大量的程序被研发用于安卓系统上,还有大量的使用场景需要有不同的实际需求。从用户来看,程序在后台偷跑流量,偷偷将用户隐私数据传输出去,导致网银被盗,被监听监视,无端扣费,隐私泄露;从单位来看,在工作时候玩耍手机,导致工作效率低下,而又要用手机传播数据,进行联系,无法不用,这就需要针对特定应用进行网络管控,还有在某些特定保密单位,网络的灵活管控对于失泄密的预防有很大帮助。目前均是用户自己手动打开或关闭网络,但在未注意的时候,有的程序在后台偷偷打开,用户无法得知。
发明内容
本发明的目的在于:提供一种基于VPN连接实现Android设备网络灵活管控的方法,以解决现有Android设备偷跑流量,容易泄露隐私、泄密等技术问题,用户还可灵活配置,选择性打开或者关闭某些应用程序的网络使用功能。
本发明采用的技术方案如下:
一种基于VPN连接实现Android设备网络灵活管控的方法,包括以下步骤:
步骤一、建立VPN隧道:将Android设备通信连接于VPN,实现Android设备与VPN进行数据交换;
步骤二、执行网络管控:VPN通过将其从Android设备收到的数据转发到原本/虚假地址的方式,实现Android设备网络的打开或关闭;
若需要选择性打开或关闭指定应用程序的网络,则将VPN从该应用程序收到的数据进行解析,判断VPN收到的数据是否符合特定格式,
如果符合,则将VPN收到的数据正常转发到原本地址,以打开指定应用程序的网络;
如果不符合,则将VPN收到的数据转发到虚假地址,以关闭指定应用程序的网络。
进一步的,步骤一中,建立VPN隧道的过程包括:
1.1:Android设备的VPN程序使用socket将相应的IP数据包发送到真实的网络设备上;
1.2:Android设备通过iptables和nat将所有IP数据包处理后,转发到tun虚拟机;
1.3:Android设备的VPN程序通过打开/dev/tun设备,并读取/dev/tun设备上的数据获得所有转发到tun虚拟机上的IP数据包。
进一步的,网络设备为wifi设备。
进一步的,步骤二中,采用link_socket_read()方法接收数据并进行解析。
进一步的,步骤二中,使用SSL协议进行数据的处理,以判断VPN收到的数据是否符合特定格式。
进一步的,步骤一中,建立VPN隧道不需要获得Android设备的root权限。
综上所述,由于采用了上述技术方案,本发明的有益效果是:
本发明通过建立VPN隧道,实现Android设备与VPN进行数据交换,并利用VPN来Android设备网络的打开或关闭,任何应用程序均无法在后台偷偷打开网络,偷偷传输数据,解决了现有Android设备偷跑流量,容易泄露隐私、泄密等技术问题;而且,还可以通过本发明实现选择性打开或者关闭某些应用程序的网络使用功能,满足了用户灵活配置应用程序网络的需求。
附图说明
图1是一种基于VPN的连接实现Android设备网络灵活管控的方法流程图。
图2是一种vpnService框架数据转换流程图。
具体实施方式
本说明书中公开的所有特征,除了互相排斥的特征和/或步骤以外,均可以以任何方式组合。
下面结合图1~2,对本发明作详细说明。
一种基于VPN连接实现Android设备网络灵活管控的方法,包括以下步骤:
步骤一、建立VPN隧道:将Android设备通信连接于VPN,实现Android设备与VPN进行数据交换;
所述方法中,主要是利用VpnService框架,建立起一条从设备到远端的VPN连接,那么IP数据包在设备上就会完成步骤二中的四个转换。
建立VPN隧道的过程包括:
1.1:Android设备的VPN程序使用socket将相应的IP数据包发送到真实的网络设备上;一般网络设备只有无线网卡,因此是发送到真实的wifi设备上;
1.2:Android系统通过iptables和nat将所有IP数据包处理后,转发到tun虚拟机, 端口是tun0;
1.3:Android设备的VPN程序通过打开/dev/tun设备,并读取/dev/tun设备上的数据获得所有转发到tun虚拟机上的IP数据包。因为设备上的所有IP数据包都会被NAT转成原地址是tun0端口发送的,所以也就是VPN程序可以获得进出该设备的所有数据。
步骤二、执行网络管控:VPN通过将其从Android设备收到的数据转发到原本/虚假地址的方式,实现Android设备网络的打开或关闭;
若需要选择性打开或关闭指定应用程序的网络,则将VPN从该应用程序收到的数据进行解析,判断VPN收到的数据是否符合特定格式,
如果符合,则将VPN收到的数据正常转发到原本地址,以打开指定应用程序的网络;
如果不符合,则将VPN收到的数据转发到虚假地址,以关闭指定应用程序的网络。
整个转发过程为:经过处理的IP数据包VPN调用虚拟网卡的字符处理程序tun_write()写入虚拟网卡的字符设备,设备驱动程序完成数据从用户区到核心区的复制,并将数据写入skb链表,然后调用网卡netif_rx()接收程序,数据包再次进入系统TCP/IP协议栈,传到上层应用程序。
所述方法中,要实现数据能够传输成功,需要实现一个继承自Activity类的带UI的客户程序和一个继承自VpnService类的服务程序。首先必须要在AndroidManifest.xml中显式申明使用“android.permission.BIND_VPN_SERVICE”权限。
客户程序一般要首先调用VpnService.prepare函数。目前Android只支持一条VPN连接,如果新的程序想建立一条VPN连接,必须先中断系统中当前存在的那个VPN连接。
同时,由于VPN程序的权利,必须由用户点击确认连接窗口。
VpnService.prepare函数的目的,主要是用来检查当前系统中是不是已经存在一个VPN连接了,如果有了的话,是不是就是本程序创建的。
如果当前系统中没有VPN连接,或者存在的VPN连接不是本程序建立的,则VpnService.prepare函数会返回一个intent。这个intent就是用来触发确认对话框的,程序会接着调用startActivityForResult将对话框弹出来等用户确认。如果用户确认了,则会关闭前面已经建立的VPN连接,并重置虚拟端口。该对话框返回的时候,会调用onActivityResult函数,并告之用户的选择。
如果当前系统中有VPN连接,并且这个连接就是本程序建立的,则函数会返回null,就不需要用户再确认了。因为用户在本程序第一次建立VPN连接的时候已经确认过了,就不要再重复确认了,直接手动调用onActivityResult函数就行了。
如果返回结果是OK的,也就是用户同意建立VPN连接,继承自VpnService类的服务启动起来,通过intent传递一些别的参数。
服务程序实现必须要继承自android.net.VpnService类,public classMyVpnService extends VpnService。VpnService类封装了建立VPN连接所必须的所有函数,后面会逐步用到。
建立连接的第一步是要用合适的参数,创建并初始化好tun0虚拟网络端口,这可以通过在VpnService类中的一个内部类Builder来做到:
ParcelFileDescriptor interface=builder.establish();可以看到,这里使用了标准的Builder设计模式。在正式建立(establish)虚拟网络接口之前,需要设置好几个参数,分别是:
1)MTU(Maximun Transmission Unit),即表示虚拟网络端口的最大传输单元,如果发送的包长度超过这个数字,则会被分包;
2)Address,即这个虚拟网络端口的IP地址;
3)Route,只有匹配上的IP数据包,才会被路由到虚拟端口上去。如果是0.0.0.0/0的话,则会将所有的IP数据包都路由到虚拟端口上去;
4)DNS Server,就是该端口的DNS服务器地址;
5)Search Domain,就是添加DNS域名的自动补齐。DNS服务器必须通过全域名进行搜索,但每次查找都输入全域名太麻烦了,可以通过配置域名的自动补齐规则予以简化;
6)Session,就是你要建立的VPN连接的名字,它将会在系统管理的与VPN连接相关的通知栏和对话框中显示出来;
7)Configure Intent,这个intent指向一个配置页面,用来配置VPN连接。它不是必须的,如果没设置的话,则系统弹出的VPN相关对话框中不会出现配置按钮。
最后调用Builder.establish函数,如果一切正常的话,tun0虚拟网络接口就建立 完成了。并且,同时还会通过iptables命令,修改NAT表,将所有数据转发到tun0接口上。
这之后,就可以通过读写VpnService.Builder返回的ParcelFileDescriptor实例来获得设备上所有向外发送的IP数据包和返回处理过后的IP数据包到TCP/IP协议栈:
ParcelFileDescriptor类有一个getFileDescriptor函数,其会返回一个文件描述符,这样就可以将对接口的读写操作转换成对文件的读写操作。
每次调用FileInputStream.read函数会读取一个IP数据包,而调用FileOutputStream.write函数会写入一个IP数据包到TCP/IP协议栈。
所述方法中:
1).VPN连接对于应用程序来说是完全透明的,应用程序完全感知不到VPN的存在,也不需要为支持VPN做任何更改;
2).并不需要获得Android设备的root权限就可以建立VPN连接。
根据,在应用程序内的AndroidManifest.xml文件中申明需要一个参数名称为“android.permission.BIND_VPN_S”“android.permission.BIND_VPN_SERVICE”的特殊权限;
3).在正式建立VPN连接之前,Android系统会弹出一个对话框,需要用户明确的同意;
4).一旦建立起了VPN连接,Android设备上所有发送出去的IP数据包,都会被转发到虚拟网卡的网络接口上去(主要是通过给不同的套接字打fwmark标签和iproute2策略路由来实现的);
5).VPN程序可以通过读取这个接口上的数据,来获得所有设备上发送出去的IP数据包;同时,可以通过写入数据到这个接口上,将任何IP数据包插入系统的TCP/IP协议栈,最终送给接收的应用程序;
6).Android系统中同一时间只允许建立一条VPN连接。如果有程序想建立新的VPN连接,在获得用户同意后,前面已有的VPN连接会被中断;
7).通过使用VpnService,让VPN程序可以获得设备上的所有IP数据包。通过前面的简单分析,用来在Android设备上建立和远端服务器之间的VPN连接。
通过以上实施方式的描述可知,本领域的技术人员可以清楚地了解到本发明可以借助软件增加必须的通用硬件平台的方式来实现。虽然通过实施例描述了本发明,本领域的技术人员知道,本发明有很多变形和变化而不能脱离本发明的精神,一样受本发明的权利要求保护。本发明未详细阐述的部分属于本领域公知技术,本领域技术人员根据已有的描述已能够在不付出创造性劳动的前提下进行实施,因此,不再赘述。

Claims (6)

1.一种基于VPN连接实现Android设备网络灵活管控的方法,其特征在于,包括以下步骤:
步骤一、建立VPN隧道:将Android设备通信连接于VPN,实现Android设备与VPN进行数据交换;
步骤二、执行网络管控:VPN通过将其从Android设备收到的数据转发到原本/虚假地址的方式,实现Android设备网络的打开或关闭;
若需要选择性打开或关闭指定应用程序的网络,则将VPN从该应用程序收到的数据进行解析,判断VPN收到的数据是否符合特定格式,
如果符合,则将VPN收到的数据正常转发到原本地址,以打开指定应用程序的网络;
如果不符合,则将VPN收到的数据转发到虚假地址,以关闭指定应用程序的网络。
2.如权利要求1所述的一种基于VPN连接实现Android设备网络灵活管控的方法,其特征在于,步骤一中,建立VPN隧道的过程包括:
1.1:Android设备的VPN程序使用socket将相应的IP数据包发送到真实的网络设备上;
1.2:Android系统通过iptables和nat将所有IP数据包处理后,转发到tun虚拟机;
1.3:Android设备的VPN程序通过打开/dev/tun设备,并读取/dev/tun设备上的数据获得所有转发到tun虚拟机上的IP数据包。
3.如权利要求2所述的一种基于VPN连接实现Android设备网络灵活管控的方法,其特征在于,网络设备为wifi设备。
4.如权利要求1所述的一种基于VPN连接实现Android设备网络灵活管控的方法,其特征在于,步骤二中,采用link_socket_read()方法接收数据并进行解析。
5.如权利要求1或4所述的一种基于VPN连接实现Android设备网络灵活管控的方法,其特征在于,步骤二中,使用SSL协议进行数据的处理,以判断VPN收到的数据是否符合特定格式。
6.如权利要求1所述的一种基于VPN连接实现Android设备网络灵活管控的方法,其特征在于,步骤一中,建立VPN隧道不需要获得Android设备的root权限。
CN201710369286.4A 2017-05-23 2017-05-23 一种基于VPN连接实现Android设备网络灵活管控的方法 Pending CN107332872A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201710369286.4A CN107332872A (zh) 2017-05-23 2017-05-23 一种基于VPN连接实现Android设备网络灵活管控的方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201710369286.4A CN107332872A (zh) 2017-05-23 2017-05-23 一种基于VPN连接实现Android设备网络灵活管控的方法

Publications (1)

Publication Number Publication Date
CN107332872A true CN107332872A (zh) 2017-11-07

Family

ID=60193602

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201710369286.4A Pending CN107332872A (zh) 2017-05-23 2017-05-23 一种基于VPN连接实现Android设备网络灵活管控的方法

Country Status (1)

Country Link
CN (1) CN107332872A (zh)

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108462701A (zh) * 2018-02-12 2018-08-28 武汉卡比特信息有限公司 一种免热点的共享手机网络上网系统和方法
CN108900473A (zh) * 2018-06-04 2018-11-27 麒麟合盛网络技术股份有限公司 一种数据监控方法、装置和系统
CN109194747A (zh) * 2018-09-10 2019-01-11 四川长虹电器股份有限公司 云环境下的流量镜像方法及系统
CN111988776A (zh) * 2020-08-25 2020-11-24 珠海市魅族科技有限公司 网络切换方法、装置、设备和存储介质
CN115834560A (zh) * 2022-11-21 2023-03-21 北京天融信网络安全技术有限公司 基于安卓系统的免权限抓包的方法、装置及电子设备

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103840994A (zh) * 2012-11-23 2014-06-04 华耀(中国)科技有限公司 一种用户端通过 vpn 访问内网的系统及方法
CN104010000A (zh) * 2014-06-13 2014-08-27 北京联宇益通科技发展有限公司 安卓系统非超级用户权限下数据包过滤方法、装置和系统
CN104092691A (zh) * 2014-07-15 2014-10-08 北京奇虎科技有限公司 免root权限的联网防火墙的实现方法及客户端
CN105100095A (zh) * 2015-07-17 2015-11-25 北京奇虎科技有限公司 移动终端应用程序安全交互方法及装置
CN105530255A (zh) * 2015-12-16 2016-04-27 网宿科技股份有限公司 验证请求数据的方法及装置
CN106375142A (zh) * 2016-08-26 2017-02-01 腾讯科技(深圳)有限公司 应用程序的测试方法和装置

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103840994A (zh) * 2012-11-23 2014-06-04 华耀(中国)科技有限公司 一种用户端通过 vpn 访问内网的系统及方法
CN104010000A (zh) * 2014-06-13 2014-08-27 北京联宇益通科技发展有限公司 安卓系统非超级用户权限下数据包过滤方法、装置和系统
CN104092691A (zh) * 2014-07-15 2014-10-08 北京奇虎科技有限公司 免root权限的联网防火墙的实现方法及客户端
CN105100095A (zh) * 2015-07-17 2015-11-25 北京奇虎科技有限公司 移动终端应用程序安全交互方法及装置
CN105530255A (zh) * 2015-12-16 2016-04-27 网宿科技股份有限公司 验证请求数据的方法及装置
CN106375142A (zh) * 2016-08-26 2017-02-01 腾讯科技(深圳)有限公司 应用程序的测试方法和装置

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
张斯: ""ANDROID移动终端隐私数据保护系统涉及与实现"", 《中国优秀硕士学位论文全文数据库信息科技辑》 *

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108462701A (zh) * 2018-02-12 2018-08-28 武汉卡比特信息有限公司 一种免热点的共享手机网络上网系统和方法
CN108900473A (zh) * 2018-06-04 2018-11-27 麒麟合盛网络技术股份有限公司 一种数据监控方法、装置和系统
CN109194747A (zh) * 2018-09-10 2019-01-11 四川长虹电器股份有限公司 云环境下的流量镜像方法及系统
CN111988776A (zh) * 2020-08-25 2020-11-24 珠海市魅族科技有限公司 网络切换方法、装置、设备和存储介质
CN111988776B (zh) * 2020-08-25 2024-02-09 珠海市魅族科技有限公司 网络切换方法、装置、设备和存储介质
CN115834560A (zh) * 2022-11-21 2023-03-21 北京天融信网络安全技术有限公司 基于安卓系统的免权限抓包的方法、装置及电子设备

Similar Documents

Publication Publication Date Title
CN107332872A (zh) 一种基于VPN连接实现Android设备网络灵活管控的方法
US9722971B2 (en) Method for routing within a mobile terminal emulating a contactless payment card
CN105933888B (zh) 一种基于NFC的eSIM卡烧录方法及装置
CN104751330B (zh) 支付方法和智能设备
EP3066798A2 (en) Method for increasing layer-3 longest prefix match scale
CN101383822A (zh) 航空电信网路由器虚拟机
CN102932954A (zh) 移动无线电通信设备及管理该设备的连接状态的方法
CN105939239A (zh) 虚拟网卡的数据传输方法及装置
CN105939291A (zh) 报文处理方法和网络设备
CN109743244A (zh) 一种基于sdn与nfv技术实现高速互联互通的系统和方法
CN105190530A (zh) 传输硬件渲染的图形数据
CN106557820A (zh) 一种变电运维标准作业移动端平台
CN106330779A (zh) 服务器、物理交换机以及通信系统
CN106921578A (zh) 一种转发表项的生成方法和装置
CN104410581A (zh) Afdx网络的配置信息设计及信息提取
CN107707557A (zh) 匿名访问方法、装置、网络设备及可读存储介质
CN115604653A (zh) 智能卡应用的选取方法、装置、电子设备及存储介质
CN104301449A (zh) 一种修改ip地址的方法和装置
CN108462701A (zh) 一种免热点的共享手机网络上网系统和方法
CN104936159A (zh) 一种降低移动终端流量资费的装置及方法
CN110035113A (zh) 一种多路异构电台的远程管控系统及方法
CN105306429A (zh) 状态通知
KR100990744B1 (ko) 게이트웨이서버와 이동통신단말기 식별정보를 이용한 통신로 개설방법
CN118282934A (zh) 用于虚拟路由架构的套接字通信实现方法及装置
CN102905300A (zh) 基于网络数据的lte仿真测试流程自动生成方法

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
RJ01 Rejection of invention patent application after publication

Application publication date: 20171107

RJ01 Rejection of invention patent application after publication