
network-monitor v0.7.5
Una herramienta de monitoreo de conexiones de red en tiempo real construida con Rust y GTK4, que muestra conexiones activas con estadísticas de E/S en vivo en una interfaz gráfica moderna.
Monitor de red

Una herramienta de monitoreo de conexiones de red en tiempo real construida con Rust y GTK4, que muestra conexiones activas con estadísticas de E/S en vivo en una interfaz gráfica moderna.
Características
- Monitoreo en tiempo real: Monitorea continuamente conexiones de red activas
- Estadísticas de E/S: Muestra tasas de subida/bajada en vivo para cada conexión
- Identificación de procesos: Muestra el programa y PID asociado con cada conexión
- Interfaz GTK4 moderna: Interfaz gráfica limpia y responsiva con estilo Libadwaita
- Interfaz de terminal (TUI): Interfaz de terminal interactiva con las mismas capacidades de monitoreo
- Resolución de direcciones: Simplifica direcciones comunes (localhost, any, mDNS)
- Filtrado de conexiones: Filtra conexiones localhost para una salida más limpia
- Integración con GNOME: Soporte de clase WM adecuado para anclaje en el dock e integración con el escritorio
- Instalación dual: Soporta instalación tanto a nivel de usuario como a nivel de sistema
- Manejo robusto de errores: Recuperación completa de errores con guía clara de configuración
- Optimizado para rendimiento: Caché de procesos y diseño para una capacidad de respuesta mejorada
Requisitos
- Rust 1.70+ (edición 2021)
- Librerías de desarrollo GTK4
- Librerías de desarrollo Libadwaita
- Sistema Linux con sistema de archivos
/proc - Linux 5.8+ (para capacidades granulares de eBPF)
- Rust nightly y
bpf-linker(para compilación eBPF)
Instalación en Ubuntu/Debian:
sudo apt update
sudo apt install libgtk-4-dev libadwaita-1-dev
Instalación en Fedora:
sudo dnf install gtk4-devel libadwaita-devel
Instalación
Método 1: Instalar desde el código fuente con integración de escritorio
- Clona el repositorio:
git clone <repository-url>
cd network-monitor
- Instala localmente (no requiere sudo):
./scripts/install.sh
- O instala en todo el sistema (requiere sudo):
sudo ./scripts/install.sh
El script de instalación:
- Compila los binarios GTK4 y TUI (debug para local, release para todo el sistema)
- Instala los binarios en
~/.local/bin/(local) o/usr/local/bin/(todo el sistema) - Instala el archivo .desktop con la clase WM adecuada para anclaje en el dock de GNOME
- Instala los iconos en los directorios de iconos apropiados
- Actualiza la caché de iconos y la base de datos del escritorio
- Asegura que la aplicación se pueda anclar al dock/dashboard de GNOME
Método 2: Compilar y ejecutar directamente
- Clona el repositorio:
git clone <repository-url>
cd network-monitor
- Compila y ejecuta:
cargo run
O compila en modo release:
cargo build --release
./target/release/network-monitor
Método 3: Compilar y ejecutar la versión TUI
- Clona el repositorio:
git clone <repository-url>
cd network-monitor
- Compila y ejecuta la TUI:
cargo build --bin nmt
./target/debug/nmt
O compila en modo release:
cargo build --release --bin nmt
./target/release/nmt
Desinstalación
Eliminar la versión instalada
Eliminación de instalación local:
./scripts/uninstall.sh
Eliminación en todo el sistema (requiere sudo):
sudo ./scripts/uninstall.sh
El script de desinstalación eliminará el binario, el archivo .desktop y los iconos de las ubicaciones apropiadas y actualizará todas las cachés relevantes.
Uso
Interfaz gráfica GTK4
Lanza la aplicación de monitor de red:
cargo run
La aplicación abrirá una ventana GTK4 que muestra:
- Proceso(ID): Nombre del proceso y PID con mapeo preciso de socket a proceso
- Protocolo: Protocolo TCP/UDP
- Origen: Extremo local (resuelto a formato legible)
- Destino: Extremo remoto (resuelto a formato legible)
- Estado: Estado de la conexión (ESTABLISHED, LISTEN, etc.)
- TX: Tasa de subida calculada a partir de estadísticas de E/S del proceso
- RX: Tasa de bajada calculada a partir de estadísticas de E/S del proceso
- Ruta: Ruta completa del comando y argumentos desde
/proc/[pid]/cmdline
Interfaz de terminal (TUI)

Lanza la interfaz de terminal:
cargo run --bin nmt
La TUI proporciona las mismas capacidades de monitoreo en una interfaz de terminal interactiva:
Controles clave:
q- Salir de la aplicaciónr- Actualizar conexiones manualmentea- Alternar actualización automática (intervalos de 2 segundos)↑/↓- Navegar por las conexiones←/→- Desplazar la tabla horizontalmente1-8- Ordenar por columnas (Proceso(ID), Protocolo, Origen, Destino, Estado, TX, RX, Ruta)
Características:
- Monitoreo de conexiones en tiempo real con actualización automática
- Columnas ordenables con indicadores visuales
- Desplazamiento horizontal para tablas anchas
- Tamaño inteligente de columnas: la última columna obtiene todo el ancho restante
- Protocolos codificados por color (TCP/TCP6 en verde, UDP/UDP6 en amarillo)
- Resaltado de conexión activa
- Información del proceso y PID
- Visualización de tasas de E/S en vivo
- Mismo orden de columnas que la versión GTK4 para consistencia
Resolución de direcciones
Las direcciones comunes se simplifican para facilitar la lectura:
0.0.0.0:*o*:*→ANY127.0.0.1:*o[::1]:*→LOCALHOST224.0.0.251:*→MDNS
Cómo funciona
Backend eBPF (basado en eventos)
La aplicación utiliza kprobes a nivel de kernel (tcp_v4_connect, tcp_v6_connect, tcp_close, inet_csk_accept) en lugar de sondear /proc/net. Esto proporciona:
- Basado en eventos: Entrega de eventos en submilisegundos, sin sobrecarga de sondeo (~1-3% de CPU)
- PID directo: Capturado en el punto de sonda mediante
bpf_get_current_pid_tgid(), sin escaneo de inodos - Conexiones de corta duración: Nunca se pierden entre intervalos de sondeo
Modo eBPF
El backend eBPF proporciona monitoreo de conexiones basado en eventos con menor sobrecarga y eventos en tiempo real, en comparación con el enfoque de sondeo predeterminado de /proc/net. Puede capturar conexiones de corta duración que el sondeo podría pasar por alto.
Requisitos previos:
rustup toolchain install nightly
cargo install bpf-linker
Compilar y ejecutar:
cargo build
Ejecutar como usuario normal (se requiere kernel 5.8+):
Concede las capacidades de Linux requeridas al binario una vez:
sudo setcap cap_bpf,cap_net_admin,cap_perfmon+ep target/debug/network-monitor
./target/debug/network-monitor
O para la versión TUI:
sudo setcap cap_bpf,cap_net_admin,cap_perfmon+ep target/debug/nmt
./target/debug/nmt
Para compilaciones release, ajusta la ruta en consecuencia:
sudo setcap cap_bpf,cap_net_admin,cap_perfmon+ep target/release/network-monitor
La aplicación saldrá con un mensaje de configuración si eBPF no está disponible (faltan capacidades o kernel no compatible).
Arquitectura
- GTK4: Framework de GUI multiplataforma moderno
- Libadwaita: Componentes de interfaz de usuario estilo GNOME
- Tokio: Entorno de ejecución asíncrono para operaciones concurrentes
- Aya + eBPF: Rastreo de conexiones a nivel de kernel con kprobes para eventos en tiempo real
- PID directo: Identificación de procesos mediante
bpf_get_current_pid_tgid()en el punto de sonda - Llamadas al sistema: Lectura directa de
/proc/[pid]/iopara estadísticas de E/S - Manejo de errores: Tipos de error completos con recuperación gradual usando
thiserror - Caché de rendimiento: Caché de diseño de interfaz de usuario para un rendimiento óptimo
Paquetes de Linux
Donaciones
Si encuentras útil este proyecto, considera hacer una donación para apoyar su desarrollo.
- Monero:
88LyqYXn4LdCVDtPWKuton9hJwbo8ZduNEGuARHGdeSJ79BBYWGpMQR8VGWxGDKtTLLM6E9MJm8RvW9VMUgCcSXu19L9FSv - Bitcoin:
bc1q6mh77hfv8x8pa0clzskw6ndysujmr78j6se025
Licencia
Este proyecto es de código abierto. Consulte el archivo LICENSE para más detalles.