1.流程图

    

2.防火墙对数据包处理过程的各步骤如下:

  1)Interface(网卡接口)

  网卡接口驱动负责接数收据包,并转交给下一过程。

  2)DoS Sensor(DoS防御,默认关闭)

  负责过滤SYN flood、UDP flood、ICMP flood等DoS攻击,并可针对源、目的IP的并发连接数进行限制。

  3)IP integrity header checking(IP头完整性校验)

  检查数据包头完整性。

  4)IPSec(IPSec VPN解密,默认关闭)

  如果是防火墙本身的IPSec VPN隧道中的数据包,将对其进行解密。

  5)DNAT(目标地址NAT)

  检查数据包中的目标IP地址,如果在 VIP(目标地址NAT)表中,则将其替换为映射后IP地址(真实IP地址)和端口。

  6)Routing(路由)

  本步骤根据数据包的目标IP地址确定该数据包的流出接口。

  7)Stateful Inspection Engine(状态检测引擎)

  状态检测引擎包含几个组件:

  a、Policy lookup(策略查找)

  在会话建立阶段,判断是否允许数据通过并建立会话状态,并根据UTM功能的开关决定数据包是否需要进入流检测引擎(Flow-based inspection engine)和代理检测引擎(Proxy-based inspection engine)。

  b、Session track(会话跟踪)

  维护会话表,跟踪会话状态、NAT和其它相关功能。会话建立之后的后续数据包不再进行策略匹配,直接根据会话状态转发。

  c、User authentication(用户认证,默认关闭)

  对用户身份进行认证,根据用户名和用户所在组选择防火墙策略。

  d、Management traffic(管理流量)

  与防火墙自身相关的流量处理,如Web、SSH管理,Syslog、SNMP通信等。

  e、SSL VPN流量(默认关闭)

  将SSL VPN流量解密,送至SSL VPN虚拟接口(通常为ssl.root),然后查找策略。

  f、Session helpers(即ALG)

  对FTP、SIP、Oracle等特殊应用进行处理,如动态开启策略、NAT,自动修改payload等,保证其正常通信。

  8)Flow-based inspection engine(流检测引擎,默认关闭)

  如果在防火墙策略中启用了防病毒、IPS、应用控制等流检测UTM功能,则会话后续数据包交由流检测引擎处理。

  9)Proxy-based inspection engine(代理检测引擎,默认关闭)

  如果在防火墙策略中启用了Web过滤、防病毒、反垃圾邮件、DLP等应用代理检测UTM功能,则会话后续数据包交由代理检测引擎处理。

  10)IPSec(IPSec VPN加密,默认关闭)

  如果会话匹配了IPSec VPN策略,此步骤将数据包加密封装

  11)Source NAT(源地址NAT)

  如果策略中启用了NAT,则将数据包的源IP地址和源端口替换为目标接口地址或IP池中的IP地址(通常为公网IP地址)。

  12)Routing(路由)

  最后一个路由步骤,确定数据包的流出接口,由路由引擎转发数据包。

  13)Egress(流出)

  由流出接口网卡将数据包发出防火墙。

  

  

  

  

  

  

  

  

  

  

  

  

  

FortiGate防火墙对数据包处理流程的更多相关文章

  1. Linux内核二层数据包接收流程

    本文主要讲解了Linux内核二层数据包接收流程,使用的内核的版本是2.6.32.27 为了方便理解,本文采用整体流程图加伪代码的方式从内核高层面上梳理了二层数据包接收的流程,希望可以对大家有所帮助.阅 ...

  2. Linux内核网络数据包处理流程

    Linux内核网络数据包处理流程 from kernel-4.9: 0. Linux内核网络数据包处理流程 - 网络硬件 网卡工作在物理层和数据链路层,主要由PHY/MAC芯片.Tx/Rx FIFO. ...

  3. linux 内核网络数据包接收流程

    转:https://segmentfault.com/a/1190000008836467 本文将介绍在Linux系统中,数据包是如何一步一步从网卡传到进程手中的. 如果英文没有问题,强烈建议阅读后面 ...

  4. linux内核数据包转发流程(三)网卡帧接收分析

    [版权声明:转载请保留出处:blog.csdn.net/gentleliu.邮箱:shallnew*163.com] 每一个cpu都有队列来处理接收到的帧,都有其数据结构来处理入口和出口流量,因此,不 ...

  5. linux内核数据包转发流程(二):中断

    [版权声明:转载请保留出处:blog.csdn.net/gentleliu.邮箱:shallnew*163.com] 内核在处理2层数据包之前,必须先处理中断系统.设立中断系统,才有可能每秒处理成千的 ...

  6. linux内核数据包转发流程(一):网络设备驱动

    [版权声明:转载请保留出处:blog.csdn.net/gentleliu.邮箱:shallnew*163.com] 网卡驱动为每一个新的接口在一个全局的网络设备列表里插入一个数据结构.每一个接口由一 ...

  7. 数据包从物理网卡流经 Open vSwitch 进入 OpenStack 云主机的流程

    目录 文章目录 目录 前言 数据包从物理网卡进入虚拟机的流程 物理网卡处理 如何将网卡收到的数据写入到内核内存? 中断下半部分软中断处理 数据包在内核态 OvS Bridge(Datapath)中的处 ...

  8. Linux数据包路由原理、Iptables/netfilter入门学习

    相关学习资料 https://www.frozentux.net/iptables-tutorial/cn/iptables-tutorial-cn-1.1.19.html http://zh.wik ...

  9. 数据包接收系列 — NAPI的原理和实现

    本文主要内容:简单分析NAPI的原理和实现. 内核版本:2.6.37 Author:zhangskd @ csdn 概述 NAPI是linux新的网卡数据处理API,据说是由于找不到更好的名字,所以就 ...

随机推荐

  1. java栈的实现复习

    栈是一种线性表,仅限在一端进行插入和删除操作,特点是先进后出. 由于栈是一种线性结构,首先可以想到用数组来实现,但由于数组初始化后容量就已经确定,如果不添加扩容操作,则会出现栈溢出,同时扩容操作也会降 ...

  2. oracle-data-mining

    create user datamine identified by 123456 QUOTA UNLIMITED ON users; 然后在sqldeveloper工具界面-data miner中, ...

  3. python logging配置时间或大小轮转

    python中的很多模块是非常牛X的,之前提到过logging模块(其功能类似于java下的Log4j ),由于最近一个涉及网络排障的脚本需要日志输出,这里就使用了python的logging模块去实 ...

  4. Mysql常见的优化策略

    数据库设计方面优化 1.数据库设计符合第三范式,为了查询方便可以有一定的数据冗余.2.选择数据类型优先级 int > date,time > enum,char>varchar &g ...

  5. JS Replace 全部替换字符的用法小结

    script language="javascript">var r= "1\n2\n3\n";//将字母\n替换成分号alert(r.replace(& ...

  6. nginx gzip配置

    参考: https://docs.nginx.com/nginx/admin-guide/web-server/compression/ server { gzip on;    gzip_types ...

  7. 算法实践--不相交集合(Disjoint Sets)

    什么是不相交集合(Disjoint Sets) 是这样的一组set,任何元素最多只能在一个set中 至少支持查找Find和合并Union操作 实现方式(基于树) 每个set都是一棵树 每棵树都由树的根 ...

  8. 并发之java.util.concurrent.atomic原子操作类包

    15.JDK1.8的Java.util.concurrent.atomic包小结 14.Java中Atomic包的原理和分析 13.java.util.concurrent.atomic原子操作类包 ...

  9. MySQL修改数据库、表、列、外键字符编码和排序编码

    在重启Confluence应用时,突然遇见这个检查错误,查询总结需要修改Mysql数据库的所有字符编码和排序编码,报错如下: Confluence Help – This installation o ...

  10. (整理)SQL Server 2008 CDC 功能使用

    最近某项目突然要增加数据的获取,但是不能改程序.也没有同步的只读库,只好使用CDC来进行尝试. CDC的启用和停止全部用SQL实现,在这里给出主要的SQL步骤: /****** Script for ...