iptables的四表五链

文章目录

    • 1. Iptables的链
    • 2.Iptables的表
    • 3.数据包过滤的匹配流程
      • 3.1 规则表之间的顺序
      • 3.2 规则链之间的顺序
      • 3.3 规则链内部各条防火墙规则之间的顺序
      • 3.4如何应用

每个 规则表,其实就相当于一个内核空间的容器, 按照规则集的不同用途进行划分为默认的四个表在每个规则表中包含不同的规则链,处理数据包的不同时机分为 五种链,决定是否过滤或处理数据包的各种规则并按照先后顺序存放在 各规则链中。

  • 规则的作用:对数据包进行过滤或处理;
  • 链的作用:容纳多种防火墙规则;

iptables的四表五链_第1张图片

1. Iptables的链

  • input 链:当收到访问防火墙本机地址的数据包时,将应用此链中的规则;
  • output 链:当防火墙本机向外发送数据包时,将应用此链中的规则;
  • forward 链:当收到需要通过防火墙中转发给其他地址的数据包时,将应用此链中的规则;
  • prerouting 链:在对数据包做路由选择之前,将应用此链中的规则;
  • postrouting 链:在对数据包做路由选择之后,将应用此链中的规则;

input 链 和 output 链主要用在主机型防火墙,是针对服务器本机进行保护的防火墙;

forward 链、prerouting 链、postrouting 链主要用在网络型防火墙,是针对公司内网与 Internet 之间进行安全控制。

2.Iptables的表

iptables管理着四个不同的规则表,分别由独立的内核模块实现。

  • filter 表用来对数据包进行过滤,具体的规则要求决定如何处理一个数据包。

    对应的内核模块为:iptable_filter其表内包括三个链:inputforwardoutput;

  • nat 表:nat 全称:network address translation 网络地址转换主要用来修改数据包的 IP 地址、端口号信息

    对应的内核模块为:iptable_nat,其表内包括三个链:preroutingpostroutingoutput;

  • mangle 表:主要用来修改数据包的服务类型生存周期,为数据包设置标记,实现流量整形、策略路由等。

    对应的内核模块为:iptable_mangle,其表内包括五个链:preroutingpostroutinginputoutputforward;

  • raw 表:主要用来决定是否对数据包进行状态跟踪

    对应的内核模块为:iptable_raw,其表内包括两个链:outputprerouting;

3.数据包过滤的匹配流程

iptables的四表五链_第2张图片

3.1 规则表之间的顺序

当数据包到达防火墙时,如果对应的链内有规则存在,将按照顺序依次从raw 表mangle 表nat 表filter 表

3.2 规则链之间的顺序

  • 流入数据流向:如果是外边的数据包到达防火墙后,要先通过prerouting 链:对数据包做路由选择之后,将应用此链中的规则,然后将进行路由选择,确认数据包的目标地址是否是防火墙本机,结合内核传送给input链做处理,确认通过之后,便可以交给服务器端来进行响应。

    流入本机:PREROUTING --> INPUT --> PROCESS

  • 转发数据流向:如果是外边的数据包到达防火墙后,要先通过prerouting 链做相关处理,随后进行路由选择,数据包的目标地址是任何其他地址的话,则将通过内核传给forward来进行处理是否需要通过或直接丢弃,最后将交给postrouting 链来查看是否有需要修改的数据包信息来进行处理。

    经过本机:PREROUTING --> FORWARD --> POSTROUTING

  • 流出出数据流向:出流量,其实就是防火墙本机向外的地址发送数据包,首先被output 链处理,然后选择路由,然后在postrouting 链查看是否修改数据包的信息来进行处理。

    从本机流出:PROCESS --> OUTPUT --> POSTROUTING

3.3 规则链内部各条防火墙规则之间的顺序

数据包经过每条规则链时,将按照第一条规则、第二条规则……的顺序进行匹配和处理。

  • 将按照从匹配到停止的方式,如找到一条匹配的规则,将不再执行本链中后续的其他规则;
  • 如果对比整个链也找不到与数据包相匹配的规则时,将按照该规则链的默认策略进行处理;

3.4如何应用

  • 问题1:来自于10.0.0.1的地址,访问本机的web服务请求都不允许,应该在哪个表的哪个链上设定规则?
PREROUTING  ( nat、mangle、raw )  --》 INPUT  ( filter、nat、mangle )
要做过滤,只能需要filter表,所以是INPUT链
  • 问题2:所有由本机发往10.0.0.0/24网段的TCP服务都不允许?
OUTPUT ( filter ) --> POSTROUTING  ( nat  mangle )
要做过滤,只能需要filter表,所以是OUTPUT链
  • 问题3:所有来自己本地内部网络的主机,像互联网发送web服务器请求都允许?
PREROUTING  --> FORWARD ( filter )  --> POSTROUTING 
要做过滤,只能需要filter表,所以是FORWARD链 

应用总结

1.实现的功能是什么: 操作哪个表					filter
2.报文经过哪些路线: 判断规则添加到哪个链上			OUTPUT

你可能感兴趣的:(Iptables,网络,服务器,运维)