Show HN: Network Monitor – a GUI to spot anomalous connections on your Linux
A real-time network connection monitoring tool built with Rust and GTK4, displaying active connections with live I/O statistics in a modern graphical interface.
https://github.com/grigio/network-monitor
23 comments
[ 3.1 ms ] story [ 44.2 ms ] threadI do want to say, I don't like having to rely on scraping ss output. But that's not a comment on this project - I have done the exact same thing. It just proved to be the most expedient way given the constraints I was under. I suspect there is a lot of devops and CI/CD code out there that relies on the output format of ss. My concern is that parsing text intended for human readability and not machine processing is brittle and prone to failure due to unforeseen circumstances, or a package upgrade that changes the behavior.
I really like the eBPF approach as pointed out to by the other comments. I feel like this is the ideal approach, please correct me if I'm wrong.
A callback based approach as opposed to (constantly) polling the output of some command is ideal.
Food for thought!
I'm using an Eero router out of laziness and even it has some features here that I'd like to see more of in polished "home-user" style network tools; especially since it seems as if more are getting into the "homelab"/"selfhosted" thing.
Just for visualizing network topology on Linux, there's a lot of tools.
And it's a bit sad that in the year of our lord 2025, the best way to get such fundamental information is by using regexes to parse a table[1], generated by a 6000-line C program[2], which is verified by (I hope I'm wrong!) a tiny test suite[3]. OSQuery[4] is also pretty cool, but it builds upon this fragile stack.
That's something I miss from Windows, at least PowerShell has built-in commands that give you structured output.
[1] https://github.com/grigio/network-monitor/blob/9dc470553bfdd...
[2] https://github.com/iproute2/iproute2/blob/main/misc/ss.c
[3] https://github.com/iproute2/iproute2/blob/main/testsuite/tes...
[4] https://osquery.io/
I'm vaguely aware that there are crates available in the Rust ecosystem for interrogating and manipulating sockets much more directly as well as high level abstractions for all things netlink (read: AF_NETLINK). Is wielding Rust's socket/netlink libraries unsuitable in some way, or was it merely deemed out of the design scope?
Very cool project, please keep going!
[1] https://github.com/grigio/network-monitor/blob/master/src/se...
If you want realtime connection details, eBPF and XDP allow much more insights for that, as you can also parse network protocol payloads and implement adapters for each network protocol.
- https://github.com/winsiderss/systeminformer power-user process explorer
- something akin windows system monitor, gnome's needs an upgrade