您的位置:首页 > 理论基础 > 计算机网络

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命令的接口,可以在此基础上扩展。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: