Iptables简单介绍

iptables是与最新的 2.6.x 版本号 Linux 内核集成的 IP 信息包过滤系统。

假设 Linux 系统连接到因特网或 LAN、server或连接 LAN 和因特网的代理server, 则该系统有利于在 Linux 系统上更好地控制 IP 信息包过滤和防火墙配置。

Iptables工作原理

netfilter/iptablesIP 信息包过滤系统是一种功能强大的工具。 可用于加入、编辑和除去规则。这些规则是在做信息包过滤决定时,防火墙所遵循和组成的规则。这些规则存储在专用的信息包过滤表中, 而这些表集成在 Linux 内核中。

在信息包过滤表中,规则被分组放在我们所谓的 链(chain)中。

我立即会具体讨论这些规则以及怎样建立这些规则并将它们分组在链中。

尽管 netfilter/iptables IP 信息包过滤系统被称为单个实体,但它实际上由两个组件 netfilter和 iptables 组成。
netfilter 组件也称为 内核空间(kernelspace),是内核的一部分。由一些信息包过滤表组成。 这些表包括内核用来控制信息包过滤处理的规则集。
iptables组件是一种工具,也称为 用户空间(userspace),它使插入、改动和除去信息包过滤表中的规则变得easy。 除非您正在使用 Red Hat Linux 7.1 或更高版本号,否则须要从 netfilter.org 下载该工具并安装使用它。
通过使用用户空间。能够构建自己的定制规则,这些规则存储在内核空间的信息包过滤表中。

这些规则具有 目标,它们告诉内核对来自某些源、前往某些目的地或具有某些协议类型的信息包做些什么。

假设某个信息包与规则匹配,那么使用目标 ACCEPT 同意该信息包通过。还能够使用目标 DROP 或 REJECT 来堵塞并杀死信息包。

对于可对信息包运行的其他操作,还有很多其他目标。

依据规则所处理的信息包的类型,能够将规则分组在链中。处理入站信息包的规则被加入到 INPUT 链中。

处理出站信息包的规则被加入到 OUTPUT 链中。处理正在转发的信息包的规则被加入到 FORWARD 链中。

这三个链是基本信息包过滤表中内置的缺省主链。 另外,还有其他很多可用的链的类型(如 PREROUTING 和 POSTROUTING ), 以及提供用户定义的链。每一个链都能够有一个 策略, 它定义“缺省目标”,也就是要运行的缺省操作。当信息包与链中的不论什么规则都不匹配时。运行此操作。

建立规则并将链放在适当的位置之后。就能够開始进行真正的信息包过滤工作了。 这时内核空间从用户空间接管工作。当信息包到达防火墙时,内核先检查信息包的头信息,尤其是信息包的目的地。 我们将这个过程称为 路由。
假设信息包源自外界并前往系统,并且防火墙是打开的,那么内核将它传递到内核空间信息包过滤表的 INPUT 链。假设信息包源自系统内部或系统所连接的内部网上的其他源,并且此信息包要前往还有一个外部系统, 那么信息包被传递到 OUTPUT 链。相似的,源自外部系统并前往外部系统的信息包被传递到 FORWARD 链。

接下来,将信息包的头信息与它所传递到的链中的每条规则进行比較,看它是否与某条规则全然匹配。

假设信息包与某条规则匹配,那么内核就对该信息包运行由该规则的目标指定的操作。

可是。假设信息包与这条规则不匹配。那么它将与链中的下一条规则进行比較。 最后,假设信息包与链中的不论什么规则都不匹配,那么内核将參考该链的策略来决定怎样处理该信息包。 理想的策略应该告诉内核 DROP 该信息包。下图用图形说明了这个信息包过滤过程。

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvc29uZ2ppbnNoaQ==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="" />

使用Iptables进行防火墙软件设计的解决方式

因为Iptables已经有了完好的防火墙规则。我们仅仅须要设计一个基于Iptables的Android前台。通过运行脚本,调用iptables设置防火墙规则就可以。
相关演示样例代码:
http://code.google.com/p/droidwall/

Android中网络流量控制(防火墙)——Iptables的更多相关文章

  1. android中网络操作使用总结(http)

    Android是作为智能手机的操作系统,我们开发的应用,大多数也都须要连接网络,通过网络发送数据.获取数据,因此作为一个应用开发人员必须熟悉怎么进行网络訪问与连接.通常android中进行网络连接通常 ...

  2. Android中的异步网络请求

    本篇文章我们来一起写一个最基本的Android异步网络请求框架,借此来了解下Android中网络请求的相关姿势.由于个人水平有限,文中难免存在疏忽和谬误,希望大家可以指出,谢谢大家:) 1. 同步网络 ...

  3. android中 检查网络连接状态的变化,无网络时跳转到设置界面

    1:在AndroidManifest.xml中加一个声明 <receiver android:name="NetCheckReceiver">    <inten ...

  4. Android中Retrifit使用总结

    Android中网络请求框架Retrofit的使用注意事项 1.Retrofit是基于OkHttp网络请求框架的二次封装而已,懂Okhttp的小伙伴,那么Retrofit也就基本都会. 2.Retro ...

  5. android检查网络连接状态的变化,无网络时跳转到设置界面

    在AndroidManifest.xml中加一个声明<receiver android:name="NetCheckReceiver"> <intent-filt ...

  6. 【iptables】linux网络防火墙-iptables基础详解(重要)

    一:前言   防火墙,其实说白了讲,就是用于实现Linux下访问控制的功能的,它分为硬件的或者软件的防火墙两种.无论是在哪个网络中,防火墙工作的地方一定是在网络的边缘.而我们的任务就是需要去定义到底防 ...

  7. Android中解析网络请求的URL

    近期正在做Android网络应用的开发,使用了android网络请求方面的知识.如今向大家介绍网络请求方面的知识.我们知道android中向server端发送一个请求,(这就是我们通常所说的POST请 ...

  8. Android中使用http协议访问网络

    HTTP协议的工作原理:客户端向服务器端发送http请求,服务器端收到请求后返回一下数据给客户端,客户端接受消息并进行解析. 在Android中发送http请求的方式有两种,第一种是通过HttpURL ...

  9. 《安卓网络编程》之第六篇 Android中的WIFI和蓝牙

    关于WIFI就不多介绍啦,直接来个段子吧. 问:“WiFi对人体有伤害么?” 答:“不清楚,反正没有WiFi我就浑身不舒服. 比较重要的一点就是WifiManager  wm=(WifiManager ...

随机推荐

  1. Jquery学习笔记: attr和 prop的区别,以及为html标签自定义属性

    一.自定义html标签属性 对于html文件中的html标签,可以自定义属性,如: <a href="#" id="link1" action=" ...

  2. 相邻数字的基数等比确定进制问题pojg2972

    解决数制转换问题时,如果所给的数值不是用十进制表示的,一般用一个字符型数组来存放,数组的每个元素分别存储它的一位数字.然后按位转换求和,得到十进制表示,再把十进制转成成其他所求的进制表示.转成的结果也 ...

  3. 【剑指Offer学习】【面试题17 ::合并两个排序的链表】

    题目:输入两个递增排序的链表,合并这两个链表并使新链表中的结点仍然是依照递增排序的 链表结点定义例如以下: public static class ListNode { int value; List ...

  4. 关于mysql运行效率优化注意事项及要点

    1. SQL优化的原则是:将一次操作须要读取的BLOCK数减到最低,即在最短的时间达到最大的数据吞吐量. 调整不良SQL通常能够从下面几点切入: ? 检查不良的SQL,考虑其写法是否还有可优化内容 ? ...

  5. EasyUI - Tree 树组件

    效果: 数据库设计: 使用的数据: 其中的字段,是跟据要生成的树节点的属性定义的. text:代表要显示的字段名称. state:是否是目录节点. iconCls:节点的图标是什么. url:跳转的链 ...

  6. 【linux】linux根文件系统制作

    欢迎转载,转载时请保留作者信息,谢谢. 邮箱:tangzhongp@163.com 博客园地址:http://www.cnblogs.com/embedded-tzp Csdn博客地址:http:// ...

  7. perl 继承小例子

    <pre name="code" class="html"><pre name="code" class="ht ...

  8. Linux 安装ibus极点五笔输入法备忘录

    Linux 安装 ibus 五笔输入法备忘录 useful?: https://github.com/definite/ibus-table-chinese 一. yum install ibus* ...

  9. javascript 学习资料网址一览

    1.http://www.runoob.com/ 2.https://developer.mozilla.org/zh-CN/ 3.http://www.imooc.com/   视频类

  10. 使用gradle打包jar包

    近期用android studio来做android开发的IDE,它是使用gradle来构建的,于是開始学习gradle. 如今有一个项目,里面有一个android-library的模块.我想在做re ...