
Monitoraggio di rete per processo per il tuo terminale con ispezione profonda dei pacchetti. Multipiattaforma, in sandbox.
Monitoraggio di rete per processo per il tuo terminale: connessioni TCP, UDP e QUIC in tempo reale con ispezione approfondita dei pacchetti, in sandbox per impostazione predefinita.
Visibilità in tempo reale su ogni connessione creata dalla tua macchina, su chi la possiede e su quale protocollo sta parlando. Niente tcpdump, forwarding X11 o pipe da root.
netstat / ss non mostrano lo stato in tempo reale.--pcapng-export scrive una cattura pronta per Wireshark con processo, PID, direzione, DPI/SNI e GeoIP incorporati come commenti per ogni pacchetto. Aprila in Wireshark e ogni pacchetto indicherà già il processo proprietario, senza post-elaborazione. È disponibile anche la classica --pcap-export con un sidecar JSONL per la correlazione offline.t per mantenere visibili le connessioni storiche (chiuse) per analisi forensi.port:, , , , , , , più regex tramite .RustNet colma il divario tra i semplici strumenti di connessione (netstat, ss) e gli analizzatori di pacchetti (Wireshark, tcpdump):
RustNet integra gli strumenti di cattura dei pacchetti. Usa RustNet per vedere cosa sta creando le connessioni. Per un'ispezione diretta con Wireshark, --pcapng-export scrive commenti live sui pacchetti con contesto PID/processo, in modalità best-effort. Per la correlazione a posteriori, usa --pcap-export insieme al sidecar JSONL e all'opzionale scripts/pcap_enrich.py. Vedi Esportazione PCAP e Confronto con strumenti simili per i dettagli.
Basato su ratatui, libpcap, eBPF (libbpf-rs), DashMap, crossbeam, ring, MaxMind GeoLite2 e Landlock. Vedi ARCHITECTURE.md per la ripartizione completa delle dipendenze.
RustNet usa programmi eBPF del kernel per impostazione predefinita su Linux, per una maggiore performance e un'identificazione dei processi con overhead ridotto.
Nomi dei processi:
comm (un campo del kernel limitato a 16 caratteri) anziché il nome del thread attivo, quindi le applicazioni multi-thread mostrano il nome del processo principale invece di nomi di thread come "Socket Thread"/proc/<tgid>/comm, recupera i nomi troncati da comm dal nome del file eseguibile (es. "chromium-browse" diventa "chromium-browser") e risolve il percorso completo dell'eseguibile mostrato nella vista DettagliComportamento di fallback:
Per disabilitare eBPF e usare la sola modalità procfs, compila con:
cargo build --release --no-default-features
Vedi ARCHITECTURE.md per informazioni tecniche.
RustNet combina la contabilizzazione del traffico a livello di processo con le statistiche delle interfacce di rete in tempo reale:
3): Classifica i processi per Egress (TX) o Ingress (RX), includendo traffico trattenuto e a rotazione, velocità, quote, connessioni e destinazionii in Attività): Mostra le metriche complete originali per ogni interfacciaVedi USAGE.md per la documentazione dettagliata su come interpretare le statistiche delle interfacce e il comportamento specifico delle piattaforme.
Metriche disponibili:
Le statistiche vengono raccolte ogni 2 secondi in un thread in background con un impatto minimo sulle prestazioni.
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
Da 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
Altre piattaforme:
La cattura dei pacchetti richiede privilegi elevati:
# 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
Opzioni comuni:
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
Il tema e le personalizzazioni per singolo colore possono essere impostati anche in ~/.config/rustnet/config.toml; --theme ha la precedenza. Vedi USAGE.md per lo schema.
Vedi INSTALL.md per la configurazione dettagliata dei permessi e USAGE.md per le opzioni complete.
Se imposti le capability ma la TUI mostra ancora
eBPF unavailable, consulta eBPF non disponibile nonostante le capability impostate nella sezione di risoluzione dei problemi.
Vedi USAGE.md per i controlli da tastiera dettagliati e i suggerimenti di navigazione.
Esempi rapidi di filtri:
/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
Ordinamento:
s per scorrere le colonne ordinabili (Processo, Indirizzi, Servizio, Applicazione, Stato, Larghezza di banda)S (Shift+s) per invertire la direzione di ordinamentos finché non appare "Bandwidth Total ↓" (ordina per velocità combinata su+giù)Vedi USAGE.md per la sintassi completa dei filtri e la guida all'ordinamento.
Filtri per parola chiave:
port:44 - Porte che contengono "44" (443, 8080, 4433)sport:80 - Porte sorgente che contengono "80"dport:443 - Porte di destinazione che contengono "443"src:192.168 - IP sorgente che contengono "192.168"dst:github.com - Destinazioni che contengono "github.com"process:ssh - Nomi di processo che contengono "ssh"sni:api - Hostname SNI che contengono "api"app:openssh - Connessioni SSH che usano OpenSSHstate:established - Filtra per stato del protocolloproto:tcp - Filtra per tipo di protocolloFiltri per stato:
state:syn_recv - Connessioni half-open (rilevamento SYN flood)RustNet usa timeout intelligenti e avvisi visivi prima di rimuovere le connessioni:
Indicatori visivi di inattività:
Timeout consapevoli del protocollo:
Initial/Handshaking: 60 secondiEsempio: una connessione HTTP diventa gialla a 7,5 minuti, rossa a 9 minuti e viene rimossa a 10 minuti.
Vedi USAGE.md per i dettagli completi sui timeout.
I contributi sono benvenuti! Consulta CONTRIBUTING.md per le linee guida su come contribuire.
Vedi CONTRIBUTORS.md per l'elenco delle persone che hanno contribuito a questo progetto.
Questo progetto è concesso in licenza secondo la Apache License, Versione 2.0 - consulta il file LICENSE per i dettagli.
tshark/wireshark/tcpdump, sniffnet, netstat, ss, iftop e bandwhichAlcune sezioni sono state spostate in file dedicati per una migliore organizzazione:
src:dst:sni:process:state:proto:/(?i)pattern/kubernetes): connessioni associate al relativo pod, namespace e container, mostrate nel pannello dei dettagli, nelle esportazioni JSON/PCAPNG e nei filtri pod:, ns:, container:. Abilitata nell'immagine Docker ufficiale; su un cluster, usa il plugin kubectl-rustnet per eseguirlo come pod di debug effimero. Vedi USAGE.md.| Panoramica Tabella delle connessioni con statistiche live e sparkline ![]() | Dettagli SNI, cifrario, GeoIP e DPI per connessione ![]() |
| Grafico Grafico del traffico, distribuzione delle app, processi principali ![]() | Attività Egress/ingress dei processi, copertura di 60 secondi, attribuzione e peer remoti ![]() |
| Tasto | Azione |
|---|
q | Esci (premi due volte per confermare) |
Ctrl+C | Esci immediatamente |
x | Cancella tutte le connessioni (premi due volte per confermare) |
Tab o ] | Scheda successiva |
Shift+Tab o [ | Scheda precedente |
1–5 | Vai a Panoramica / Dettagli / Attività / Grafico / Aiuto |
↑/k ↓/j | Naviga su/giù |
g G | Vai alla prima/ultima connessione |
Enter | Visualizza i dettagli della connessione |
Esc | Torna indietro o cancella il filtro |
c | Copia l'indirizzo remoto |
p | Attiva/disattiva nomi servizi/porte |
d | Attiva/disattiva hostname/IP in Panoramica o Egress/Ingress in Attività |
s S | Scorri le colonne di ordinamento / inverti la direzione |
a | Attiva/disattiva il raggruppamento per processo |
Space | Espandi/comprimi il gruppo di processi |
←/→ o h/l | Comprimi/espandi il gruppo |
PageUp/PageDown o Ctrl+B/F | Navigazione tra le pagine |
t | Attiva/disattiva le connessioni storiche (chiuse) |
i | Attiva/disattiva le info di sistema in Panoramica o i dettagli dell'interfaccia in Attività |
r | Reimposta la vista (raggruppamento, ordinamento, filtro) |
/ | Entra in modalità filtro |
h | Attiva/disattiva l'aiuto |
state:established - Solo connessioni stabilitestate:quic_connected - Connessioni QUIC attivestate:dns_query - Connessioni di query DNSEsempi combinati:
sport:80 process:nginx - Connessioni Nginx dalla porta 80dport:443 sni:google.com - HTTPS verso Googleprocess:firefox state:quic_connected - Connessioni QUIC di Firefoxdport:22 app:openssh state:established - Connessioni OpenSSH stabilite