RustNet:终端上的进程级网络监控与深度包检测利器

RustNet:终端上的进程级网络监控与深度包检测利器
kikock日常开发和运维中,我们经常需要查看系统当前的网络连接情况。虽然 netstat 和 ss 是常用的老牌工具,但它们无法提供实时的连接状态;而 tcpdump 和 Wireshark 虽然强大,但缺乏直接的进程归属(Process Attribution)信息。
今天给大家介绍一款由 Rust 编写的现代终端网络监控工具:**RustNet**。
什么是 RustNet?
RustNet 是一款专为终端设计的进程级网络监控工具。它能够实时监控 TCP、UDP 和 QUIC 连接,并内置了深度包检测(Deep Packet Inspection, DPI)功能,默认开启安全沙箱模式。
它完美填补了简单连接查看工具(如 netstat、ss)和专业抓包分析工具(如 Wireshark、tcpdump)之间的空白。
核心特性
精确的进程归属(Per-process attribution)
RustNet 能够将每一个 TCP、UDP 和 QUIC 连接精确映射到所属的进程。在 Linux 上它利用 eBPF 技术,在 macOS 上利用 PKTAP,在 Windows 和 FreeBSD 上利用原生 API 来实现。这是 Wireshark 等纯粹看包的工具无法做到的。内置深度包检测(DPI)
不需要外部插件,RustNet 可以直接识别 HTTP、带有 SNI 的 HTTPS/TLS、DNS、SSH、QUIC、NTP、mDNS、DHCP 等众多网络协议。极致的安全沙箱
网络监控工具通常需要高权限,RustNet 将安全性放在首位。它使用了 Landlock (Linux 5.13+)、Seatbelt (macOS) 和令牌权限下降等机制,在libpcap初始化后立即降权,最大限度保证系统安全。实时 TCP 分析
支持在终端实时展示 TCP 的重传、乱序包以及快速重传检测,支持按单一连接或聚合数据进行分析。智能的连接生命周期管理
连接会根据协议自动适配超时时间,并通过白、黄、红三种颜色的视觉指示器来展现连接的“陈旧”程度。你可以一键保留历史(已关闭)的连接,方便后续进行取证和排查。GeoIP IP 地理位置富化
内置国家/地区级别的查询,使用本地的 MaxMind GeoLite2 数据库,零外部网络请求,安全保护隐私。Vim/fzf 风格的强大过滤系统
你可以通过port:,src:,dst:,sni:,process:,proto:等关键字快速过滤连接,甚至支持正则匹配/(?i)pattern/。
与传统工具的对比
- 与
netstat/ss相比:RustNet 提供实时的、以连接为中心的视图,追踪状态、带宽和协议,而不仅仅是输出静态的连接列表。 - 与
Wireshark/tcpdump相比:RustNet 能明确告诉你“是哪个应用程序(进程)发起了这个连接”。你可以用 RustNet 找出可疑进程,然后再通过它提供的--pcap-export导出流量交由 Wireshark 深度分析。
此外,由于它是基于终端的(TUI),非常适合通过 SSH 在远程服务器上使用,无需 X11 转发即可清晰掌握服务器的网络状况。
安装指南
RustNet 支持跨平台,以下是常见操作系统的安装方式:
macOS / Linux (通过 Homebrew):
1 | brew tap domcyrus/rustnet |
Ubuntu (25.10+):
1 | sudo add-apt-repository ppa:domcyrus/rustnet |
Fedora (42+):
1 | sudo dnf copr enable domcyrus/rustnet |
Arch Linux:
1 | sudo pacman -S rustnet |
Windows (通过 Chocolatey):
(需要在管理员 PowerShell 中运行,且需预先安装勾选了 “WinPcap API-compatible Mode” 的 Npcap)
1 | choco install rustnet |
通过 Cargo 安装:
1 | cargo install rustnet-monitor |
运行权限说明
由于需要抓取网卡数据包,RustNet 运行时需要提升权限。
对于 Linux 用户,推荐赋予二进制文件相关的 capabilities(能力),这样就不需要每次都带 sudo 运行:
1 | sudo setcap 'cap_net_raw,cap_bpf,cap_perfmon+eip' $(which rustnet) |
对于其他平台或想快速尝试,可以直接使用:
1 | sudo rustnet |
如果你经常需要排查“服务器上到底哪个进程在疯狂发包”或者“这个未知的外部连接是谁发起的”,RustNet 绝对是你工具箱中不可或缺的利器。下一篇文章中,我们将详细介绍 RustNet 的 TUI 操作和高级过滤语法,敬请期待!
