iptables的起源

   netfilter工作于 kernel的framework(框架)

iptables的前身叫ipfirewall (内核1.x时代),这是一个作者从freeBSD上移植过来的,能够工作在内核当中的,对数据包进行检测的一款简易访问控制工具。但是ipfirewall工作功能极其有限(它需要将所有的规则都放进内核当中,这样规则才能够运行起来,而放进内核,这个做法一般是极其困难的)。当内核发展到2.x系列的时候,软件更名为ipchains,它可以定义多条规则,将他们串起来,共同发挥作用,而现在,它叫做iptables

iptable是工作在用户空间中,编写规则的工具,不能算是真正意义上的防火墙,它定义的规则需要送至工作于在内核空间中netfilter,并且通过实现netfilter实现防火墙功能。而放入内核的地方必须要是特定的位置,必须是tcp/ip的协议栈经过的地方。而这个tcp/ip协议栈必须经过的地方,可以实现读取规则的地方就叫做 netfilter.(网络过滤器)

作者在内核的tcp/ip协议栈上选择的参考点

prerouting: 进入本机后,路由功能发生之前

input:到达本机内部

output: 由本机发出

forward: 由本机转发

postrouting:路由功能发生之后(进入网卡发送队列之前),即将离开本机之前

这五个参考点又叫 hooks function: 钩子函数 也叫五个规则链 组成了netfilter框架;任何一个数据包要经由本主机,都将经过这五个链中某链;

数据包过滤匹配流程图

链上的规则次序即为检查次序

netfilter 规则的功能

(1). 过滤:firewall,

(2). 地址转换:NAT Server

(3). mangle:修改报文首部中的某些信息(能够实现将数据包的元数据拆开,在里面做标记/修改内容的。如防火墙标记,TTL)

(4). raw:关闭nat表上启用的连接追踪功能(对nat的功能的一些补充)

功能生效的位置

filter功能:input, forward, output

nat功能可:prerouting, output(很少用到), postrouting

mangle功能:prerouting,input, forward, output, postrouting

raw:prerouting,output #只能发生在nat功能的前半段

规则编写注意

注意:规则的次序非常关键,而检查规则的时候,是按照从上往下的方式进行检查的。所以在编写规则的时候应该 :

1 。同类规则,匹配范围小的放上面;

2 。不同类规则,匹配报文几率较大的放上面;

规则匹配流程

  1.   防火墙是层层过滤的。实际按照规则的顺序从上到下,从前到后进行过滤的。(按照规则顺序依次匹配的)

  2.  如果匹配上规则,明确表明是阻止还是通过,数据包就不在向下匹配新规则了

  3. 如果规则中没有明确表明是阻止还是通过,也就是没有匹配规则,向下进行匹配直到 匹配默认规则得到明确的阻止还是通过。

防火墙的策略

通:默认门是关着的,必须要定义谁能进

堵:大门是洞开的,但是你必须有身份认证,否则不能进。

转载于:https://blog.51cto.com/1066875821/1650397

iptables基础篇相关推荐

  1. 鸟哥的Linux私房菜(基础篇)- 第二十六章、Linux 核心编译与管理

    第二十六章.Linux核心编译与管理 最近升级日期:2009/09/18 我们说的 Linux 其实指的就是核心 (kernel) 而已.这个核心控制你主机的所有硬件并提供系统所有的功能,所以说,他重 ...

  2. 鸟哥的Linux私房菜(基础篇)- 第十八章、认识系统服务 (daemons)

    第十八章.认识系统服务 (daemons) 最近升级日期:2009/09/14 在 Unix-Like 的系统中,你会常常听到 daemon 这个字眼!那么什么是传说中的 daemon呢?这些 dae ...

  3. 鸟哥的Linux私房菜(基础篇)- 第六章、Linux 的文件权限与目录配置

    第六章.Linux的文件权限与目录配置 最近更新日期:2009/08/18 Linux最优秀的地方之一,就在于他的多人多任务环境.而为了让各个使用者具有较保密的文件数据,因此文件的权限管理就变的很重要 ...

  4. Ansible自动部署(基础篇)

    Ansible自动部署(基础篇) 一.ansible简介 1.ansible介 Ansible这个名字来源于科幻小说,是一种超光速通讯设备.在Linux中,ansible是新出现的自动化运维工具,基于 ...

  5. 【linux】循序渐进学运维-基础篇-操作系统初始化

    大家好,我是高胜寒,本文是Linux运维-循序渐进学运维-基础篇的第60篇文章 文章目录 前言 安装Linux后的初始化操作 1. 关闭selinux功能 2. 精简开机启动项 a) 开启自启动服务 ...

  6. Python Qt GUI设计:信号与槽的使用方法(基础篇—7)

    目录 1.信号与槽的概念 2.信号与槽的基础函数 2.1.创建信号函数 2.2.连接信号函数 2.3.断开信号函数 2.4.发射信号函数 3.信号和槽的使用方法 3.1.内置信号与槽的使用 3.2.自 ...

  7. Python Qt GUI设计:窗口布局管理方法【强化】(基础篇—6)

    目录 1. 水平布局类(QHBoxLayout) 2.垂直布局类(QVBoxLayout) 3.网格布局类(QGridLayout) 3.1.单一的网络布局 3.2.跨越行.列的网络布局 4.表单布局 ...

  8. Python Qt GUI设计:窗口布局管理方法【基础】(基础篇—5)

    目录 1.布局管理器进行布局 2.容器控件进行布局 3.geometry属性:控件绝对布局 4.sizePolicy属性:微调优化控件布局 Qt Designer提供4种窗口布局方式,分别如下: Ve ...

  9. ES6 你可能不知道的事 – 基础篇

    ES6 你可能不知道的事 – 基础篇 转载 作者:淘宝前端团队(FED)- 化辰 链接:taobaofed.org/blog/2016/07/22/es6-basics/ 序 ES6,或许应该叫 ES ...

最新文章

  1. 用北斗和阿里云毫米级监控山体滑坡 他还只是铁路工人
  2. ceph部署出现错误及解决
  3. 芒果TV崩了?项目组在家办公效率不行呀!
  4. php 条形码生成器,PHP条形码图像生成器
  5. python中convert函数用法_Python Pandas DataFrame.tz_convert用法及代码示例
  6. tcpdump启动脚本
  7. 实现对顺序表的入栈出栈操作、利用栈将十进制转化成二进制输出【数据结构实验报告】
  8. JS特效之很牛叉的轮播图
  9. QL Server 2008新特性:FILESTREAM
  10. mysql 删除foreign key_MySQL-Foreign Key
  11. Day38 python基础--并发编程基础-IO模型
  12. python:将数据写入csv文件
  13. java 实现宠物领养_基于jsp的宠物领养-JavaEE实现宠物领养 - java项目源码
  14. Java 猜单词游戏
  15. 向大家推荐一本学统计学的书
  16. 利用Python爬取前程无忧(51job)上的招聘岗位
  17. 小区管理系统之后台管理前端模板
  18. 浅析群控系统的发展之路,云控和群控的巨大差别
  19. Cydia 软体介绍
  20. 反激式开关电源设计方案,12V6A输出,有完整原理图

热门文章

  1. Python由于目标计算机积极拒绝,无法连接。错误解决
  2. JavaScript设计模式总结-组合模式
  3. 【NOIP模拟】方格稿纸
  4. python调用R语言,关联规则可视化
  5. mysql的数据类型——待写
  6. Python-基础知识-字典dict和集合set
  7. MongoDB基础之六 索引
  8. 【ThinkingInC++】61、非成员运算符
  9. Castle.MircoKernel Class Diagram - Part I
  10. step3 . day3 数据结构之线性表 单项循环链表和双向循环链表