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

摘要:
将不执行以下检查步骤。链接表显示1。分组在链路2上传输。数据包进入网络接口3mangePREROUTING。此链路用于MANGLE数据包。在发送到本地程序之前,如果数据包被重写或标记为7filterINPUT,则所有用于本地目的的数据包都需要通过此链接。数据包过滤规则在第8节中设置。数据包到达本地程序。

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

1、以本地为目标的包

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

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

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

2、以本地为源的包

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

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

3、被转发的数据包

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

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

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

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

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

7 filterFORWARD 

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

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

转发的包都要经过这里

8 manglePOSTROUTING 

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

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

9 natPOSTROUTING 

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

不满足条件也会通过 

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

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

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

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

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

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

  示例如下:

数据包通过防火墙时的过程第1张

  其中“ 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进行处理

免责声明:文章转载自《数据包通过防火墙时的过程》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇QGIS制图表达-符号大小随比例尺变化Flutter的环境配置以及一些常见问题下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

字节跳动基于Apache Hudi构建EB级数据湖实践

来自字节跳动的管梓越同学一篇关于Apache Hudi在字节跳动推荐系统中EB级数据量实践的分享。 接下来将分为场景需求、设计选型、功能支持、性能调优、未来展望五部分介绍Hudi在字节跳动推荐系统中的实践。 在推荐系统中,我们在两个场景下使用数据湖 我们使用BigTable作为整个系统近线处理的数据存储,这是一个公司自研的组件TBase,提供了...

[转载]Linux大文件传输

http://www.kuqin.com/linux/20120207/317913.html 我们经常需要在机器之间传输文件。比如备份,复制数据等等。这个是很常见,也是很简单的。用scp或者rsync就能很好的完成任务。但是如果文件很大,需要占用一些传输时间的时候,怎样又快又好地完成任务就很重要了。在我的测试用例中,一个最佳的方案比最差的方案,性能提高...

eslint 的基本配置介绍

eslint 这个代码规则,是在用webpack +vue-cli这个脚手架时候接触的,默认的规则可能不太习惯我们日常平时的代码开发,需要对这个规则稍加改造。 下面的是 eslintrc.js的基本规则(语句分号结尾,支持空格和tab的混合缩进) // https://eslint.org/docs/user-guide/configuring mod...

kaggle kernel使用指南

有几个要注意的地方: 1、可以选择CPU或GPU,但是机器学习模型一般的CPU就够了,最近(2019.04)使用GPU的话一小时后总是会断开连接,这时候要跑久一点的cell就凉了。 2、导入文件:支持自行导入,如果是kaggle上的数据也可以直接从官方比赛数据中选择,导入到右侧的workspace中后,在代码中要导入csv文件,其路径就是点击workspa...

【Java虚拟机4】Java内存模型(硬件层面的并发优化基础知识--缓存一致性问题)

前言 今天学习了Java内存模型第一课的视频,讲了硬件层面的知识,还是和大学时一样,醍醐灌顶。老师讲得太好了。 Java内存模型,感觉以前学得比较抽象。很繁杂,抽象。 这次试着系统一点跟着2个老师学习一下。 学习Java内存模型目的: 1.高并发情况下,java内存模型是怎么提供支持的? 2.一个对象创建后,在内存中的布局? 为什么在聊JVM内存模型、ha...

app开发之deviceone

deviceone,跨平台、低成本、纯原生的app开发服务,具体介绍见:http://www.deviceone.net/ do不同于dcloud、rn等开发套件,do只是一座桥梁,可以选择使用javascript or lua进行纯原生开发,开发后的app同时适配android、ios、winphone、桌面等平台,真正实现了跨平台原生开发的特点,开发出...