当前位置:首页>Linux>oryx:基于 eBPF的 Linux 网络流量分析工具

oryx:基于 eBPF的 Linux 网络流量分析工具

  • 2026-09-10 13:30:01
oryx:基于 eBPF的 Linux 网络流量分析工具

点击蓝字关注我们

一、工具概述

1. 基础信息

Oryx 是一款基于 eBPF 的 Linux 终端交互式(TUI)实时网络流量嗅探分析工具,使用 Rust + Aya eBPF 框架开发,开源协议 GPLv3。

GitHub:https://github.com/pythops/oryx。[1]

2. 核心原理(eBPF 优势)

传统抓包工具 tcpdump/wireshark 基于 libpcap,工作在用户态,全量拷贝数据包,高并发下 CPU 开销巨大; Oryx 依靠内核 eBPF 钩子(tc/tracepoint)在内核态完成流量过滤、元数据提取,仅把连接关键信息上报用户态:

•极低性能损耗,生产服务器长期监控无压力•自动关联连接对应 PID、进程名,无需额外 lsof/ss 排查•原生支持 IPv4/IPv6、TCP/UDP/ICMP•无需加载内核模块,安全无侵入

3. 核心功能特性

1.全终端可视化 TUI,SSH 远程服务器直接使用,无需图形界面2.实时展示五元组、源/目的端口、协议、进出方向、网卡、PID、进程3.多维度过滤器:网卡、传输层协议、入/出流量、IP 版本4.内置模糊搜索快速定位 IP/端口/PID5.流量统计面板:带宽、包量、连接数指标6.简易防火墙规则管理(添加/启用/保存 iptables/nftables 规则)7.捕获数据导出保存,支持事后复盘8.告警面板,识别异常高频连接

4. 适用场景

•运维:线上服务器远程排查网络卡顿、连接泄露•开发:调试应用网络请求、定位端口占用•安全:快速发现外联恶意IP、异常外联进程、扫描行为•学习:低开销 eBPF 网络观测实践

5. 硬性环境要求

•Linux 内核 ≥ 5.8(完整支持 BPF tracepoint/tc)•架构:x86_64 / aarch64(ARM64)•运行必须 root/sudo 权限(加载 eBPF 程序)

二、三种安装部署方案(由简到繁)

方案1:预编译二进制(推荐,最快)

适合 Ubuntu24.04、Debian13、CentOS Stream、Rocky Linux

x86_64

# 下载最新发布包wget https://github.com/pythops/oryx/releases/latest/download/oryx-x86_64-unknown-linux-musl.tar.gz# 解压tar -zxvf oryx-x86_64-unknown-linux-musl.tar.gz# 全局安装到系统PATHsudo install -m755 oryx /usr/local/bin/# 验证oryx --help

ARM64(aarch64)

wget https://github.com/pythops/oryx/releases/latest/download/oryx-aarch64-unknown-linux-musl.tar.gztar -zxvf oryx-aarch64-unknown-linux-musl.tar.gzsudo install -m755 oryx /usr/local/bin/

方案2:Arch Linux AUR 一键安装

# paru/yay 二选一paru -S oryx# 或yay -S oryx

方案3:源码编译安装(全发行版通用)

步骤1:安装系统底层依赖

Debian/Ubuntu

sudo apt update# LLVM19 为编译bpf-linker必需sudo apt install llvm-19 llvm-19-dev libpolly-19-dev git build-essential

RHEL/CentOS Stream

sudo dnf install llvm19 llvm19-devel git gcc

步骤2:安装 Rust Nightly 工具链

# 一键安装rustupcurl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh# 加载环境变量source "$HOME/.cargo/env"# 安装nightly + 源码组件rustup toolchain install nightly --component rust-src# 设置默认nightly(编译必需)rustup default nightly

步骤3:安装 bpf-linker(eBPF 链接器)

# x86_64 直接执行cargo install bpf-linker# ARM64 带参数cargo install bpf-linker --no-default-features

步骤4:拉取源码编译

git clone https://github.com/pythops/oryx.gitcd oryx# 生产模式编译cargo xtask build --release# 二进制输出路径 target/release/oryx# 全局部署sudo cp target/release/oryx /usr/local/bin/# 验证oryx --version

三、基础运行与命令行参数

1. 启动

# 必须sudosudo oryx# 查看帮助参数oryx --help

2. 可选启动参数

# 仅监控指定网卡 eth0sudo oryx --interface eth0# 后台导出抓包文件(不启动TUI)sudo oryx --capture-output /tmp/traffic.log# 自定义日志级别sudo oryx --log-level debug

四、TUI 界面分区与快捷键(核心操作)

界面分为 5 大标签页,Tab / Shift+Tab 切换:

1.Filters:全局过滤(网卡、TCP/UDP/ICMP、入/出、IPv4/6)2.Inspection:核心连接列表(五元组、PID、进程、包数)3.Stats:流量带宽统计面板4.Metrics:连接/协议指标图表5.Alert:异常流量告警6.Firewall:防火墙规则管理

全局快捷键

按键
功能
?
打开完整快捷键帮助
Tab / Shift+Tab
切换顶部标签页
j / ↓
列表向下滚动
k / ↑
列表向上滚动
Esc
关闭弹窗/取消输入
q / Ctrl+C
退出程序
Ctrl+R
重置所有过滤与数据
Space
勾选/取消过滤项、网卡
f
应用当前设置的过滤规则
Ctrl+S
导出捕获流量至 ~/oryx/capture

Inspection(连接列表)专用快捷键

•/:模糊搜索(输入IP/端口/PID快速过滤)•i:查看选中连接完整详情(进程路径、包统计、时间戳)

Firewall 防火墙面板快捷键

•n:新建防火墙规则•e:编辑选中规则•s:保存规则到 ~/oryx/firewall.json•Enter:确认创建/修改规则

五、典型实战操作流程

1.启动监控

sudo oryx

2.过滤仅监控 eth0 网卡

切到 Filters,选中 eth0,按 Space,再按 f 生效过滤

3.只看TCP出站流量

Filters 取消 UDP/ICMP,Direction 只勾选 Egress,f 刷新

4.搜索 PID 1234 进程所有连接

切 Inspection,按 /,输入 1234 回车筛选

5.查看可疑外联进程详情

上下键选中连接,按 i 弹窗展示完整进程信息

6.导出流量日志留存分析

任意界面按 Ctrl+S,文件保存在家目录 oryx 文件夹

六、常见问题与排错

1.报错 eBPF load failed / permission denied

•必须加 sudo 运行,普通用户无加载 eBPF 权限•内核版本低于5.8,升级内核后重试

2.看不到 PID/进程名

内核未开启 BPF tracepoint,更新内核至5.10+最佳

3.编译时报 bpf-linker 缺失、LLVM 版本过低

安装 llvm-19,重新执行 cargo install bpf-linker

4.界面乱码、图标缺失

终端安装 Nerd Fonts 等兼容字体

5.抓不到任何流量

Filters 面板确认至少勾选一张网卡、入/出流量,按 f 应用过滤

七、与同类工具对比

工具
底层技术
界面
进程PID关联
性能开销
Oryx
eBPF
TUI终端
原生自动匹配
极低
tcpdump
libpcap
CLI
需手动 ss/lsof
高(大包场景)
termshark
libpcap
TUI
不支持
高
bpftool
eBPF
纯CLI
无可视化
低,操作繁琐
wireshark
libpcap
GUI
无
极高

References

[1]: https://github.com/pythops/oryx。

END

求点赞

求分享

求喜欢

点击上图跳转小程序,访问历史记录

最新文章

随机文章