一、简介
iptables是Linux系统上的防火墙,是一个包过滤型的防火墙,能够根据事先定义好的检查规则对进出本机或者本地网络的报文进行匹配检查,并对于能够被规则匹配的报文作出相应的处理动作。iptables有五个内置规则链(名称需大写),分别为:
- PREROUTING
- INPUT
- FORWARD
- OUTPUT
- POSTROUTING
这五个内置规则分别对应的iptables在linux系统中作用的五个位置,分别为:
- PREROUTING 对应 从网卡进入到内核空间中
- INPUT 对应 从内核空间到用户空间
- FORWARD 对应 从一个网卡转发到另一个网卡
- OUTPUT 对应 从用户空间到内核空间
- POSTROUTING 对应 从内核空间到网卡
五个内置规则链对应的图解如下:
如上图,五个规则链分别在不同的逻辑位置对进入到系统中的报文按照事先定义的规则进行匹配检查过滤。由于一个链中通常包含着不止一条规则,因此当数据想要通过这些规则链的时候,必须得一条一条去匹配通过他们的规则,其形式类似于串行,这也就是为什么规则链被称为链的原因。
当这些内置链中拥有着大量的规则,其中肯定包含着不同类型的规则,如过滤Ip或端口的规则、修改报文的规则等等,而iptables把这些具有相同功能的规则作为表而管理存放。不同的规则链中所能包含的规则类型是不一样的,有些链可能可以有地址转换规则,有些链却不能设置。那么就iptables自身内置的四种功能表其所包含的规则能被哪些链所使用,其分类如下:
- filter:过滤表,能被INPUT、FORWARD、OUTPUT这三个规则链使用。
- nat:网络地址转换表,能被PREROUTING、OUT、POSTROUTING(centos7中还包含着INPUT)使用。
- mangle:报文修改表,能被PREROUTING,INPUT,FORWARD,OUTPUT,POSTROUTING使用。
- raw:一般是为了不再让iptables对数据包进行跟踪,提高性能,能被PREROUTING,OUTPUT使用。
除此之外规则链中的规则是链式结构,按理来说执行的时候是有一定的顺序的,但是不同的规则属于不同的表,那么表之间的优先顺序是怎么区分的呢?其实当一个规则链当中包含了四个表filter,nat,mangle,raw时&#x