首页| 论坛| 搜索| 消息
主题:一个终端里的网络监控神器,每个连接都逃不过你的眼睛
爱我中华发表于 2026-05-12 14:08
你有没有遇到过这种情况:服务器突然疯狂上传下载,但你连是哪个进程干的都查不出来?netstat 只能告诉你端口和状态,ss 稍微好点但还是半斤八两。想上 Wireshark?远程服务器没 X11,tcpdump 抓一堆包还得拷回来慢慢看,黄花菜都凉了。
今天给大家安利一个刚发现的好东西——RustNet。一句话总结:按进程显示网络连接,带深度包检测,自带沙箱,终端里跑的。
它到底能干啥?

先放一张 demo 图感受一下 。打开 RustNet,你会看到一个实时刷新的表格,每一行是一条网络连接,包括:

哪个进程(PID + 名字)本地地址 + 端口远端地址 + 端口协议(TCP/UDP/QUIC)状态(ESTABLISHED、CLOSE_WAIT 等)上下行带宽(实时 sparkline 小图)检测到的应用层协议(HTTP、DNS、TLS SNI、SSH……)国家(根据 IP 查 GeoIP)
并且这一切都是实时的,不用按 F5 刷新。
现有工具做不到的事

你可能会说:“我用 netstat -p 也能看进程啊?”没错,但它只给你一个快照,不会动。带宽多少?连接什么时候关的?协议细节?通通没有。
Wireshark 能看包,但不知道是谁发的包——因为它工作在网卡层面,跟进程是隔离的。tcpdump 同理,你抓到一堆流量,还得靠端口猜哪个进程。
RustNet 把两边的信息拼起来了:通过 eBPF(Linux)、PKTAP(macOS)、原生 API(Windows/FreeBSD)把每个包和进程关联起来再对包做浅层解析,识别出协议和关键字段(比如 HTTPS 的 SNI 域名)
所以你看到的不再是一串 IP:端口,而是:Firefox (PID 1234) → 140.82.112.3:443 (github.com) TLS 1.3
这才是人话。

为什么说它比 tcpdump 更“懒人友好”

RustNet 的设计目标很明确:SSH 进去就能用,不需要搬流量,不需要 root 一直挂着。
很多运维老哥的习惯是:tcpdump -i eth0 -s 0 -w /tmp/cap.pcap# 等一会儿scp /tmp/cap.pcap 本地wireshark /tmp/cap.pcap
这样没问题,但太慢了。尤其在排查突发故障时,等你把包拷下来,故障可能已经消失了。
RustNet 在你 SSH 进去之后直接跑,实时看到每个连接的带宽和重传情况。哪个进程突然把出口带宽占满,排序一列立刻现形。
而且它还支持 toggle 历史连接(按 t 键)。关闭的连接不会立刻消失,而是变为灰色,方便你回溯刚才发生了啥。
过滤系统很顺手

RustNet 的过滤器是类 vim/fzf 风格的。按 / 进入过滤模式,直接输入就搜。
常用例子:/google# 任何字段包含 "google"/port:443# 只显示目标或源端口 443/process:firefox # 只看火狐的/state:established # 只看已建立的/dport:443 sni:github.com # 组合条件
支持正则,比如 /(?i)chrome 大小写不敏感。
排序按 s 键循环切换列,Shift+S 切换升序降序。找带宽大户最快的方法:按 s 直到排序列变成 “Down/Up ↓”,这时候带宽最高的就在第一行。
安全方面它很较真

抓包通常需要 root 权限,但 RustNet 只在初始化 pcap 时提权,之后立刻把权限丢掉。不同平台用了各自的沙箱机制:Linux(5.13+):Landlock,限制文件系统访问macOS:Seatbelt 沙箱配置Windows:token 降权 + job object 禁止创建子进程
说白了,即使 RustNet 本身出了漏洞,攻击者也干不了啥大事——它已经把自己关进笼子里了。
官方还提供了 setcap 方式(Linux),让你不用 sudo 也能跑:sudo setcap 'cap_net_raw,cap_bpf,cap_perfmon+eip' $(which rustnet)rustnet # 之后直接运行
安装就一句话

各主流包管理器都收录了:
macOS / Linux (Homebrew)brew tap domcyrus/rustnetbrew install rustnet
Ubuntu 25.10+sudo add-apt-repository ppa:domcyrus/rustnetsudo apt update && sudo apt install rustnet
Fedora 42+sudo dnf copr enable domcyrus/rustnetsudo dnf install rustnet
Arch Linuxsudo pacman -S rustnet
Windows (Chocolatey,需要先装 Npcap)choco install rustnet
或者用 cargo 编译cargo install rustnet-monitor
运行直接 sudo rustnet 即可。如果要指定网卡:rustnet -i wlan0。
界面长啥样

RustNet 有四个主要标签页(按 Tab 切换):

Connections – 主表格,所有连接列表Details – 选中某一连接后按回车进入,显示 SNI、加密套件、GeoIP、DPI 结果等Graph – 流量折线图、应用分布占比、top 进程Interfaces – 每个网卡的 RX/TX 历史、丢包数和错误数
每个页面都有实时更新的 sparkline(小 sparklines 图),一眼看出流量趋势。
什么场景最合适?
半夜被叫起来排查“服务器流量异常”:连上去看一眼哪个进程在跑,比 tcpdump 抓完再分析快 10 倍。开发调试本地应用:看自己写的程序到底连了哪些 IP,有没有泄漏连接。安全自查:发现可疑外联,立刻看到是哪个可执行文件在搞鬼。学习网络协议:看真实流量里 TLS SNI、QUIC 长连接是什么样子的。
它可以和 Wireshark 打配合:RustNet 支持 --pcap-export 导出带进程标注的 pcap,然后用项目提供的 pcap_enrich.py 脚本把 PID 和进程名加进去,拉到 Wireshark 里就能同时看包和进程上下文。
键盘快捷键(常用的)

键 作用 q 退出(按两次确认) / 进入过滤模式 s / S 切换排序列 / 切换方向 t 显示/隐藏已关闭的历史连接 Enter 查看连接详情 Space 展开/折叠进程分组(按 a 切换分组模式) i 切换到接口统计视图 c 复制远端地址 r 重置所有过滤、排序和分组
完整的按键指南在项目 USAGE.md 里,不过上手其实不用记太多,界面底下一直有提示栏。
写在最后

RustNet 填补了一个很实在的空缺:既有 ss 的轻量和进程关联,又有 Wireshark 的协议识别能力,还比 tcpdump 更适合实时排查。
项目在 GitHub 上已经开源,采用 Apache 2.0 协议,目前有 1.7k+ stars(还在涨)。代码里作者自己也调侃了一句:“Some code is vibe coded (OMG) / may the LLM gods be with you”——这很真实。
如果你是开发、运维、SRE,或者单纯对自己的电脑联网情况好奇,不妨装一个试试。就算平时不用,备着关键时刻能救命。
项目地址: github.com搜索rustnet
下一页 (1/2)
回帖(0):

全部回帖(0)»
最新回帖
收藏本帖
发新帖