iptables三表五链

iptables三表五链

1. iptables的概述

IPtables实际上就是一种包过滤性防火墙。也就是通过书写一些接受哪些包,拒绝哪些包的规则,实现数据包的过滤,这些规则储存在专用的信息报过滤表中,而这些表集成在Linux内核中,在信息包过滤表中,规则被分组放在我们所谓的链中。

2. iptables的组成

IPtables由两部分组成:

  • Framework:netfilter hooks function钩子函数,实现网络过滤的基本框架。
  • Rule utils:IPtables规则管理工具

3. iptables的三表五链简述

*三表*

  • Filter:过滤、防火墙、过滤数据包
  • Nat:用于网络地址转换(IP、端口)
  • Mangle:解析报文,做出修改,等装报文

*五链*

  • Prerouting链:数据包进入路由器之前
  • Input链:目的地址本机
  • Forword链:实现转发
  • Output链:原地址为本机,向外发送
  • Postrouting链:发送到网卡之前

4. iptables中表与链的对应关系,其实就是一个表中包含哪几个链:

  • 如果要访问某台主机上面的http服务,必须先经过那台主机的内核允许,才可以进行访问
  • 防火墙其实也是在内核上面开启的一个服务
  • 防火墙里面有表格,写一些规则,允许哪个主机访问什么服务,这个表格由iptables进行控制
  • 但是有两种规则:iptables 与 firewalld
  • 第一张表:filter表格:放的是经过内核的ip input output forward
  • 第二张表:nat表格:放的不是经过内核的服务 input output postrouting prerouting
  • 第三张表:备用表格mangle: input output forward postrouting prerouting

在这里插入图片描述
在这里插入图片描述

  • 当172.25.254这个网段的主机想去访问1.1.1网段的主机的时候,因为二者不在一个网段,因此中间需要有一个具有地址伪装功能的主机,它有两个网卡。

在这里插入图片描述

在这里插入图片描述

8. iptables 数据包流程

基本步骤如下:

数据包到达网络接口,比如 eth0。

  1. 进入 raw 表的 PREROUTING 链,这个链的作用是赶在连接跟踪之前处理数据包。

  2. 如果进行了连接跟踪,在此处理。

  3. 进入 mangle 表的 PREROUTING 链,在此可以修改数据包,比如 TOS 等。

  4. 进入 nat 表的 PREROUTING 链,可以在此做DNAT,但不要做过滤。

  5. 决定路由,看是交给本地主机还是转发给其它主机。

    到了这里我们就得分两种不同的情况进行讨论了,一种情况就是数据包要转发给其它主机,这时候它会依次经过
  6. 进入 mangle 表的 FORWARD 链,这里也比较特殊,这是在第一次路由决定之后,在进行最后的路由决定之前,我们仍然可以对数据包进行某些修改。

  7. 进入 filter 表的 FORWARD 链,在这里我们可以对所有转发的数据包进行过滤。需要注意的是:经过这里的数据包是转发的,方向是双向的。

  8. 进入 mangle 表的 POSTROUTING 链,到这里已经做完了所有的路由决定,但数据包仍然在本地主机,我们还可以进行某些修改。

  9. 进入 nat 表的 POSTROUTING 链,在这里一般都是用来做 SNAT ,不要在这里进行过滤。

  10. 进入出去的网络接口。完毕。

    另一种情况是,数据包就是发给本地主机的,那么它会依次穿过
  11. 进入 mangle 表的 INPUT 链,这里是在路由之后,交由本地主机之前,我们也可以进行一些相应的修改。

  12. 进入 filter 表的 INPUT 链,在这里我们可以对流入的所有数据包进行过滤,无论它来自哪个网络接口。

  13. 交给本地主机的应用程序进行处理。

  14. 处理完毕后进行路由决定,看该往那里发出。

  15. 进入 raw 表的 OUTPUT 链,这里是在连接跟踪处理本地的数据包之前。

  16. 连接跟踪对本地的数据包进行处理。

  17. 进入 mangle 表的 OUTPUT 链,在这里我们可以修改数据包,但不要做过滤。

  18. 进入 nat 表的 OUTPUT 链,可以对防火墙自己发出的数据做 NAT 。

  19. 再次进行路由决定。

  20. 进入 filter 表的 OUTPUT 链,可以对本地出去的数据包进行过滤。

  21. 进入 mangle 表的 POSTROUTING 链,同上一种情况的第9步。注意,这里不光对经过防火墙的数据包进行处理,还对防火墙自己产生的数据包进行处理。

  22. 进入 nat 表的 POSTROUTING 链,同上一种情况的第10步。

  23. 进入出去的网络接口。完毕。

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值