这个项目能做什么
RustNet 是一款跨平台终端应用,提供网络连接的实时可见性,具备进程级归因和深度包检测(DPI)功能。与传统工具(如 netstat、ss 或 tcpdump)不同,RustNet 将每个连接关联到其所属进程和可执行文件,从而更容易识别特定应用生成的流量。
该工具支持 TCP、UDP 和 QUIC 协议,覆盖 Linux、macOS、Windows 和 FreeBSD 平台。它使用平台特定的捕获后端:Linux 上使用带 libbpf-rs 的 eBPF,macOS 上使用 PKTAP,Windows 上使用带 IP Helper 回退的 ETW,FreeBSD 上使用原生 API。进程归因包括 PID、可执行文件名、用户和组名、匹配置信度以及受限的父进程链。
深度包检测无需外部解析器即可识别常见协议,如 HTTP、带 SNI 的 HTTPS/TLS、DNS、SSH、FTP、QUIC、MQTT、BitTorrent、WireGuard、OpenVPN、STUN、NTP、mDNS、LLMNR、DHCP、SNMP、SSDP 和 NetBIOS。该工具还执行被动 DNS 分析,提供响应码、超时、延迟百分位数和健康状态标记。
安全性通过沙箱机制解决。在 Linux 上,RustNet 可使用 Landlock(内核 5.13+);在 macOS 上使用 Seatbelt;在 Windows 上使用令牌权限降级和作业对象子进程阻止。应用在初始化后降级权限,失败的 UID/GID 降级会在数据包处理工作线程运行前停止启动。
为便于与其他工具集成,RustNet 可导出带注释的 PCAPNG 文件,其中包含每个数据包的注释,涵盖进程、PID、方向、DPI/SNI 和 GeoIP 数据,可直接在 Wireshark 中使用。还提供经典 PCAP 导出及 JSONL 侧车文件,用于离线关联。此外,启用 kubernetes 功能时,可选的 Kubernetes 归因可将连接映射到 Pod、命名空间和容器。
终端 UI 基于 ratatui 构建,提供连接、流量速率和协议分解的实时视图。用户可按端口、源/目标地址、进程名、状态、SNI 和协议进行过滤,并支持正则表达式模式。排序和分组选项允许用户聚焦带宽占用大户或特定进程。视觉指示器显示连接生命周期状态,空闲连接会淡出并显示归档前的倒计时。
安装可通过 Homebrew、APT、DNF、Zypper、pacman、Nix、Chocolatey、Scoop 及源码构建进行。该工具需要提升权限进行数据包捕获,但可设置 Linux capabilities 以无需 sudo 运行。文档涵盖详细设置、使用、架构、安全和贡献指南。
评论
0 人表达喜爱 · 满10人后显示 Deer Point
登录后参与讨论。