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 该信息包。下图用图形说明了这个信息包过滤过程。

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

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

转载于:https://www.cnblogs.com/mfrbuaa/p/5129743.html

Android中网络流量控制(防火墙)——Iptables相关推荐

  1. Android中网络使用

    Android中判断网络连接是否可用 一.判断网络连接是否可用 public static boolean isNetworkAvailable(Context context) { Connecti ...

  2. Android中网络编程出错

    在android 2.3上设计的下载程序,在android 4.0上运行时报android.os.NetworkOnMainThreadException异常,原来在4.0中,访问网络不能在主程序中进 ...

  3. android ping网络连接服务器失败,Android 中网络连接检测和使用ping检测网络是否可访问...

    Android开发中网络相关的检测包括网络是否正常连接和网络已连接但是否可以正常访问两类. (1)其中最常用的就是网络连接是否正常的检测,具体的代码如下:ConnectivityManager con ...

  4. Android 中网络连接检测和使用ping检测网络是否可访问

    Android开发中网络相关的检测包括网络是否正常连接和网络已连接但是否可以正常访问两类. (1)其中最常用的就是网络连接是否正常的检测,具体的代码如下: ConnectivityManager co ...

  5. Android中网络编程

    在Android中几种网络编程的方式: (1)针对TCP/IP的Socket.ServerSocket (2)针对UDP的DatagramSocket.DatagramPackage.这里需要注意的是 ...

  6. linux网络_防火墙-iptables基础

    2019独角兽企业重金招聘Python工程师标准>>> 定义: 防火墙:是用于实现Linux下访问控制的功能. 分类:硬件或者软件防火墙. 3.4层的防火墙,叫网络层的防火墙:7层的 ...

  7. Android中网络请求框架的封装-Retrofit+RxJava+OkHttp

    Retrofit注解 请求方法 注解代码 请求格式 @GET GET请求 @POST POST请求 @DELETE DELETE请求 @HEAD HEAD请求 @OPTIONS OPTIONS请求 @ ...

  8. android中网络请求中页面关闭了会怎么样

    这是我在面试的时候,别人问的,其实 ,在实际开发中,并没有怎么遇到: 如果activity中开启了一个网络请求,正在请求中的时候,activity关闭了,那网络请求会怎么样? 因为之前没有遇到过这个问 ...

  9. Android中网络请求创建单个线程池的方法

    创建单个线程池的方法 import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; impor ...

  10. java,android中网络数据获取和json解析

    下面我们先看一段json: {"showapi_res_code":0,"showapi_res_error":"","showa ...

最新文章

  1. 重磅!国内首个缺陷检测教程:理论、源码与实战
  2. SpringCloud 02_什么是分布式、多线程、高并发?(浅析)
  3. flask项目开发中,遇到http 413错误
  4. 信号量释放和等待函数sem_post()和sem_wait()
  5. linux7yum安装mysql,CentOS7 使用yum安装mysql
  6. CVPR 2019 爆款论文作者现场解读:视觉语言导航、运动视频深度预测、6D姿态估计...
  7. Spark基础学习笔记17:掌握RDD算子
  8. 前端浏览器兼容性网站
  9. Delphi第三方控件安装卸载指南
  10. html背景图片半透明遮罩,巧用CSS cross-fade()实现背景图像半透明效果
  11. fgo服务器中断020202,终章炸服事件 - Mooncell - 玩家自由构筑的FGO中文Wiki
  12. 利用envi与arcmap/arcgisPro制作一张植被覆盖指数专题地图(地图学作业)
  13. java将sql数据转xml文件_把从SQL中取出的数据转化成XMl格式
  14. 密码算法测试向量——目录
  15. Chrome浏览器支持的时间格式
  16. K8S 多 Maser 集群架构和 Dashboard UI 的二进制部署
  17. 郭德纲的网络效应和网络利用
  18. 什么是依赖注入,vue的依赖注入如何实现的
  19. otsu天空分割 matlab,matlab图像处理--Otsu阈值分割
  20. 干货分享:RS485通信和Modbus通信协议汇总

热门文章

  1. 百炼-2701:与7无关的数
  2. matlab fprintf_工程优化设计与Matlab实现——十进制编码遗传算法
  3. 西农JAVA作业提交系统_Java程序员需要知道的操作系统知识汇总(持续更新)
  4. 15拆分成3个不同的自然数_素数大概有多少个?15岁的高斯翻过素数表之后给出了答案...
  5. Pandas:DataFrame对象的基础操作
  6. AWS AI网络研讨会 - Data Lab案例分享
  7. 算法:罗马数字转换为整数13. Roman to Integer
  8. 算法:转换二叉查找树为最大值加上当前值的数Convert BST to Greater Tree
  9. Xgboost和lightgbm的区别
  10. Leetcode-Implement strStr()-Python