欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  移动技术

Android下基于Iptables的一种app网络访问控制方法(二)

程序员文章站 2023-11-24 22:55:34
3.如何在android中集成? 以上通过adb shell命令行在android设备上将方案调通之后,接下来考虑如何集成在android系统中。作为一个整体解决方案,需要至少解决两部分功能: (1...

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命令的接口,可以在此基础上扩展。