在网络安全和性能分析领域,网络流量嗅探是一项至关重要的技术。它允许我们捕获和分析网络数据包,以识别安全威胁、诊断网络问题以及优化网络性能。传统的网络流量嗅探工具通常依赖于内核网络协议栈的镜像或分流,这可能会导致性能下降,并且难以分析高速网络流量。
为了解决这些问题,Oryx 应运而生。它是一款基于 eBPF(Extended Berkeley Packet Filter)的终端用户界面(TUI)网络流量嗅探工具,旨在提供高效、灵活和易于使用的网络监控解决方案。
eBPF:网络监控的革新技术
eBPF 是一种在 Linux 内核中运行用户定义程序的安全高效机制。它允许开发者编写自定义程序,并在网络数据包到达内核之前或之后对其进行操作,而无需修改内核代码或加载内核模块。
与传统的网络流量嗅探方法相比,eBPF 具有以下优势:
高性能: eBPF 程序直接在内核空间运行,避免了数据包在用户空间和内核空间之间复制的开销,从而显著提高了网络流量分析的性能。 灵活性: eBPF 提供了丰富的函数库和工具,允许开发者编写复杂的网络监控逻辑,以满足各种需求。 安全性: eBPF 程序在加载到内核之前会经过验证器检查,以确保其安全性,防止恶意代码损害系统稳定性。
Oryx:eBPF 赋能的 TUI 网络嗅探器
Oryx 利用 eBPF 的强大功能,为用户提供直观、高效和便捷的网络流量嗅探体验。
主要功能
实时流量捕获和可视化: Oryx 能够实时捕获网络数据包,并以用户友好的 TUI 界面展示关键信息,例如源地址、目标地址、协议类型、数据包长度等。 全面的流量统计信息: Oryx 提供了丰富的网络流量统计信息,例如数据包数量、字节数、传输速率、协议分布等,帮助用户全面了解网络流量状况。 灵活的过滤器: Oryx 支持用户自定义过滤器,以捕获特定类型的网络流量,例如 HTTP 请求、DNS 查询、TCP 连接等。 模糊搜索: Oryx 允许用户使用模糊搜索功能快速定位感兴趣的数据包。 导出捕获数据: Oryx 支持将捕获的网络流量数据导出到文件,以便用户进行离线分析。
架构设计
Oryx 采用模块化架构设计,主要由以下三个组件构成:
oryx-ebpf: 该组件负责与 eBPF 交互,加载和管理 eBPF 程序,并将捕获的网络数据包传递给其他组件。 oryx-common: 该组件定义了 Oryx 中使用的通用数据结构、函数和常量。 oryx-tui: 该组件负责构建用户界面,接收来自 oryx-ebpf 的数据,并以直观的方式展示给用户。
安装和使用
安装
安装 Rust nightly 工具链:
rustup toolchain install nightly --component rust-src
安装 bpf-linker:
cargo install bpf-linker
构建 Oryx:
cargo xtask build --release
将构建的可执行文件 oryx
复制到$PATH
中的目录。
使用
使用 root 权限运行以下命令启动 Oryx:
sudo oryx
快捷键
?
:显示帮助信息。Tab
或Shift + Tab
:在不同部分之间切换。j
或Down
:向下滚动。k
或Up
:向上滚动。esc
:关闭弹出窗口和模式。q
或ctrl + c
:退出应用程序。Space
:选择/取消选择接口或过滤器。f
:更新应用的过滤器。ctrl + r
:重置应用程序。ctrl + s
:将捕获的数据导出到~/oryx/capture
文件。/
:开始模糊查找。
总结
Oryx 是一款功能强大、易于使用的网络流量嗅探工具,它利用 eBPF 的优势提供了高效、灵活和安全的网络监控解决方案。无论是网络安全专业人员、系统管理员还是网络开发人员,都可以使用 Oryx 来深入了解网络流量,识别潜在问题并优化网络性能。
点击关注并扫码添加进交流群