Android下基于Iptables的一种app网络访问控制方案(二)
2015-12-07 16:24
731 查看
3.如何在Android系统中集成?
以上通过adb shell命令行在Android设备上将方案调通之后,接下来考虑如何集成在Android系统中。作为一个整体解决方案,需要至少解决两部分功能:
(1)网络访问规则。包括规则定义、存储、对外接口、对内转化成Iptables命令。
(2)Iptables命令执行。
第一部分比较简单,在此不详述。主要看第二部分。
对于某一个垂直功能,Android经典的架构一般是由Java层的服务和接口、C++层的守护进程、Linux内核这由上到下的三层架构。网络管理架构也是如此。
Java层的服务包括NetworkManagementService/ConnectivityService/NetworkStatsService等,可以以AIDL对外提供接口。C++层的守护进程是Netd。
可以在NetworkManagementService和Netd扩充接口实现执行Iptables命令:
(1)在INetworkManagementService.aidl中定义扩充接口。
(2)在NetworkManagementService.java中实现接口。
NetworkManagementService通过一个NativeDaemonConnector类的成员变量,与Netd通信(通过Socket),可以通过这个成员变量向Netd发Iptables命令。新增加一种命令类型专门处理Iptables命令。
(3)在Netd中实现对(2)中下发的命令的处理。
CommandListener在Netd中负责侦听Java层命令。NetdConstants中已经有执行Iptables命令的接口,可以在此基础上扩展。
以上通过adb shell命令行在Android设备上将方案调通之后,接下来考虑如何集成在Android系统中。作为一个整体解决方案,需要至少解决两部分功能:
(1)网络访问规则。包括规则定义、存储、对外接口、对内转化成Iptables命令。
(2)Iptables命令执行。
第一部分比较简单,在此不详述。主要看第二部分。
对于某一个垂直功能,Android经典的架构一般是由Java层的服务和接口、C++层的守护进程、Linux内核这由上到下的三层架构。网络管理架构也是如此。
Java层的服务包括NetworkManagementService/ConnectivityService/NetworkStatsService等,可以以AIDL对外提供接口。C++层的守护进程是Netd。
可以在NetworkManagementService和Netd扩充接口实现执行Iptables命令:
(1)在INetworkManagementService.aidl中定义扩充接口。
(2)在NetworkManagementService.java中实现接口。
NetworkManagementService通过一个NativeDaemonConnector类的成员变量,与Netd通信(通过Socket),可以通过这个成员变量向Netd发Iptables命令。新增加一种命令类型专门处理Iptables命令。
(3)在Netd中实现对(2)中下发的命令的处理。
CommandListener在Netd中负责侦听Java层命令。NetdConstants中已经有执行Iptables命令的接口,可以在此基础上扩展。
相关文章推荐
- Eclipse中用两个控制台测试网络通信程序
- hadoop2.X中各个http端口的配置
- 神经网络(13)--具体实现:random initialization
- python编程基础:《http://www.cnblogs.com/wiki-royzhang/category/466416.html》
- http中get发送json格式数据以及接收方的处理
- 网络攻击技术——SQL Injection
- Linux中TCP连接过程状态简介
- apache http的<directory></directory>语句,允许被访问
- 网络超时检测方法
- HttpUrlConnection与HttpClient的post、get的请求网络数据的方法
- 关于启用 HTTPS 的一些经验分享
- 网络层包
- 利用Jquery实现http长连接(LongPoll)
- ipad或iPhone 访问https网站不成功
- 网络地址分类
- 几种TCP连接中出现RST的情况
- E/AndroidRuntime(22486): java.lang.NoClassDefFoundError: org.apache.http.entity.mime.MultipartEntity
- Linux 网络通信之组播
- 说说IO(八)- 三分天下
- 文章5:http协议中content-length 以及chunked编码分析