黑客24小时在线接单网站

电脑高手24在线咨询,黑客24小时在线接单网站,黑客接单平台,黑客网站找人,黑客在线qq接单

Linux内核实现多路镜像流量聚合和复制

应用场景

在安全监控和测试过程中,我们不可避免地会遇到这样的问题:需要部署大量基于镜像流量的安全设备,如IPS,流量异常、数据库审计、流量分析等,但镜像流量的端口数量有限,购买专业设备太贵。

针对这种情况,本文从Linux内核模块处理网络数据库包,解决上述问题。谢谢你在这里“白金PT”帮助。

架构设计

Linux内核实现多路镜像流量聚合和复制

内核模块的过程相对简单,转发配置从用户状态提交给内核模块,如”eth1@eth2_eth1@eth3_eth1/eth4@eth5“,本段配置如下:

来自eth1复制流量eth2和eth3

来自eth1和eth4流量,聚合给eth5

MIRROR在核心模块中,只需要实现参数读取、配置分析、网卡判断(源、目的)。

实现算法和代码

参数输入

Linux内核实现多路镜像流量聚合和复制

这个代码的功能是上面提到的“eth1@eth2_eth1@eth3_eth1/eth4@eth5“这样的参数,按照”_”分段提交给参数设置函数”option_setup”

参数设置

Linux内核实现多路镜像流量聚合和复制

在这里,我们将获得参数”eth0@eth1”进一步拆分,分离源网卡eth0,目的网卡eth1,在核模块的整体变量中,有一个结构

”__read_mostly __u8 ethout_bits[MAX_OUT] ={0};“

可以理解,如果服务器有8张网卡,则每个网站将有一个8位的二进制数来表示其转发,例如eth0复制到eth1,那么ethout_bits[0]等于01万,以此类推,如果我想把它放在一边eth0复制到所有其他网卡,将是011111111。

同时,存储哪些网卡是镜像流量口,以防止多余的资源浪费。

__read_mostly__u8 ifindex_bits = 0;

Skb复制和转发包

Linux内核实现多路镜像流量聚合和复制

当Linux收到一个内核skb结构数据包时,判断数据包是否在转发列表中,即网卡是否是镜像源。

Linux内核实现多路镜像流量聚合和复制

然后我用了一个循环来遍历存储的转发目的网口。如果匹配,则使用它skb_clone通过函数复制数据包,然后通过dev_queue_xmit函数直接发送。

***清理skb_buff结构。

启动脚本

以下参数可用于便于调试和快速提交shell脚本:

Linux内核实现多路镜像流量聚合和复制

实测效果

编译、填写参数并执行

执行sh sh.sh

Dmesg输出

Linux内核实现多路镜像流量聚合和复制

镜像流量效果

Linux内核实现多路镜像流量聚合和复制

这里可以看到流量统计由于网卡速率,时间差等,并不会100%一样,是正常的。

CPU占用

当流量达到时400M左右时,CPU占用率还是比较低的。

Linux内核实现多路镜像流量聚合和复制

MIRROR.c源代码

   
  • 评论列表:
  •  颜于謓念
     发布于 2022-05-30 08:04:34  回复该评论
  • eth3来自eth1和eth4流量,聚合给eth5MIRROR在核心模块中,只需要实现参数读取、配置分析、网卡判断(源、目的)。实现算法和代码参数输入这个代码的功能是上面提到的“eth1@eth2_eth1@eth3_eth1/eth4@
  •  忿咬轻禾
     发布于 2022-05-30 00:58:52  回复该评论
  • 样的参数,按照”_”分段提交给参数设置函数”option_setup”参数设置在这里,我们将获得参数”eth0@eth1”进一步拆分,分离源网卡eth0,目的网卡eth1,在核模块的整体变量中,有一个结构”__read_mostly __u8
  •  野欢迷麇
     发布于 2022-05-30 09:19:29  回复该评论
  • *清理skb_buff结构。启动脚本以下参数可用于便于调试和快速提交shell脚本:实测效果编译、填写参数并执行执行sh sh.shDmesg输出镜像流量效果这里可以看到流量统计由于网卡速率,时间差等,并不会100%一样,是正常的。CPU占用当流量达到时400M左右时,CP

发表评论:

Powered By

Copyright Your WebSite.Some Rights Reserved.