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

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

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

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

netfilter框架

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

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

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

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

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

如下图所示;

4fd35fc3f0e6ea53a8edbf96c0e4774a.png

钩子函数说明:

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.

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值