DEV Community

Cover image for De tcpdump a un mundo 3D: visualiza tráfico de servidores en tiempo real
Savne Digital Solutions
Savne Digital Solutions

Posted on

De tcpdump a un mundo 3D: visualiza tráfico de servidores en tiempo real

Demo

Cuando administras varios servidores Linux, normalmente terminas saltando entre dashboards, gráficas, terminales y herramientas de monitoreo.

Pero hay una pregunta que no siempre es fácil responder visualmente:

¿Qué servidor se está comunicando con cuál y qué está ocurriendo en la infraestructura en este momento?

WorldServers intenta responder esa pregunta convirtiendo los servidores y parte de su actividad de red en un mundo 3D interactivo.

Cada servidor aparece como un nodo y el tráfico puede verse desplazándose entre ellos en tiempo real.


Arquitectura general

Architecture

Diagrama realizado con Savnet.


WorldServers es una aplicación de escritorio open source escrita en Rust para monitorizar servidores Linux remotos.

Actualmente permite visualizar:

  • CPU
  • Memoria RAM
  • Uso de disco
  • Tráfico entrante
  • Tráfico saliente
  • Tráfico entre servidores registrados
  • Estado de conexión

La aplicación se conecta a cada servidor mediante SSH y obtiene la información utilizando herramientas estándar de Linux. No requiere instalar un agente propietario en cada máquina.

Rotate world


¿Cómo funciona?

El flujo general es bastante sencillo:

  1. Registras un servidor Linux.
  2. WorldServers abre una conexión SSH.
  3. Obtiene métricas del sistema.
  4. Ejecuta tcpdump para observar tráfico de red.
  5. Representa servidores, métricas y tráfico dentro del mundo 3D.

Para las métricas utiliza herramientas estándar como top, free y df. Para la captura de tráfico utiliza tcpdump y para detectar la interfaz de red principal iproute2. La idea es aprovechar herramientas que ya existen en prácticamente cualquier servidor Linux.

Register Server


Requisitos del servidor

Cada servidor que quieras monitorizar necesita:

  • Linux.
  • Acceso SSH.
  • tcpdump.
  • iproute2.
  • top.
  • free.
  • df.

En Debian o Ubuntu puedes instalar lo necesario con:

sudo apt-get update
sudo apt-get install -y tcpdump iproute2 sudo
Enter fullscreen mode Exit fullscreen mode

Después puedes verificar dónde está instalado tcpdump:

command -v tcpdump
Enter fullscreen mode Exit fullscreen mode

Por ejemplo /usr/bin/tcpdump o /usr/sbin/tcpdump

La ruta puede cambiar dependiendo de la distribución.

Register server 1


Crear un usuario de monitoreo

No es necesario utilizar root para conectar WorldServers.

Una alternativa más segura es crear un usuario dedicado sudo adduser monitor . Después puedes permitir únicamente la ejecución de tcpdump mediante sudo sin contraseña. Abre la configuración utilizando:

sudo visudo
Enter fullscreen mode Exit fullscreen mode

Y añade una regla similar a:

monitor ALL=(root) NOPASSWD: /usr/sbin/tcpdump
Enter fullscreen mode Exit fullscreen mode

Usa la ruta exacta obtenida anteriormente con:

command -v tcpdump
Enter fullscreen mode Exit fullscreen mode

De esta forma, WorldServers puede ejecutar sudo -n tcpdump

sin mantener una sesión SSH como root.

Conviene revisar cuidadosamente cualquier regla NOPASSWD antes de utilizarla en producción y limitarla únicamente a los comandos necesarios.


Instalar WorldServers

Puedes descargar la última versión desde WorldServers Releases

También puedes revisar el código fuente o compilar la aplicación directamente desde github.com/OscarSanchezSavne/world-servers


Validación de la conexión

Cuando registras un servidor, WorldServers prueba la conexión antes de empezar a monitorizarlo.

Entre otras cosas, valida:

  • Conexión SSH.
  • Handshake SSH.
  • Autenticación.
  • Disponibilidad de tcpdump.
  • Permisos necesarios para ejecutar la captura.

El resultado aparece directamente en el log de conexión.

Test connection

Esto permite detectar rápidamente problemas de configuración antes de añadir el servidor al mundo.


El mundo 3D

Monitor 2

Una vez registrados los servidores puedes abrir la visualización.

Cada servidor interno aparece representado por un conjunto de celdas hexagonales.

Cada nodo muestra sus métricas principales CPU, RAM , Disk

El color de las barras permite identificar rápidamente niveles de utilización.

La cámara permite:

  • desplazarse;
  • acercarse y alejarse con doble click y escape;
  • rotar el mundo;
  • centrar elementos.

La rotación no es solamente decorativa. El mundo está construido realmente como una escena 3D utilizando Bevy.


Seguridad

Hay varias consideraciones importantes:

  • No utilizar root si no es necesario
  • Utilizar claves SSH siempre que sea posible
  • Puedes utilizar firewall, VPN o reglas de red para restringir qué equipos pueden conectarse al servidor
  • Si necesitas ejecutar tcpdump mediante sudo, limita el permiso únicamente al binario requerido.

¿Para qué puede servir?

WorldServers puede resultar interesante si quieres:

  • Observar visualmente una infraestructura pequeña o mediana
  • Identificar rápidamente tráfico entre máquinas
  • Relacionar actividad de red con utilización de recursos
  • Wxperimentar con otras formas de visualizar infraestructura
  • Tener una representación espacial de tus servidores

No pretende sustituir una plataforma completa de observabilidad. La idea es ofrecer otra perspectiva sobre la misma infraestructura.


Proyecto open source

WorldServers es open source y el código está disponible en GitHub: github.com/OscarSanchezSavne/world-servers

Si quieres probarlo: Descargar última versión


Enlaces

Top comments (0)