Linux 内核防火墙的工作原理一

  Linux的内核提供的防火墙功能通过netfiter框架实现,并提供iptables工具配置和修改防火墙的规则

  netfilter的通用框架不依赖于具体的协议,而是为每种网络协议定义一套钩子函数。这些钩子函数在

数据包经过协议栈的几个关键点时被调用,在这几个点中,协议栈将数据包及钩子函数作为参数,传递

netfilter框架

  对于每种网络协议定义的钩子函数,任何内核模块可以对每种协议的一个或多个钩子函数进行注册,

实现挂接。这样当某个数据包被传递给netfilter框架时,内核能检测到是否有有关模块对该协议和钩子函

数进行了注册,如发现注册信息则调用该模块在注册时使用的回调函数,然后对应模块去检查、修改、

丢弃该数据包及指示netfilter将该数据包传入用户空间的队列

  钩子函数提供了一种方便的机制,以便在数据包通过Linux内核的不同位置上截获和操作处理数据包

如下图所示;

钩子函数说明:

  NF_IP_PRE_ROUTING:网络数据包进入系统,经过简单的检测后,数据包转交给该函数进行处理,

              然后根据系统设置的规则对数据包进行处理,如果数据包不被丢弃则交给

              路由函数进行处理,在该函数中可替换IP包的目的地址,即DNAT;

  NF_IP_LOCAL_IN:所有发送给系统的数据包都要能过该函数的处理,该函数根据系统设置的规则对

           数据包进行处理,如果数据包不被丢弃则交给本地的应用程序;

  NF_IP_FORWARD:所有不是发送给本机的数据包都要能过该函数进行处理,该函数会根据系统设置

           的规则对数据包进行处理,如数据包不被丢弃则转 NF_IP_POST_ROUTING 进行处理。

  NF_IP_LOCAL_OUT:所有从本地应用程序出来的数据包必须通过该函数的处理,该函数根据系统设置的

           规则对数据包进行处理,如果数据包不被丢弃则交给路由函数进行处理。

  NF_IP_POST_ROUTING:所有数据包在发给其他主机之前需要通过该函数的处理,该函数根据系统设置

              的规则对数据包进行处理,如果数据包不被丢弃,将数据包发给数据链路层,在

              该函数中可以替换IP包的源地址,即SNAT.

  

原文地址:https://www.cnblogs.com/myworld5218/p/9778943.html

时间: 2024-10-10 08:02:31

Linux 内核防火墙的工作原理一的相关文章

Linux Shell性质和工作原理

shell的性质 Linux系统的shell相当于操作系统的"一层外壳",它是命令语言解释器,它为用户提供了使用操作系统的接口.它不属于内核,而是在内核之外以用户态方式运行.它的基本功能是解释并执行用户打入的各种命令,实现用户与Linux内核的接口. 个人理解:shell就是普通的用户态程序,能够理解用户命令.是用户和系统的传信者. shell工作原理 在启动Linux系统后,内核会为每个终端用户建立一个进程去执行shell解释程序. 以下内容为个人理解: 1.shell检查并预处理命

防火墙的工作原理,他的主要性能指标有哪些?

工作原理: 硬件防火墙的内部划分为多个区域,所有的转发接口都唯一地属于某一个区域,防火墙的安全规则定义在安全区域之间,一般防火墙上默认保留如下四个安全区域. 1.非受信区:低级的安全区域. 2.非军事化区:中级的安全区域. 3.受信区域:叫高级的区安全区域. 4.本地区与:最高级别的安全区域. 区域的数据流分两个方向: 一个为入方向,数据由低级别的安全区域向高级别的安全区域传输的方向. 另一个为出方向,数据由高级别的安全区域向低级别的安全区域传输方向. 另外,本域内不同接口间不过滤直接转发,进.

[原理分析]linux内核中的链表原理实践[2]

摘要: 本文过程化的演进方式,将自己写的链表结构慢慢地演化到类似linux内核链表的实现. 正文: 在本系列1中,如果将data_node中的信息调换一下,也即value放在前面,将head_node信息放在后面,那么节点数据就不能正常输出. typedef struct data_node{ int value; head_node h; }data_node; 要查找原因,主要还是看list_value函数的实现: void list_value(data_node* d) { data_n

[原理分析]linux内核中的链表原理实践

摘要: 本文根据linux内核的链表定义,尝试自己来完成相关的接口设计,并且构建测试用例,来体会下链表接口的用法. 正文: 首先来看下linux内核提供的链表接口大致如下: struct head_node{ struct head_node* pre; struct head_node* next; }; 即节点中只有两个指针:一个指向前一个元素,一个指向后一个元素:假设我们现在要使用该接口,跟一个int值联合在一起形成数据节点,那么存在两种可能的方式: case1: typedef stru

Linux路由器及交换机工作原理

IP包头中TTL字段的含义是什么?它用来做什么? TTL(time to live):该字段用于表示IP数据包的生命周期, 作用:限制一个数据在网络中无限循环的转发下去. 简述arp缓存表的建立过程: Pc1发送数据给pc2,查看缓存表中没有pc2的Mac地址,便向所有的主机发送ARP请求.Pc2收到后回复ARP应答.Pc1知道pc2的Mac地址后将pc2的mac地址保存的缓存中,发送数据. arp缓存表中记录了什么字段信息: Internet地址   物理地址  类型     简述网络通信中数

[原理分析]linux内核中的链表原理实践[3]

摘要: 本文的第[一,二]系列主题虽然是链表操作,内容还是指针的操作,本文通过链表实例来阐述下指针操作.不仅仅涉及到数据节点指针,也还涉及到函数指针,最后还涉及基于指针的函数体优化. 正文: 本文主要阐述链表中的节点删除操作,并且在删除过程中使用回调函数.回调函数本身也很简单,就是判断当前节点中数据的奇性或者偶性,来判断是否删除该数据节点. #include "stdafx.h" #include <memory> typedef struct node{ int valu

linux中inode的工作原理

当划分磁盘分区并格式化的时候,整个分区会被划分为两个部分,即inode区和data block(实际数据放置在数据区域中)这个inode即是(目录.档案)文件在一个文件系统中的唯一标识,需要访问这个文件的时候必须先找到并读取这个文件的 inode. Inode 里面存储了文件的很多重要参数,其中唯一标识称作 Inumber, 其他信息还有创建时间(ctime).修改时间(mtime) .文件大小.属主.归属的用户组.读写权限.数据所在block号等信息 所以文件就有两部份组成: 1.元数据:in

华为防火墙产品介绍及工作原理

博文大纲 华为防火墙产品介绍 防火墙的工作原理1.防火墙的工作模式2.华为防火墙的安全区域划分3.防火墙的Inbound和Outbound是什么?4.状态化信息的含义5.安全策略的相关概念 华为防火墙产品介绍 USG2000.USG5000.USG6000和USG9500构成了华为防火墙的四大部分,分别适用于不同的环境需求,其中,USG2000和USG5000系列定位于UTM(统一威胁管理)产品,USG6000系列属于下一代防火墙产品,USG9500系列属于高端防火墙产品.. 各个系列的产品介绍

华为防火墙及它的工作原理

一.华为防火墙产品介绍 USG2000.USG5000.USG6000和USG9500构成了华为防火墙的四大部分,分别适合于不同环境的网络需求,其中,USG2000和USG5000系列定位于UTM(统一威胁管理)产品,USG6000系列属于下一代防火墙产品,USG9500系列属于高端防火墙产品. 1.USG2110 USG2110为华为针对中小企业及连锁机构,SOHO企业等发布的防火墙设备,其功能涵盖防火墙,UTM.Virtual Private Network(请自行看首字母,我写简写的话就被