Oryx 是一款基于 eBPF 的 Linux 终端交互式(TUI)实时网络流量嗅探分析工具,使用 Rust + Aya eBPF 框架开发,开源协议 GPLv3。
GitHub:https://github.com/pythops/oryx。
一、工具概述
1. 核心原理(eBPF 优势)
传统抓包工具 tcpdump/wireshark 基于 libpcap,工作在用户态,全量拷贝数据包,高并发下 CPU 开销巨大;Oryx 依靠内核 eBPF 钩子(tc/tracepoint)在内核态完成流量过滤、元数据提取,仅把连接关键信息上报用户态:
- 极低性能损耗,生产服务器长期监控无压力
- 自动关联连接对应 PID、进程名,无需额外 lsof/ss 排查
- 原生支持 IPv4/IPv6、TCP/UDP/ICMP
- 无需加载内核模块,安全无侵入
2. 核心功能特性
- 全终端可视化 TUI,SSH 远程服务器直接使用,无需图形界面
- 实时展示五元组、源/目的端口、协议、进出方向、网卡、PID、进程
- 多维度过滤器:网卡、传输层协议、入/出流量、IP 版本
- 内置模糊搜索快速定位 IP/端口/PID
- 流量统计面板:带宽、包量、连接数指标
- 简易防火墙规则管理(添加/启用/保存 iptables/nftables 规则)
- 捕获数据导出保存,支持事后复盘
- 告警面板,识别异常高频连接
3. 适用场景
- 运维:线上服务器远程排查 网络卡顿、连接泄露
- 开发:调试应用网络请求、定位端口占用
- 安全:快速发现外联恶意IP、异常外联进程、扫描行为
- 学习:低开销 eBPF 网络观测实践
4. 硬性环境要求
- 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
# 全局安装到系统PATH
sudo 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.gz
tar -zxvf oryx-aarch64-unknown-linux-musl.tar.gz
sudo 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 工具链
# 一键安装rustup
curl --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.git
cd oryx
# 生产模式编译
cargo xtask build --release
# 二进制输出路径 target/release/oryx
# 全局部署
sudo cp target/release/oryx /usr/local/bin/
# 验证
oryx --version
三、基础运行与命令行参数
1. 启动
# 必须sudo
sudo oryx
# 查看帮助参数
oryx --help
2. 可选启动参数
# 仅监控指定网卡 eth0
sudo oryx --interface eth0
# 后台导出抓包文件(不启动TUI)
sudo oryx --capture-output /tmp/traffic.log
# 自定义日志级别
sudo oryx --log-level debug
四、TUI 界面分区与快捷键(核心操作)
界面分为 6 大标签页,Tab / Shift+Tab 切换:
- Filters:全局过滤(网卡、TCP/UDP/ICMP、入/出、IPv4/6)
- Inspection:核心连接列表(五元组、PID、进程、包数)
- Stats:流量带宽统计面板
- Metrics:连接/协议指标图表
- Alert:异常流量告警
- 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:确认创建/修改规则
五、典型实战操作流程
- 启动监控
sudo oryx
-
过滤仅监控 eth0 网卡
切到 Filters,选中 eth0,按 Space,再按 f 生效过滤。
-
只看TCP出站流量
Filters 取消 UDP/ICMP,Direction 只勾选 Egress,f 刷新。
-
搜索 PID 1234 进程所有连接
切 Inspection,按 /,输入 1234 回车筛选。
-
查看可疑外联进程详情
上下键选中连接,按 i 弹窗展示完整进程信息。
-
导出流量日志留存分析
任意界面按 Ctrl+S,文件保存在家目录 oryx 文件夹。
六、常见问题与排错
-
报错 eBPF load failed / permission denied
- 必须加
sudo 运行,普通用户无加载 eBPF 权限
- 内核版本低于5.8,升级内核后重试
-
看不到 PID/进程名
内核未开启 BPF tracepoint,更新内核至5.10+最佳。
-
编译时报 bpf-linker 缺失、LLVM 版本过低
安装 llvm-19,重新执行 cargo install bpf-linker。
-
界面乱码、图标缺失
终端安装 Nerd Fonts 等兼容字体。
-
抓不到任何流量
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