美文网首页
android iptables小结

android iptables小结

作者: goodl | 来源:发表于2017-06-12 09:25 被阅读0次

    Android上使用iptables一般做代理和app防火墙功能。
    有几个开源项目,推荐大家去googlecode上去找找:
    droidwall:app网络防火墙;
    proxydroid:代理app,支持多种网络协议;
    以上软件都需要root权限。

    app网络防火墙实现思路:
    通过iptables命令设置filter表,针对OUTPUT链,来源是wifi或是2g/3g的做REJECT或是DROP操作。

    REJECT 拦阻该封包,并传送封包通知对方。
    DROP 丢弃封包不予处理,进行完此处理动作后,将不再比对其它规则,直接中断过滤程序。
    REJECT和DROP其效果都可以使app无法联网,所以两个任你选择使用。

    如何区分是wifi或是2G/3G?
    我们需要使用-o参数来区分是封包来源是wifi还是gprs,
    参数 -o, --out-interface
    范例 :

    iptables -A FORWARD -o eth0
    

    说明 用来比对封包要从哪片网卡送出,设定方式同上。
    其中wifi有三种(参考droidwall):tiwlan+, wlan+, eth+
    gprs有六种:rmnet+,pdp+,ppp+,uwbr+,wimax+,vsnet+"

    下面还剩下一个问题,如何区分封包来自哪个app?
    由于iptables处于7层协议下三层,应该是无法区分应用的。

    这里要使用扩展模式-m 操作owner表
    范例:

    iptables -A OUTPUT -m owner --uid-owner 500
    

    说明:用来比对来自本机的封包,是否为某特定使用者所产生的,这样可以避免服务器使用 root 或其它身分将敏感数据传送出去,可以降低系统被骇的损失。可惜这个功能无法比对出来自其它主机的封包。

    下面给出一个完整的实例:

    iptables -t filter -A OUTPUT -o wlan+  -m owner --uid-owner 10042 -j DROP
    

    说明:操作filter(-t filter可以省略,默认操作filter表)的OUTPUT链,封包来源是wlan+,并且来源是uid为10042的,丢弃数据包。

    执行过程如果出现:No chain/target/match by that name, 可能就是你的rom不支持该操作了。
    iptables需1.4+版本
    内核支持iptables操作,所以并不是所有root的rom都支持的。

    相关文章

      网友评论

          本文标题:android iptables小结

          本文链接:https://www.haomeiwen.com/subject/nhzkqxtx.html