详解Android 利用Iptables实现网络黑白名单(防火墙)

时间:2021-05-19

一、概述

为了使读此简笔的人对Iptables有一个简单的了解,此处强行百度了一波概念,如果想深入的了解Iptables的各种配置规则和内核对其的管理运行机制请自行.android.server;import java.io.File;import java.io.FileOutputStream;import java.io.IOException;import java.io.InputStream;import java.io.OutputStreamWriter;import android.os.FileUtils;import android.os.SystemProperties;import android.util.Log;public class FXJScriptRunner extends Thread{ private final File file; private final String script; private final StringBuilder res; public int exitcode = -1; private final String TAG = "ScriptRunner" ; public ScriptRunner(File file, String script, StringBuilder res, boolean asroot) { this.file = file; this.script = script; this.res = res; } @Override public void run() { // TODO Auto-generated method stub try { file.delete(); file.createNewFile(); final String abspath = file.getAbsolutePath(); // make sure we have execution permission on the script file FileUtils.setPermissions(abspath, 00700, -1, -1); Runtime.getRuntime().exec("chmod 777 " + abspath).waitFor();//给创建的sh文件设置权限 // Write the script to be executed final OutputStreamWriter out = new OutputStreamWriter( new FileOutputStream(file)); if (new File("/system/bin/sh").exists()) { out.write("#!/system/bin/sh\n"); } out.write(script); if (!script.endsWith("\n")) out.write("\n"); out.write("exit 0\n"); out.flush(); out.close();//通过 SystemProperties.set("ctl.start", "fxjmotnitor")执行service,来运行脚本,//fxjmotnitor为service名称,可以根据自己的爱好随便叫 SystemProperties.set("ctl.start", "fxjmotnitor"); } catch (Exception ex) { if (res != null) res.append("\n" + ex); } finally { //destroy(); } }}

三、fxjmotnitor service的创建步骤如下。

3.1、在/system/core/rootdir/init.rc中添加如下,使得service在开机时就运行起来

service fxjmotnitor /system/bin/sh /data/fxj/firewall.sh class main oneshot seclabel u:r:fxjmotnitor:s0

3.2、在/sepolicy/目录下创建fxjmotnitor.te文件,内容如下

type fxjmotnitor, domain;type fxjmotnitor_exec, exec_type, file_type;init_daemon_domain(fxjmotnitor)allow fxjmotnitor shell_exec:file { entrypoint getattr read };

3.3、在/sepolicy/file_contexts中添加

/data/fxj/firewall.sh u:object_r:fxjmotnitor_exec:s0

3.4、在sepolicy/Android.mk中的

BOARD_SEPOLICY_UNION += \#追加如下......\fxjmotnitor.te \......\

以上就是基于iptables规则对ip地址进行管控,从而限制手机那些ip可以访问那些不可访问的流程实现之细节,当然iptables的作用不仅仅局限于此,有兴趣的可自行了解学习。也希望大家多多支持。

声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。

相关文章