
Мониторинг сети по каждому процессу для вашего терминала с глубоким анализом пакетов. Кроссплатформенный, изолированный.
Просмотр в реальном времени каждого соединения вашей машины: кому оно принадлежит и какой протокол используется. Без tcpdump, проброса X11 и root-каналов.
netstat / ss не показывают состояние в реальном времени.--pcapng-export записывает захват, готовый к открытию в Wireshark: процесс, PID, направление, DPI/SNI и GeoIP встраиваются в виде комментариев к каждому пакету. Откройте его в Wireshark — каждый пакет уже будет содержать имя своего процесса, без постобработки. Также доступен классический --pcap-export с боковым JSONL-файлом для офлайн-корреляции.t оставляет исторические (закрытые) соединения видимыми для анализа инцидентов.port:, src:, dst:, sni:, process:, state:, proto:, а также регулярные выражения через /(?i)pattern/.kubernetes): соединения сопоставляются с их подом, пространством имён и контейнером и отображаются на панели сведений, в экспорте JSON/PCAPNG и в фильтрах pod:, ns:, container:. Возможность включена в официальном Docker-образе; в кластере используйте плагин kubectl-rustnet, чтобы запустить инструмент как эфемерный отладочный под. См. USAGE.md.RustNet закрывает разрыв между простыми инструментами просмотра соединений (netstat, ss) и анализаторами пакетов (Wireshark, tcpdump):
RustNet дополняет инструменты захвата пакетов. Используйте RustNet, чтобы видеть, что устанавливает соединения. Для прямой проверки в Wireshark --pcapng-export записывает живые комментарии к пакетам (best-effort) с контекстом PID/процесса. Для корреляции после завершения используйте --pcap-export вместе с боковым JSONL-файлом и опциональным скриптом scripts/pcap_enrich.py. Подробнее см. Экспорт PCAP и Сравнение с похожими инструментами.
Создан на основе ratatui, libpcap, eBPF (libbpf-rs), DashMap, crossbeam, ring, MaxMind GeoLite2 и Landlock. Полный разбор зависимостей см. в ARCHITECTURE.md.
По умолчанию в Linux RustNet использует программы eBPF в ядре для более производительной идентификации процессов с меньшими накладными расходами.
Имена процессов:
comm (поле ядра ограничено 16 символами), а не имя действующего потока, поэтому многопоточные приложения показывают имя основного процесса вместо имён потоков вроде «Socket Thread»/proc/<tgid>/comm, восстанавливает усечённые в comm имена по имени исполняемого файла (например, «chromium-browse» становится «chromium-browser») и определяет полный путь к исполняемому файлу, отображаемый в представлении DetailsРезервное поведение:
Чтобы отключить eBPF и использовать режим только с procfs, соберите с:
cargo build --release --no-default-features
Техническую информацию см. в ARCHITECTURE.md.
RustNet сочетает учёт трафика на уровне процессов со статистикой сетевых интерфейсов в реальном времени:
3): ранжирует процессы по исходящему (TX) или входящему (RX) трафику, включая накопленный и скользящий трафик, скорости, доли, соединения и адреса назначенияi на вкладке Activity): показывает исходные подробные метрики для каждого интерфейсаДокументацию по интерпретации статистики интерфейсов и поведению на конкретных платформах см. в USAGE.md.
Доступные метрики:
Статистика собирается каждые 2 секунды в фоновом потоке с минимальным влиянием на производительность.
| Обзор Таблица соединений с данными в реальном времени и спарклайнами ![]() | Сведения SNI, шифр, GeoIP, DPI по каждому соединению ![]() |
| График Диаграмма трафика, распределение приложений, топ процессов ![]() | Активность Исходящий/входящий трафик процессов, охват за 60 секунд, привязка и удалённые узлы ![]() |
Homebrew (macOS / Linux):
brew install rustnet
Ubuntu (22.04 LTS+) / Linux Mint 21+ / Pop!_OS 22.04+:
sudo add-apt-repository ppa:domcyrus/rustnet
# on Pop!_OS: sudo apt-manage add ppa:domcyrus/rustnet
sudo apt update && sudo apt install rustnet
Fedora (42+):
sudo dnf copr enable domcyrus/rustnet
sudo dnf install rustnet
openSUSE Tumbleweed:
sudo zypper addrepo https://download.opensuse.org/repositories/home:/domcyrus:/rustnet/openSUSE_Tumbleweed/home:domcyrus:rustnet.repo
sudo zypper refresh
sudo zypper install rustnet
Arch Linux:
sudo pacman -S rustnet
Nix / NixOS:
nix-shell -p rustnet
# Then inside the shell: sudo rustnet
From crates.io:
cargo install rustnet-monitor
Windows (Chocolatey):
# Run in Administrator PowerShell
# Requires Npcap (https://npcap.com) installed with "WinPcap API-compatible Mode" enabled
choco install rustnet
Другие платформы:
Захват пакетов требует повышенных привилегий:
# Quick start (all platforms)
sudo rustnet
# Linux: Grant capabilities to run without sudo (recommended)
sudo setcap 'cap_net_raw,cap_bpf,cap_perfmon+eip' $(which rustnet)
rustnet
Часто используемые параметры:
rustnet -i eth0 # Specify network interface
rustnet --show-localhost # Show localhost connections
rustnet --no-resolve-dns # Disable reverse DNS lookups (enabled by default)
rustnet -r 500 # Set refresh interval (ms)
rustnet --theme tokyo-night # Theme: muted (default), vivid, catppuccin-mocha, tokyo-night, gruvbox, nord
rustnet --pcapng-export capture.pcapng # Annotated PCAPNG for Wireshark
Тему и переопределения отдельных цветов также можно задать в ~/.config/rustnet/config.toml; приоритет имеет --theme. Схему см. в USAGE.md.
Подробную настройку прав см. в INSTALL.md, полный список параметров — в USAGE.md.
Если вы задали capabilities, но TUI по-прежнему показывает
eBPF unavailable, см. eBPF недоступен, несмотря на заданные capabilities в разделе устранения неполадок.
| Клавиша | Действие |
|---|---|
q | Выход (нажмите дважды для подтверждения) |
Ctrl+C | Немедленный выход |
x | Очистить все соединения (нажмите дважды для подтверждения) |
Tab или ] | Следующая вкладка |
Shift+Tab или [ | Предыдущая вкладка |
1–5 | Переход к Overview / Details / Activity / Graph / Help |
↑/k ↓/j | Навигация вверх/вниз |
g G | Перейти к первому/последнему соединению |
Enter | Просмотр сведений о соединении |
Esc | Назад или сброс фильтра |
c | Копировать удалённый адрес |
p | Переключить имена служб/порты |
d | Переключить hostnames/IP в Overview или Egress/Ingress в Activity |
s S | Перебор столбцов сортировки / переключение направления |
a | Переключить группировку процессов |
Space | Развернуть/свернуть группу процессов |
←/→ или h/l | Свернуть/развернуть группу |
PageUp/PageDown или Ctrl+B/F | Навигация по страницам |
t | Переключить исторические (закрытые) соединения |
i | Переключить сведения о системе в Overview или сведения об интерфейсе в Activity |
r | Сбросить представление (группировку, сортировку, фильтр) |
Подробное описание клавиш и советы по навигации см. в USAGE.md.
Быстрые примеры фильтрации:
/google # Search for "google" anywhere
/port:443 # Filter by port
/process:firefox # Filter by process
/state:established # Filter by connection state
/dport:443 sni:github.com # Combine filters
Сортировка:
s, чтобы перебирать сортируемые столбцы (Process, Addresses, Service, Application, State, Bandwidth)S (Shift+s), чтобы изменить направление сортировкиs, пока не появится «Bandwidth Total ↓» (сортировка по суммарной скорости приёма и передачи)Полный синтаксис фильтрации и руководство по сортировке см. в USAGE.md.
Фильтры по ключевым словам:
port:44 - порты, содержащие «44» (443, 8080, 4433)sport:80 - исходные порты, содержащие «80»dport:443 - порты назначения, содержащие «443»src:192.168 - исходные IP, содержащие «192.168»dst:github.com - адреса назначения, содержащие «github.com»process:ssh - имена процессов, содержащие «ssh»sni:api - SNI-имена хостов, содержащие «api»app:openssh - SSH-соединения, использующие OpenSSHstate:established - фильтр по состоянию протоколаproto:tcp - фильтр по типу протоколаФильтрация по состоянию:
state:syn_recv - полуоткрытые соединения (обнаружение SYN-флуда)state:established - только установленные соединенияstate:quic_connected - активные QUIC-соединенияstate:dns_query - соединения DNS-запросовКомбинированные примеры:
sport:80 process:nginx - соединения Nginx с порта 80dport:443 sni:google.com - HTTPS к Googleprocess:firefox state:quic_connected - QUIC-соединения Firefoxdport:22 app:openssh state:established - установленные соединения OpenSSHRustNet использует «умные» тайм-ауты и визуальные предупреждения перед удалением соединений:
Визуальные индикаторы устаревания:
Тайм-ауты с учётом протокола:
Initial/Handshaking: 60 секундПример: HTTP-соединение становится жёлтым через 7.5 мин, красным через 9 мин и удаляется через 10 мин.
Полные сведения о тайм-аутах см. в USAGE.md.
Вклад приветствуется! Пожалуйста, ознакомьтесь с CONTRIBUTING.md — там описано, как внести свой вклад.
Список людей, внёсших вклад в проект, см. в CONTRIBUTORS.md.
Проект распространяется по лицензии Apache License, Version 2.0 — подробности см. в файле LICENSE.
Некоторые разделы перенесены в отдельные файлы для лучшей организации:
/| Войти в режим фильтра |
h | Переключить справку |