一、背景
在学习iptables四表五链的时候都会有如下困惑,表和链的概念到底是什么,创造出表和链这两个概念的初衷是什么。
二、关于表和链
先说链,其实链就是流水线,第一步、第二步...一步一步走下去,这个过程被抽象成了链,用白话来讲,链其实是第一步、第二步、第N步,一步一步的做事情。
我的一天一般会做这几步:起床--洗漱--吃饭--上班--回家;类比于防火墙链,数据包在一台服务器中需要经历的几步:prerouting--input--output--postrouting。
如果今天是周末,我的一天应该会做这几步:起床--洗漱--吃饭--玩耍--回家;类比于防火墙链,如果数据包只是使用了服务器的路由功能,那么会经历以下几步:prerouing--forward--postrouting。
然后再说一下表,表其实就是一组相同动作的集合,iptable有4个主要的功能,可以让数据包跳过监控,可以把数据包拆开修改一些数据然后再装好,可以修改数据包的源和目的地址,可以根据条件过滤数据包。
我们可以在链上的每一步做这些动作,一个相同的动作可以根据条件做好多次,同一个动作做好多次,为了方便管理,就把着一组动作抽象成了一张表。