
Monitoreo de red por proceso para tu terminal con inspección profunda de paquetes. Multiplataforma, en sandbox.
Monitoreo de red por proceso para tu terminal: conexiones TCP, UDP y QUIC en vivo con inspección profunda de paquetes, con sandbox de forma predeterminada.
Inglés | 简体中文
Visibilidad en tiempo real de cada conexión que realiza tu máquina, de quién es y qué protocolo está usando. Sin tcpdump, ni reenvío de X11, ni pipes con root.
netstat / ss no pueden mostrar el estado en vivo.--pcapng-export escribe una captura lista para Wireshark con proceso, PID, dirección, DPI/SNI y GeoIP incrustados como comentarios por paquete. Ábrela en Wireshark y cada paquete ya indica su proceso propietario, sin posprocesamiento. También está disponible el clásico --pcap-export con un sidecar JSONL para correlación sin conexión.t para mantener visibles las conexiones históricas (cerradas) para análisis forense.port:, src:, , , , , , además de expresiones regulares mediante .RustNet cubre el vacío entre las herramientas simples de conexiones (netstat, ss) y los analizadores de paquetes (Wireshark, tcpdump):
RustNet complementa las herramientas de captura de paquetes. Usa RustNet para ver qué está realizando las conexiones. Para inspección directa con Wireshark, --pcapng-export escribe comentarios de paquete en vivo y de mejor esfuerzo con contexto de PID/proceso. Para correlación posterior, usa --pcap-export junto con el sidecar JSONL y el opcional scripts/pcap_enrich.py. Consulta Exportación PCAP y Comparación con herramientas similares para más detalles.
Construido sobre ratatui, libpcap, eBPF (libbpf-rs), DashMap, crossbeam, ring, MaxMind GeoLite2 y Landlock. Consulta ARCHITECTURE.md para el desglose completo de dependencias.
RustNet usa programas eBPF del kernel de forma predeterminada en Linux para un mejor rendimiento y una identificación de procesos con menor sobrecarga. Sin embargo, esto conlleva limitaciones importantes:
Limitaciones del nombre de proceso:
comm del kernel, que está limitado a 16 caracteresEjemplos del mundo real:
Comportamiento de respaldo:
Para deshabilitar eBPF y usar el modo solo procfs, compila con:
cargo build --release --no-default-features
Consulta ARCHITECTURE.md para información técnica.
RustNet proporciona estadísticas de interfaz de red en tiempo real en todas las plataformas compatibles:
3): Tabla detallada con métricas completas para todas las interfacesConsulta USAGE.md para documentación detallada sobre cómo interpretar las estadísticas de interfaz y el comportamiento específico de cada plataforma.
Métricas disponibles:
Las estadísticas se recopilan cada 2 segundos en un hilo en segundo plano con un impacto mínimo en el rendimiento.
Homebrew (macOS / Linux):
brew install rustnet
Ubuntu (25.10+):
sudo add-apt-repository 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
Desde 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
Otras plataformas:
La captura de paquetes requiere privilegios elevados:
# 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
Opciones comunes:
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 classic # Original full-color palette (default: muted)
rustnet --pcapng-export capture.pcapng # Annotated PCAPNG for Wireshark
Consulta INSTALL.md para la configuración detallada de permisos y USAGE.md para las opciones completas.
Si configuras capabilities pero la TUI sigue mostrando
eBPF unavailable, consulta eBPF no disponible a pesar de tener capabilities configuradas en la sección de solución de problemas.
Consulta USAGE.md para controles de teclado detallados y consejos de navegación.
Ejemplos rápidos de filtrado:
/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
Ordenación:
s para alternar entre columnas ordenables (Proceso, Direcciones, Servicio, Aplicación, Estado, Ancho de banda)S (Shift+s) para cambiar la dirección de ordenacións hasta que aparezca "Bandwidth Total ↓" (ordena por velocidad combinada de subida+bajada)Consulta USAGE.md para la sintaxis completa de filtrado y la guía de ordenación.
Filtros por palabra clave:
port:44 - Puertos que contienen "44" (443, 8080, 4433)sport:80 - Puertos de origen que contienen "80"dport:443 - Puertos de destino que contienen "443"src:192.168 - IPs de origen que contienen "192.168"dst:github.com - Destinos que contienen "github.com"process:ssh - Nombres de proceso que contienen "ssh"sni:api - Nombres de host SNI que contienen "api"app:openssh - Conexiones SSH que usan OpenSSHstate:established - Filtrar por estado del protocoloproto:tcp - Filtrar por tipo de protocoloFiltrado por estado:
state:syn_recv - Conexiones semiabiertas (detección de inundación SYN)RustNet usa tiempos de espera inteligentes y avisos visuales antes de eliminar conexiones:
Indicadores visuales de obsolescencia:
Tiempos de espera según protocolo:
Initial/Handshaking: 60 segundosEjemplo: una conexión HTTP se vuelve amarilla a los 7,5 min, roja a los 9 min y se elimina a los 10 min.
Consulta USAGE.md para todos los detalles sobre tiempos de espera.
¡Las contribuciones son bienvenidas! Consulta CONTRIBUTING.md para conocer las pautas sobre cómo contribuir.
Consulta CONTRIBUTORS.md para ver la lista de personas que han contribuido a este proyecto.
Este proyecto está licenciado bajo la Apache License, Versión 2.0; consulta el archivo LICENSE para más detalles.
tshark/wireshark/tcpdump, sniffnet, netstat, ss, iftop y bandwhichAlgunas secciones se han trasladado a archivos dedicados para una mejor organización:
dst:sni:process:state:proto:/(?i)pattern/kubernetes): las conexiones se asignan a su pod, namespace y contenedor, y se muestran en el panel de detalles, exportaciones JSON/PCAPNG y los filtros pod:, ns: y container:. Habilitada en la imagen oficial de Docker; en un clúster, usa el plugin kubectl-rustnet para ejecutarlo como un pod de depuración efímero. Ver USAGE.md.| Resumen Tabla de conexiones con estadísticas en vivo y sparklines ![]() | Detalles SNI, cifrado, GeoIP y DPI por conexión ![]() |
| Gráfica Gráfica de tráfico, distribución de apps, principales procesos ![]() | Interfaces Historial RX/TX por interfaz con errores y descartes ![]() |
| Tecla | Acción |
|---|
q | Salir (pulsa dos veces para confirmar) |
Ctrl+C | Salir inmediatamente |
x | Borrar todas las conexiones (pulsa dos veces para confirmar) |
Tab o ] | Siguiente pestaña |
Shift+Tab o [ | Pestaña anterior |
1–5 | Saltar a Resumen / Detalles / Interfaces / Gráfica / Ayuda |
↑/k ↓/j | Navegar arriba/abajo |
g G | Ir a la primera/última conexión |
Enter | Ver detalles de la conexión |
Esc | Volver o limpiar el filtro |
c | Copiar dirección remota |
p | Alternar nombres de servicio/puertos |
d | Alternar nombres de host/IPs |
s S | Alternar columnas de ordenación / cambiar dirección |
a | Alternar agrupación por proceso |
Espacio | Expandir/contraer grupo de proceso |
←/→ o h/l | Contraer/expandir grupo |
PageUp/PageDown o Ctrl+B/F | Navegación por páginas |
t | Alternar conexiones históricas (cerradas) |
i | Alternar la barra lateral de información del sistema |
r | Restablecer vista (agrupación, ordenación, filtro) |
/ | Entrar en modo filtro |
h | Alternar ayuda |
state:established - Solo conexiones establecidasstate:quic_connected - Conexiones QUIC activasstate:dns_query - Conexiones de consulta DNSEjemplos combinados:
sport:80 process:nginx - Conexiones de Nginx desde el puerto 80dport:443 sni:google.com - HTTPS hacia Googleprocess:firefox state:quic_connected - Conexiones QUIC de Firefoxdport:22 app:openssh state:established - Conexiones OpenSSH establecidas