Volver a actualizaciones
Nuevo releaseAug 15, 2026

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.

Compartir

Monitor de red

Demostración de Monitor de red en el escritorio GNOME en Linux

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.

rust dependency status

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

  1. Clona el repositorio:
git clone <repository-url>
cd network-monitor
  1. Instala localmente (no requiere sudo):
./scripts/install.sh
  1. 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

  1. Clona el repositorio:
git clone <repository-url>
cd network-monitor
  1. 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

  1. Clona el repositorio:
git clone <repository-url>
cd network-monitor
  1. 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)

tui nmt de network-monitor

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ón
  • r - Actualizar conexiones manualmente
  • a - Alternar actualización automática (intervalos de 2 segundos)
  • ↑/↓ - Navegar por las conexiones
  • ←/→ - Desplazar la tabla horizontalmente
  • 1-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 *:*ANY
  • 127.0.0.1:* o [::1]:*LOCALHOST
  • 224.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]/io para 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

Packaging status

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.

Categorías