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. keepalived 结合mysql 自动切换

    启动keepalived:/usr/local/sbin/keepalived -D -d -S 0 master ip:192.168.32.6 master:/root/sbin# cat /et ...

  2. 【代码】Android: 怎样设置app不被系统k掉

    有一种方法可以设置app永远不会被kill,AndroidManifest.xml 中添加: android:persistent="true" 适用于放在/system/app下 ...

  3. 【E2LSH源代码分析】p稳定分布LSH算法初探

    上一节,我们分析了LSH算法的通用框架,主要是建立索引结构和查询近似近期邻.这一小节,我们从p稳定分布LSH(p-Stable LSH)入手,逐渐深入学习LSH的精髓,进而灵活应用到解决大规模数据的检 ...

  4. 基于visual Studio2013解决C语言竞赛题之1019填数

         题目 解决代码及点评 /* 19. 找3个数字,填在下面式子中,使等式成立. _6325 = 6325_ × ____ (等号左边是五位) 1,若答案有多个,则打印一组即 ...

  5. 最大似然预计(Maximum likelihood estimation)

    一.定义     最大似然预计是一种依据样本来预计模型參数的方法.其思想是,对于已知的样本,如果它服从某种模型,预计模型中未知的參数,使该模型出现这些样本的概率最大.这样就得到了未知參数的预计值. 二 ...

  6. EasyUI - DataGrid 组建 - [ 新增功能 ]

    效果: html代码: <div> <!--使用JS加载方式--> <table id="tab"></table> <!-- ...

  7. c# winform 让Form去掉系统自带的关闭

    在桌面系统时我们有时候想把winform 自带的关闭按钮和最大化最小化都去掉,我遇到了类似的情况,在网上一查也有很多答案,但是最后找到了一个最简单的答案,一句话的事,今天记录一下,就是让大家都简单的实 ...

  8. 理解javascript中的for语句

    程序实现中经常要用到循环语句,其中for循环是多数语言都有的.在javascript中,for循环有几种不同的使用情况,下面就分别来讲述我的理解. 第一种:(通常情况,循环执行相关操作) var ob ...

  9. tar打包过滤某个文件及文件夹

    ip=ip add|grep eth0|grep -i inet|awk '{print $2}'|cut -d '/' -f 1 cd /data tar -zvcf `echo $ip`_`dat ...

  10. 获取字符宽度:并非自适应。coretext去计算

    获取字符宽度:并非自适应.coretext去计算 UniChar ch = [ns_str characterAtIndex:0]; CGGlyph glyph = 0; CTFontGetGlyph ...