当前位置: 首页 > news >正文

Zeek安装、使用与压力测试

Zeek安装与压力测试

  • Zeek安装、简单使用与压力测试
    • 环境
    • Zeek安装
    • zeek简单运行
    • 安装PF_RING
    • 修改Zeek配置文件,使用PF_RING,实现集群
    • 流量压力测试
    • 查看zeek日志

Zeek安装、简单使用与压力测试

科研需要,涉及到Zeek的安装、使用和重放流量压力测试评估Zeek性能,没有找到一个较完整的流程,以免后续忘记还是记下来吧

环境

ubuntu18.04

Zeek安装

Zeek官方文档地址:https://zeek-docs-cn.readthedocs.io/zh_CN/chinese/install/install.html
我参考的安装博文:https://qgrain.github.io/2020/03/12/Zeek%E5%AE%89%E8%A3%85/
1.安装所需要的依赖项

sudo apt-get install cmake make gcc g++ flex bison libpcap-dev libssl-dev python-dev swig zlib1g-dev

2.通过源码安装zeek
(1)在官网下载源码,官网下载地址:https://zeek.org/get-zeek/。通过git下载也可以,但是我在下载的时候总是下载不下来,所以直接从官网下载的
(2)解压缩下载的文件后,进入文件夹内,执行以下命令

# ./configure --help 
./configure
make
make install
# 默认安装路径为/usr/local/zeek

如果没安装上看看是否没有root权限,可以在前面加上sudo试试,如果缺少什么依赖项,就按照提示按照相应的依赖项
(3)配置运行时环境

export PATH=/usr/local/zeek/bin:$PATH

zeek简单运行

(1)进入zeek/bin文件夹内

cd /usr/local/zeek/bin

(2)运行zeekctl

sudo python3 zeekctl

(3)首次运行需要先在zeekctl交互窗口中输入deploy命令
(4)在zeekctl中输入start开启

(5)输入stop停止监测
在这里插入图片描述
(6)可以输入help了解其他命令使用方法

安装PF_RING

当要使用zeek集群时,需要安装PF_RING,集群的具体原理和作用以及PF_RING都可参考Zeek的官方文档:https://zeek-docs-cn.readthedocs.io/zh_CN/chinese/configuration/index.html?highlight=PF_RING#installing-pf-ring
(1)去ntop的github上下载PF_RING:https://github.com/ntop
(2)解压缩PF_RING后进行安装

cd PF_RING-5.6.2/userland/lib
sudo ./configure --prefix=/opt/pfring
sudo make install

(3)安装一些依赖
下载libcap、tcpdump包后的安装命令如下图

cd ../libpcap
./configure --prefix=/opt/pfring
make installcd ../tcpdump-4.1.1
./configure --prefix=/opt/pfring
make installcd ../../kernel
make
make install

(4)设置PF_RING模式
具体的设置可以参考ntop下PF_RING的官方文档,enable_tx_capture=0应该是不提取发送的数据包

modprobe pf_ring enable_tx_capture=0 min_num_slots=32768

(5)Zeek正确连接到PF_RING libpcap库
注意,在这之前我重新执行了zeek的安装命令,如下命令所示,我不知道是否必须要执行,大家可以自行尝试

./configure --with-pcap=/opt/pfring
make
make install

随后,执行下列命令,确保Zeek正确连接到PF_RING libpcap库

ldd /usr/local/zeek/bin/zeek | grep pcaplibpcap.so.1 => /opt/pfring/lib/libpcap.so.1 (0x00007fa6d7d24000)

修改Zeek配置文件,使用PF_RING,实现集群

我设置了15个worker,每个worker分配了2个逻辑cpu,配置文件如下
注:要按情况设置worker,查清楚cpu内核数,不同worker使用不同的逻辑cpu,同时还需要给logger等其他节点预留cpu

# Example ZeekControl node configuration.
#
# This example has a standalone node ready to go except for possibly changing
# the sniffing interface.# This is a complete standalone configuration.  Most likely you will
# only need to change the interface.
#[zeek]
#type=standalone
#host=localhost
#interface=eno1## Below is an example clustered configuration. If you use this,
## remove the [zeek] node above.[logger-1]
type=logger
host=localhost  #可以改成你的logger所在电脑的IP[manager]
type=manager
host=localhost  #可以改成你的manager所在电脑的IP[proxy-1]
type=proxy
host=localhost  #可以改成你的proxy所在电脑的IP[worker-1]
type=worker
host=localhost  #可以改成你的worker所在电脑的IP
interface=eno1  #改成你的网卡信息
lb_method=pf_ring #使用pf_ring
lb_procs=2 #分配2个逻辑cpu
pin_cpus=0,1 #分配的两个cpu编号[worker-2]
type=worker
host=localhost
interface=eno1
lb_method=pf_ring
lb_procs=2
pin_cpus=2,3[worker-3]
type=worker
host=localhost
interface=eno1
lb_method=pf_ring
lb_procs=2
pin_cpus=4,5[worker-4]
type=worker
host=localhost
interface=eno1
lb_method=pf_ring
lb_procs=2
pin_cpus=6,7[worker-5]
type=worker
host=localhost
interface=eno1
lb_method=pf_ring
lb_procs=2
pin_cpus=8,9[worker-6]
type=worker
host=localhost
interface=eno1
lb_method=pf_ring
lb_procs=2
pin_cpus=10,11[worker-7]
type=worker
host=localhost
interface=eno1
lb_method=pf_ring
lb_procs=2
pin_cpus=12,13[worker-8]
type=worker
host=localhost
interface=eno1
lb_method=pf_ring
lb_procs=2
pin_cpus=14,15[worker-9]
type=worker
host=localhost
interface=eno1
lb_method=pf_ring
lb_procs=2
pin_cpus=16,17[worker-10]
type=worker
host=localhost
interface=eno1
lb_method=pf_ring
lb_procs=2
pin_cpus=18,19[worker-11]
type=worker
host=localhost
interface=eno1
lb_method=pf_ring
lb_procs=2
pin_cpus=20,21[worker-12]
type=worker
host=localhost
interface=eno1
lb_method=pf_ring
lb_procs=2
pin_cpus=22,23[worker-13]
type=worker
host=localhost
interface=eno1
lb_method=pf_ring
lb_procs=2
pin_cpus=24,25[worker-14]
type=worker
host=localhost
interface=eno1
lb_method=pf_ring
lb_procs=2
pin_cpus=26,27[worker-15]
type=worker
host=localhost
interface=eno1
lb_method=pf_ring
lb_procs=2
pin_cpus=28,29

流量压力测试

(1)安装tcpreplay

sudo apt-get install tcpreplay

(2)修改数据包

tcprewrite --infile=test.pcap --outfile=test_1.pcap --dstipmap=0.0.0.0/0:111.111.11.111 --enet-dmac=ab:cd:ef:ef:ab:cd

(3)更新数据包校验和

tcprewrite --infile=test_1.pcap --outfile=test_final.pcap --fixcsum

(4)重放数据包

tcpreplay -v  -i eth0 -M 1000 test_final.pcap

查看zeek日志

Zeek日志保存在zeek文件夹的log子文件夹内,即/usr/local/zeek/log,通过查看日志可以查看Zeek流量监控结果

相关文章:

Zeek安装、使用与压力测试

Zeek安装与压力测试Zeek安装、简单使用与压力测试环境Zeek安装zeek简单运行安装PF_RING修改Zeek配置文件,使用PF_RING,实现集群流量压力测试查看zeek日志Zeek安装、简单使用与压力测试 科研需要,涉及到Zeek的安装、使用和重放流量压力测试评…...

【javaEE初阶】第三节.多线程 (进阶篇 ) 死锁

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言一、"死锁"出现的典型场景二、产生 "死锁" 的必要条件 三、解决 "死锁" 问题的办法 总结前言 今天对于多线程进阶的学习&#…...

基于密集连接的轻量级卷积神经网络,用于使用边云架构的露天煤矿服务识别

遥感是快速检测非法采矿行为的重要技术工具。由于露天煤矿的复杂性,目前关于露天煤矿自动开采的研究较少。基于卷积神经网络和Dense Block,我们提出了一种用于从Sentinel-2遥感图像中提取露天煤矿区域的轻量级密集连接网络-AD-Net,并构建了三…...

无刷高速风筒方案介绍--【PCBA方案】

疫情三年过去,春节后,一个新的开始,大家满怀希望畅谈今年好气象。 三年来一波一波的封城、隔离、核酸,经济压抑到了无以复加的地步,也导致了诸多社会问题的出现。消费力被磨平,人们小心翼翼的生活。 常跟…...

花括号展开II[栈模拟dfs]

栈模拟dfs前言一、花括号展开II二、栈模拟dfs总结参考资料前言 递归调用,代码非常的简洁。但是可以通过显式栈来模拟栈中的内容,锻炼自己的代码能力,清楚知道栈帧中需要的内容。 一、花括号展开II 二、栈模拟dfs 每碰到一个左括号&#xf…...

神经网络分类任务(手写数字识别)

1.Mnist分类任务 网络基本构建与训练方法,常用函数解析 torch.nn.functional模块 nn.Module模块 学习方法:边用边查,多打印,duogua 使用jupyter的优点,可以打印出每一个步骤。 2.读取数据集 自动下载 %matplotl…...

FCN网络(Fully Convolutional Networks)

首个端到端的针对像素级预测的全卷积网络 原理:将图片进行多次卷积下采样得到chanel为21的特征层,再经过上采样得到和原图一样大的图片,最后经过softmax得到类别概率值 将全连接层全部变成卷积层:通常的图像分类网络最后几层是全…...

随想录二刷Day15——二叉树

文章目录二叉树2. 递归遍历二叉树3. 二叉树的迭代遍历4. 二叉树的统一迭代法二叉树 2. 递归遍历二叉树 144. 二叉树的前序遍历 class Solution { public:vector<int> preorderTraversal(TreeNode* root) {vector<int> result;preorder(root, result);return res…...

docker-compose部署kafka服务时如何同时允许内外网访问?

背景 最近在学习kafka相关知识&#xff0c;需要搭建自己的kafka环境。综合考虑后决定使用docker-compose来管理维护这个环境。 docker-compose.yml Bitnami的yml文件就很不错&#xff0c;这里直接拿来用了。 version: "2"services:zookeeper:image: docker.io/bi…...

数据结构刷题(二十):17电话号码的字母组合、39组合总和、40组合总和II

一、电话号码的字母组合题目链接思路&#xff1a;回溯三部曲。确定回溯函数参数&#xff1a;题目中给的 digits&#xff0c;还要有一个参数就是int型的index&#xff08;记录遍历第几个数字&#xff0c;就是用来遍历digits的&#xff0c;同时也代表了递归的深度&#xff09;&am…...

Java面试总结(五)

sleep() 方法和 wait() 方法对比 相同点 两者都可以暂停线程的执行&#xff1b;两者都可以响应中断。 不同点 sleep()方法不会释放锁&#xff0c;wait()方法会释放锁&#xff1b; sleep()方法主要用于暂停线程的执行&#xff0c;wait()方法主要用于线程之间的交互/通信&…...

三维人脸实践:基于Face3D的渲染、生成与重构 <二>

face3d: Python tools for processing 3D face git code: https://github.com/yfeng95/face3d paper list: PaperWithCode 3DMM方法&#xff0c;基于平均人脸模型&#xff0c;可广泛用于基于关键点的人脸生成、位姿检测以及渲染等&#xff0c;能够快速实现人脸建模与渲染。推…...

在linux上部署Java项目

在Linux部署Java环境 要是想要部署java web程序,首先要配置环境 jdk tomcat mysql 安装jdk 推荐的方法是使用yum直接安装openjdk(开源的,与官方的jdk功能差不多),目前使用的最多的就是jdk8系列 yum list | grep jdk 在源上搜索所有关于jdk的文件 devel表示development的意思…...

线性表的接口

线性表的实现方式 顺序表 顺序表是一种线性表的实现方式&#xff0c;它是用一组地址连续的存储单元依次存储线性表中的数据元素&#xff0c;使得逻辑上相邻的元素在物理上也相邻⁴。顺序表可以用数组来实现&#xff0c;它的优点是可以快速定位第几个元素&#xff0c;但是缺点…...

spark三种操作模式的不同点分析

通常情况下,由于mapreduce计算引擎的效率问题,大部分公司使用的基本都是hive数仓spark计算引擎的方式搭建集群,所以对于spark的三种操作方式来进行简单的分析。在日常开发中&#xff0c;使用最多的方式取决于具体的需求和场景。以下是每种方式的一些常见用途&#xff1a;Spark …...

Vue3做出B站【bilibili】 Vue3+TypeScript【快速入门一篇文章精通系列(一)前端项目案例】

本项目分为二部分 1、后台管理系统&#xff08;用户管理&#xff0c;角色管理&#xff0c;视频管理等&#xff09; 2、客户端&#xff08;登录注册、发布视频&#xff09; Vue3做出B站【bilibili】 Vue3TypeScript【快速入门一篇文章精通系列&#xff08;一&#xff09;前端项目…...

猜数游戏--课后程序(Python程序开发案例教程-黑马程序员编著-第3章-课后作业)

实例10&#xff1a;猜数游戏 猜数游戏是一个古老的密码破译类、益智类小游戏&#xff0c;通常由两个人参与&#xff0c;一个人设置一个数字&#xff0c;一个人猜数字&#xff0c;当猜数字的人说出一个数字&#xff0c;由出数字的人告知是否猜中&#xff1a;若猜测的数字大于设…...

Nvidia jetson nano 部署yolov5_技术文档

Nvidia jetson nano 部署yolov5_技术文档 每天一句小姜格言&#xff1a;我行&#xff0c;我不是一般人儿 部署开始&#xff1a; 1、通过FileZilla&#xff0c;将window文件传输至jetson nano 上的nano文件夹下。 2、查看cuda 我买的jetson nano是带有配置好的镜像。系统配置…...

获取当前天数前N天

获取当前天数前N天 先封装到js里面 export const isTime (val) > {// 1.获取当前时间年月日时分秒格式xxxx-xx-xx xx:xx:xxvar myDate new Date() // 当前时间var y myDate.getFullYear() // 当前年份四位数var m myDate.getMonth() 1 < 10? 0 (myDate.getMont…...

Linux---基本指令

专栏&#xff1a;Linux 个人主页&#xff1a;HaiFan. 基本指令ls 指令pwd命令cd 指令touch指令mkdir指令&#xff08;重要&#xff09;rmdir指令 && rm 指令&#xff08;重要&#xff09;man指令&#xff08;重要&#xff09;cp指令&#xff08;重要&#xff09;mv指令…...

ssc377d修改flash分区大小

1、flash的分区默认分配16M、 / # df -h Filesystem Size Used Available Use% Mounted on /dev/root 1.9M 1.9M 0 100% / /dev/mtdblock4 3.0M...

如何在看板中有效管理突发紧急任务

在看板中有效管理突发紧急任务需要&#xff1a;设立专门的紧急任务通道、重新调整任务优先级、保持适度的WIP&#xff08;Work-in-Progress&#xff09;弹性、优化任务处理流程、提高团队应对突发情况的敏捷性。其中&#xff0c;设立专门的紧急任务通道尤为重要&#xff0c;这能…...

在Ubuntu中设置开机自动运行(sudo)指令的指南

在Ubuntu系统中&#xff0c;有时需要在系统启动时自动执行某些命令&#xff0c;特别是需要 sudo权限的指令。为了实现这一功能&#xff0c;可以使用多种方法&#xff0c;包括编写Systemd服务、配置 rc.local文件或使用 cron任务计划。本文将详细介绍这些方法&#xff0c;并提供…...

反射获取方法和属性

Java反射获取方法 在Java中&#xff0c;反射&#xff08;Reflection&#xff09;是一种强大的机制&#xff0c;允许程序在运行时访问和操作类的内部属性和方法。通过反射&#xff0c;可以动态地创建对象、调用方法、改变属性值&#xff0c;这在很多Java框架中如Spring和Hiberna…...

AI编程--插件对比分析:CodeRider、GitHub Copilot及其他

AI编程插件对比分析&#xff1a;CodeRider、GitHub Copilot及其他 随着人工智能技术的快速发展&#xff0c;AI编程插件已成为提升开发者生产力的重要工具。CodeRider和GitHub Copilot作为市场上的领先者&#xff0c;分别以其独特的特性和生态系统吸引了大量开发者。本文将从功…...

AI书签管理工具开发全记录(十九):嵌入资源处理

1.前言 &#x1f4dd; 在上一篇文章中&#xff0c;我们完成了书签的导入导出功能。本篇文章我们研究如何处理嵌入资源&#xff0c;方便后续将资源打包到一个可执行文件中。 2.embed介绍 &#x1f3af; Go 1.16 引入了革命性的 embed 包&#xff0c;彻底改变了静态资源管理的…...

JS手写代码篇----使用Promise封装AJAX请求

15、使用Promise封装AJAX请求 promise就有reject和resolve了&#xff0c;就不必写成功和失败的回调函数了 const BASEURL ./手写ajax/test.jsonfunction promiseAjax() {return new Promise((resolve, reject) > {const xhr new XMLHttpRequest();xhr.open("get&quo…...

数据结构:递归的种类(Types of Recursion)

目录 尾递归&#xff08;Tail Recursion&#xff09; 什么是 Loop&#xff08;循环&#xff09;&#xff1f; 复杂度分析 头递归&#xff08;Head Recursion&#xff09; 树形递归&#xff08;Tree Recursion&#xff09; 线性递归&#xff08;Linear Recursion&#xff09;…...

微服务通信安全:深入解析mTLS的原理与实践

&#x1f525;「炎码工坊」技术弹药已装填&#xff01; 点击关注 → 解锁工业级干货【工具实测|项目避坑|源码燃烧指南】 一、引言&#xff1a;微服务时代的通信安全挑战 随着云原生和微服务架构的普及&#xff0c;服务间的通信安全成为系统设计的核心议题。传统的单体架构中&…...

软件工程 期末复习

瀑布模型&#xff1a;计划 螺旋模型&#xff1a;风险低 原型模型: 用户反馈 喷泉模型:代码复用 高内聚 低耦合&#xff1a;模块内部功能紧密 模块之间依赖程度小 高内聚&#xff1a;指的是一个模块内部的功能应该紧密相关。换句话说&#xff0c;一个模块应当只实现单一的功能…...