linux内核打印数据包,基于Netfilter的Linux内核数据包处理

一、Netfilter介绍

Netfilter是Linux操作系统核心层内部的一个数据包处理框架,可以在Linux内核中过滤、修改和封装数据包,Netfilter在IP报文处理流程中插入5个挂载点来,可以在挂载点注册处理数据包的回调函数,当数据包进入Linux内核经过挂载点的时候,会执行回调函数来处理数据包。

二、Netfilter挂载点示意图

57a7ad3bad4e89ecba4df7fe4cd5f478.gif

NF_IP_PRE_ROUTING        在数据包校验之后路由选择之前

NF_IP_LOCAL_IN              在路由选择之后,数据包的目的是本机

NF_IP_FORWARD               目的地是其它主机地数据包

NF_IP_LOCAL_OUT           本机数据包其离开本机的过程中

NF_IP_POST_ROUTING      在数据包离开本地主机之前

注册到挂载点的回调函数,可以获取完整的数据包,对数据包进行操作,回调函数需要一个返回值三、回调函数返回值

NF_ACCEPT 继续正常的报文处理;

NF_DROP  将报文丢弃;

NF_STOLEN 由钩子函数处理了该报文,不要再继续传送;

NF_QUEUE 将报文入队,通常交由用户程序处理;

NF_REPEAT 再次调用该钩子函数。

三、基本操作

1、在Linux内核中利用Netfilter解析数据包,自适应多层VLan和PPPoe网络环境;

57a7ad3bad4e89ecba4df7fe4cd5f478.gif

2、对特定DNS域名的请求数据包进行过滤;

57a7ad3bad4e89ecba4df7fe4cd5f478.gif

3、解析IP层数据头部

57a7ad3bad4e89ecba4df7fe4cd5f478.gif

4、对特定端口的数据包进行过滤;

57a7ad3bad4e89ecba4df7fe4cd5f478.gif

5、解析HTTP请求和返回数据包,对特定Host、URI、文件下载的数据包进行过滤;

1e7cd0edc2f53a5bfbc41fb7cea5e0d7.png

951df287e715125f94bcbc77e96d1614.png

57a7ad3bad4e89ecba4df7fe4cd5f478.gif

6、在以太网环境中,对数据包进行处理

57a7ad3bad4e89ecba4df7fe4cd5f478.gif

7、在网桥环境中,对经过网桥的数据包进行解析;

57a7ad3bad4e89ecba4df7fe4cd5f478.gif

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值