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. char、signed char 和 unsigned char 的区别

    ANSI C 提供了3种字符类型,分别是char.signed char.unsigned char.而不是像short.int一样只有两种(int默认就是signed int). 三者都占1个字节( ...

  2. 17.1 Replication Configuration 复制:

    17.1 Replication Configuration 复制: 17.1.1 How to Set Up Replication 17.1.2 Replication Formats 17.1. ...

  3. Python多线程下的_strptime问题

    Python多线程下的_strptime问题 由于Python的datetime和time中的_strptime方法不支持多线程,运行时会报错: import datetimeimport threa ...

  4. 教程:查找内存泄漏 (JavaScript)

    本主题带领您完成使用 JavaScript 内存分析器确定并修复简单内存问题的过程.在本教程中,我们创建一个生成大量数据的应用程序.我们预期在导航到新页时该应用程序会释放数据.  说明 JavaScr ...

  5. ACM一些题目

    Low Power 先二分答案,可以通过调整证明同一台机器选的两个芯片必然是提供能量数值相邻的两个.所以再贪心一下就可以了. 时间复杂度\(O(n \log n)\). Factors 假设\(k\) ...

  6. VMware Player 使用错误集锦

    1.执行VMware Player 弹出"开机时出错:内部错误"的提示.虚拟机执行不了,例如以下图: 解决的方法: 以管理员身份执行.         可能如今登录windows的 ...

  7. cocos2d-x的经历(含源码——)

    源于手游的火爆和大环境的影响,最近在学习cocos2d-x.其实以前一直有想搞andriod和ios的尝试,可惜本屌丝没钱买mac os x,只好先开始学习andriod,于是买了小米2s作为测试机, ...

  8. Ajax技术——带进度条的文件上传

    1.概述 在实际的Web应该开发或网站开发过程中,经常需要实现文件上传的功能.在文件上传过程中,经常需要用户进行长时间的等待,为了让用户及时了解上传进度,可以在上传文件的同时,显示文件的上传进度条.运 ...

  9. 凤凰OS

    看看这个http://www.phoenixos.com 是不是你想要的     --- 共有 5 条评论 --- Entity回复 @Leaybc : 今天装的凤凰os,有很多的BUG整天还不错.  ...

  10. Codeforces 56D Changing a String 编辑距离 记忆dp

    主题链接:点击打开链接 编辑距离.,== 一边dp虽然录制前体累,,依然是dp #include<iostream> #include<cstdio> #include< ...