Монитор сети в терминале - RustNet для тех, кто хочет видеть все соединения
Когда в последний раз вам приходилось разбираться с подозрительным сетевым трафиком или искать утечку соединений? Современные системы генерируют десятки соединений ежесекундно, и стандартные инструменты вроде netstat часто не справляются. В этом обзоре я расскажу о RustNet — терминальном мониторе сети на Rust, который дает полный контроль над вашими соединениями.

Кому это нужно
RustNet пригодится:
- Системным администраторам для мониторинга серверов
- Разработчикам сетевых приложений для отладки
- DevOps инженерам для анализа трафика в контейнерах
- Всем, кто хочет понять, куда и зачем соединяется их компьютер
Главные возможности
1. Мониторинг в реальном времени
RustNet показывает не просто список соединений, а их динамику:
- Все состояния TCP (ESTABLISHED, SYN_SENT, TIME_WAIT)
- Особые состояния для QUIC, DNS, SSH
- Активность UDP (стало ли соединение «простаивающим»)
Пример фильтрации установленных соединений:
rustnet --no-localhost state:established
2. Глубокая инспекция пакетов (DPI)
RustNet различает:
- HTTP/HTTPS (с извлечением SNI)
- DNS запросы и ответы
- SSH (версии клиентов и серверов)
- QUIC соединения
3. Привязка к процессам
Хотите узнать, какой процесс открыл соединение? RustNet умеет:
- Показывать имя процесса (на Linux через /proc или eBPF)
- Фильтровать по процессу:
rustnet process:firefox
Технические детали
Проект написан на Rust и использует:
- ratatui для терминального интерфейса
- libpcap для захвата пакетов
- Многопоточную архитектуру для обработки
Интересная особенность: при сборке с флагом ebpf на Linux RustNet использует eBPF для более эффективного мониторинга, хотя и с некоторыми ограничениями (имена процессов обрезаются до 16 символов).
Как установить
Самый простой способ через Cargo:
cargo install rustnet-monitor
Для Linux с eBPF поддержкой:
cargo install rustnet-monitor --features ebpf
Или через Docker:
docker run --rm -it --cap-add=NET_RAW --cap-add=NET_ADMIN --net=host \
ghcr.io/domcyrus/rustnet:latest
Когда RustNet особенно полезен
- Отладка сетевых приложений — видите все соединения вашего сервиса
- Поиск утечек — какие сервисы куда соединяются без вашего ведома
- Анализ безопасности — кто пытается подключиться к вашему серверу
- Оптимизация — какие соединения «висят» слишком долго
RustNet — это тот инструмент, который стоит добавить в арсенал каждому, кто работает с сетями. Он сочетает:
- Мощность низкоуровневых инструментов
- Удобство терминального интерфейса
- Гибкость фильтрации
Особенно рекомендую разработчикам на Rust — проект отлично демонстрирует возможности языка для системного программирования. А если вы работаете с QUIC или современными протоколами, DPI функции RustNet будут просто незаменимы.
Попробуйте и напишите в комментариях, как вы используете RustNet в своей работе!
