Android12.0(S) 新增系统服务实现网络黑白名单(防火墙)功能

前言

这功能前前后后弄了得有两月吧,虽不是特别完美,还好最终还是搞定了,哈哈哈

本方案实现基于 iptables 管控,关于 iptables 的详细使用介绍可参考朱双印大佬的博文,那是相当的详细本文将不再介绍

本文实现过程中遇到的问题集锦

问题1、iptables 指令需要在 root 权限才能执行,adb shell 中执行提示

iptables v1.8.7 (legacy): can’t initialize iptables table `filter’: Permission denied (you must be root)
Perhaps iptables or your kernel needs to be upgraded.

为了解决这个问题,我们需要在 init.rc 中配置一个服务,通过 prop 值来控制启动这个服务,达到提权的效果

问题2、iptables 指令生成的网络规则重启会失效,为了解决这个问题,我们需要重启后再次执行一遍上一次的指令,

通过 persist 开头 prop 可解决该问题。

问题3、persist 开头 prop 和新增加执行 sh 文件编译和运行对应 selinux 规则处理起来贼麻烦,

本文并没解决而是简单粗暴直接关闭 selinux 了。

问题4、iptables 中不识别域名,在设备联网的情况下增加域名会自动转换为 ip 在规则表中,

若设备没网络情况下,增加域名失败,所以最好增加 ip。获

猜你喜欢

转载自blog.csdn.net/u012932409/article/details/127335604