- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
IPTABLES简介概要1
Iptables简介 张和阳 2014.3.31 目录 什么是iptables Iptables在android android如何实现用户空间iptables 用户空间如何与内核空间通信 如何区分wifi,基带产生的数据 如何区分应用 规则概览 参考代码 什么是iptables iptables是Linux内核集成的IP信息过滤系统。可以用来实现联网防火墙。 iptables包含两部分。一部分是netfilter 组件,是内核的一部分,由一些信息包过滤表组成,这些表包含内核用来控制信息包过滤处理的规则集;另一部分叫做iptables,是用户空间的一个shell。 对于android手机系统来说,它拥有内核里面的netfilter,需要在用户空间编写规则。 iptables netfilter userpace kernelspace iptables是一个有状态的过滤器。它可以记住上次的状态,这样可以提高效率。 status new established related pass invalid Prerouting链 Output链 Prerouting链 Postrouting链 Input链 Output链 Forward链 Prerouting链 Postrouting链 Output链 Input链 Output链 Forward链 Nat表 Filter表 mangle表 raw表 Iptables在android Android是基于linux的操作系统。 使用数据业务时,Android的工作,体现在网络的连接、配置、与断开阶段。而网络数据收发,则由linux完成。此刻linux就独立于android,直接与网卡通信。 Iptables制定了基于ip包的访问规则。在数据业务发起之前,用户可以通过android操作系统编辑ip规则,确保数据业务发起时候可以或者不可以路由。 Java.net android.net iptables Android.net netfilter Network adapter android linux net 用户空间如何与内核空间通信 Netfilter的规则,可以通过命令行来编辑和查看。在用户空间,可以通过Process来完成“敲命令”和“读结果”。 Process exec = Runtime.getRuntime().exec(su); final OutputStreamWriter out = new OutputStreamWriter(exec.getOutputStream()); out.write(script); out.flush(); InputStreamReader r = new InputStreamReader(exec.getInputStream()); int read=0; while ((read=r.read(buf)) != -1) { if (res != null) res.append(buf, 0, read);} r = new InputStreamReader(exec.getErrorStream()); read=0; while ((read=r.read(buf)) != -1) { if (res != null) res.append(buf, 0, read);} 如何区分wifi、基带产生的数据 通过参数-o, --out-interface 来区分网卡 示例: iptables -A FORWARD -o wlan+ 这句表示某个命令针对所有wifi的上网。 其中wifi有三种:tiwlan+,?wlan+,?eth+ gprs有六种:rmnet+,pdp+,ppp+,uwbr+,wimax+,vsnet+。 P.s.有多个设备,一般ppp0, ppp1。 如何区分应用 Iptables通过uid来区分应用。可以通过扩展模式-m 操作owner表。 添加一个规则-A,删除一条规则 -D 示例: iptables -A OUTPUT -m owner --uid-owner 10086 规则概览 这里不做过多介绍,更过的规则可以通过其他资料了解。 前面描述到,iptables有4张表,每张表里面有若干链表,每个链表都有若干规则。其中前3个表一般在内核做路由和状态管理时候用的,这里只关注默认表filter表。 Filter表里面有3个链表,分别是input、output和forward。这3个链表表示数据流向,分别记录收、发和转发的包。 对于包的操作,有3种动作: ACCEPT:通过 REJECT:拒绝包,同时通知该应用 DROP:丢掉,不通知
文档评论(0)