数据包通过防火墙时的过程

Posted myworld5218

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了数据包通过防火墙时的过程相关的知识,希望对你有一定的参考价值。

数据包通过防火墙时的情况分为三种:

1、以本地为目标的包

  当一个数据包进入防火墙后,如果目的地址是本机,被防火墙进行检查的顺序如下:

如果在某一个步骤数据包被丢弃,就不会执行后面的检查

步骤 说明
1     数据包在链路上进行传输
2     数据包进入网络接口
3 mangle PREROUTING 这个链路用来mangle数据包,如对包进行改写或做标记
4 nat PREROUTING 这个链主要用来做DNAT
5     路由判断,如包是发往本地的还是要转发的
6 mangle  INPUT 在路由之后,被送往本地程序之前如对包进行改写或做标记
7 filter INPUT 所有以本地为目的的包都需要经过这个链,包的过滤规则设置在此
8     数据包到达本地程序,如服务程序或客户程序

2、以本地为源的包

  本地应用程序发出的数据包,被防火墙进行检查的顺序如下:

步骤 说明
1     本地程序,如服务程序或客户程序
2     路由判断
3 mangle OUTPUT 用来mangle数据包,如对包进行改写或标记
4 nat   OUTPUT 对发出的包进行DNAT操作
5 filter OUTPUT 对本地发出的包过滤,包的过滤规则设置在此
6 mangle POSTROUTING 进行数据包的修改
7 filter   POSTROUTING 在这里做SNAT
8     数据包离开网络接口并在链路上传输

3、被转发的数据包

  需要通过防火墙转发的数据包,被防火墙进行检查的顺序如下;

步骤 说明
1     数据包在链路上传输
2     进入网络接口
3 mangle PREROUTING mangle数据包,对包进行改写或做标记
4  nat  PREROUTING  这个链主要做DNAT 
5     路由判断,如包是发往本地的,还是要转发 
6  mangle FORWARD 

包继续被发送至mangle表的FORWARD链,这是非常特殊的情况

下才会用到的,在这里,包被mangle。这次mangle发生在最初

的路由判断之后,在最后一次更改包的目的之前 

7  filter FORWARD 

FORWARD包断续被发送到这条FORWARD链,只有需要转发的包

才会走到这里,并且针对这些包的所有过滤也在这里进行,注意,所有

转发的包都要经过这里

8  mangle POSTROUTING 

 这个链也是针对一些特殊类型的包,这一步mangle是在所有更改

包的目的地址的操作完成之后做的,但这时包还在本地上

9  nat POSTROUTING 

这个链就是用来做SNAT的,不推荐在此处过滤,因为某些包即使

不满足条件也会通过 

10     离开网络接口 
11     数据包在链路上传输 

  在对包进行过滤时,常有以下3个动作。

(1)ACCEPT:一旦数据包满足了指定的匹配条件,数据包就会被ACCEPT,并且不会再去匹配当前链中的其他的规则或

     同一个表内的其他规则,但数据仍然需要通过其他表中的链

(2)DROP:如果包符合条件,数据包被会丢掉,并且不会向发送者返回任何信息,也不会向路由返回信息

(3)REJECT: 和DROP基本一样,区别在于除了将包丢弃并且向发送者返回错误信息。

  示例如下:

技术分享图片

  其中“ policy DROP " 表示该链的默认规则为DROP操作,如现有一数据包,源地址为

192.168.1.58,目的地址为137.254.60.6,协议为TCP,目的的端口为80,当该数据包通过FORWARD链时,

从上往下开始匹配,过程如下:

  (1) 与第1条规则:源为192.168.100.0/24,源地址不匹配

  (2) 与第2条规则:目的为69.147.0.0/24,目标不匹配

  (3)与第3条规则: 源为172.16.0.0/16,源不匹配

  (4)与第4条规则:源为10.0.0.0/24, 源不匹配

 由于经过匹配以上所有规则都不符合,数据包则转交给默认规则处理,由于本示例默认的规则为DROP,

因为该数据包被丢弃,

再看另一个数据包,源地址为192.168.1.58,目的地址为69.147.83.199,协议为TCP,目的端口为80,当该

数据包通过FORWARD链时,从上往下开始匹配:

  (1)与第1条规则:源为192.168.100.0/28, 源不匹配

  (2)与第2条规则:源地址为任意(0.0.0.0/0),匹配;目的地址为67.147.0.0/24

因为69.147.83.199在范围内,匹配;源端口和目的端口为任意,匹配;协议为任意(all),匹配:规则链对该

数据包的动作为ACCEPT,因此该数据包通过。

如果数据包的源地址为10.0.0.35,目的地址为69.147.83.199,协议为TCP,目的端口为80,当该数据包

通过FORWARD链时,从上往下开始匹配,当匹配到第4条规则时匹配,动作为mychain,此时数据包会被

转到用户自己定义的规则链mychain进行处理

 

以上是关于数据包通过防火墙时的过程的主要内容,如果未能解决你的问题,请参考以下文章

趣谈NAT和防火墙的对话+防火墙静态PAT的应用

iptables命令详解是啥?

IPTABLES防火墙

防火墙为何不允许接收UDP协议数据包

iptables防火墙相关命令详解

HuaWei ❀ Firewalld 包过滤防火墙