至于为什么写这篇文章,是因为小编毕业了,在一家网络公司工作,主要是做防火墙的,所以iptables是最基础,同时也是小编第一次接触linux这个模块,同样的这个也会出一个系列,暂时不知道出多少章,因为小编现在工作了,所以闲暇的时间会少很多,一有时间就去放松去了,很少在去写这些文章,现在呢,工作也稳定了,对手上的工作和业务也熟悉了,也轻松了很多,所以才有时间写文章,争取咋们把这个系列出完吧。现在进入正题
学习前准备:
一台linux系统电脑,虚拟机和实体机都可以,小编这里采用虚拟机的形式,小编只有一台电脑,还有一台服务器不适合直接操作,安装虚拟机的方式在小编之前发表的文章中有,就是学习python的那个系列的第一章https://www.toutiao.com/i6615218079750160910/那是小编使用VMware12,这次打算使用VMware15安装方式大同小异。
netfilter/iptables是什么?
是一款给基于linux内核的IP数据包过滤系统,也是linux防火墙的重要组成部分。它是linux重要的内核模块之一。它很重要,简单来讲netfilter是包过滤系统的框架,netfilter是linux下一个通用的框架,由协议栈(如IPv4,IPv6,DECnet等)中处于不同位置的一系列钩子函数构成。下图描述了在IPv4中,一个数据包通过netfilter框架的流程:
netfilter框架
- netfilter就是在数据包经过内核的路径上放置了一些hook,hook函数决定了这些数据包的流向,到底是流向内核,还是转发,还是丢弃等等一些操作,netfilter是linux2.4.x引入的一个子系统,提供了一整套的hook管理系统,使得数据包的过滤、地址转换、基于协议跟踪变得更加方便,netfilter hook放在网络层(IP)。
- netfilter呢,通俗来讲也就是常用到的功能就是,过滤,地址转换和打标记,过滤很简单,就是设置一些条件,达到什么条件就做什么操作,地址转换就是能修改数据包的源IP或者目的IP,打标记就是给数据包做标记netfilter有四张表分别是filter表(主做过滤和跳转),mangle表(主做打标记),NAT表(地址转换),raw表(我几乎没用过,状态跟踪)。netfilter只对报文头做检查。
- netfilter除了表以外还有链,也就是规则链,链是可以自己创建的,我们这里只对内建的链做操作:INPUT链:入站规则链,OUTPUT链:出站规则链,FORWARD链:转发规则链,PREROUTING链:路由前规则链,POSTROUTING链:路由后规则链。
框架上的东西先仅供了解,等后面的文章在一一去概述,总之一句话,netfilter有四张表和五条链(不包括自行创建的)。
iptables的用法
iptables [-t 表] [链] [条件] [-j 动作]
[-t 表] 常用的就三个:
-t filter
-t mangle
-t nat
之后的放在下一章节,清明节前,把基本的命令总结完,之后出一些实例,做实验。