iptables之二:什么是”表“和什么是”链“

本文详细解析了iptables的三表五链架构,解释了表和链的概念,以及它们如何协同工作实现数据包的过滤、转发和修改。通过将复杂的防火墙规则形象地比喻为工具箱和站点,使得iptables的工作机制变得易于理解。

引言

前一篇文章,介绍了iptables的基本信息和数据包过滤原理。虽然已经比较简单了,但还是有点云里雾里的。那么这次就从另一个角度再说一下。

先简单回顾一下,iptalbes主要由“三表五链”组成,分别为:

表:filter表,nat表,mangle表
链:PREROUTING,INPUT,OUTPUT,FORWARD,POSTROUTIING

很多人对这些名词感觉不明觉厉,那这次就说说:为什么叫“表”和“链”

表-tables

和数据库中的表一样,这里也是用来存数据的,只不过这里只存储一种数据:rule,即规则。
所谓规则,简单说就是:遇到什么情况,就做什么事。
根据表的用途不同,存储了不同的规则。例如:
filter table,存储的是数据过滤规则。
nat table,存储的是数据转发规则。
mangle table,存储的是数据”整容“规则。
所以,你把这三张表理解为一个数据库,甚至是一个Excel文件都可以。他们的作用很单一:存储规则。

链-chain

乍一看这个”链“就让人摸不着头脑。这到底是个什么意思?为什么叫链?它又链接的是什么?为什么又和”表“扯在了一起?

这里的”链“其实是英文chain直译过来的。通俗点说,不应该叫链,而应该叫站点。为什么没这么说呢?这里要从防火墙的作用说起。

防火墙的本质,就是对出入系统的数据包的控制,更准确说,是对出入内核的数据包的控制。这里的控制就涉及到两个问题:1. 在哪里控制?2. 怎么控制?

首先第一个问题,在哪里控制?
数据包进入内核的入口又很多,我们通常想到的就是网口,如:eth0等等,防火墙对这些入口设置了统一的数据检查站,第一时间对想要进入内核的数据包进行盘查,这里的站点就是:PREROUTING Chain了,即:PREROUTING链。

经过第一个站点检查后,如果确认是发给本机的,就交给下一个站点进行处理,这个站点就是:INPUT Chain,即:INPUT链。经过这个站点的盘查之后,如果是我需要的,就可以进入用户空间的对应应用程序;如果不是我需要的,就丢弃或者做其他操作。

当用户空间的应用程序处理完数据包,需要向外发送数据包的时候,经过的第一个检查点就是OUTPUT Chain,即:OUTPUT链了,经过这个站点的一系列检查之后就可以上路了。

于是数据包来到了出内核的最后一个检查站:POSTROUTIING Chain,即:POSTROUTIING链,这里也会对数据进行一些操作,然后把数据就可以踏上征途了。

在通过第一个站点检查时,如果PREROUTING发现这个数据包只是路过的,那就会交给FORWARD Chain,即:FORWARD链进行处理,在这里处理完之后,也会交给POSTROUTIING链,最后发送出去。

以上就是防火墙iptables对数据进行控制的全部流程,流经内核的所有的数据包,都在防火墙设置的这五个检察站点的掌控之中。

下面是第二个问题:怎么控制?
以上的五个站点,能对数据包做哪些操作,取决于他们可以调用的工具,这些工具存放在不同的工具箱中。这里的工具箱就是前面提到的”表“,工具就是”规则“。
对于五个站点来说,所不同的是,每个站点可以使用的工具箱多少不一样,即可以调取的规则类别不一样。如:
INPUT站点可以调用mangle表,nat表和filter表中的工具;而POSTROUTIING站点则只能调用mangle表和nat表中的工具。

但是……但是,以上这些站点可以调用的”表“都只是工具所在的工具箱而已,而对应的工具箱里是否这个站点可用的工具就不一定了。
打个比方,我安排包括你在内的5个人去完成一项工作,交给你们3个工具箱,并且告诉你们,你们的所有工具都在这3个工具箱里,每个人使用指定给自己的工具,工具箱里的工具有多少用多少。
然后你们就去干活了,到了干活的地方,你打开工具箱一看,3个工具箱都没有你可用的工具。这也是有可能的。

补充

到这里再多说一点,虽然工具箱里没有给你的工具,但是你至少还可以做两件事,即:全部拒绝或者全部放行。这也就是每个站点的默认规则了。
一般默认规则都是全部放行的。毕竟……让我干活,连工具都不给,我才懒得管呢。对吧?
希望以上的讲解对大家理解三表五链有帮助。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值