Un mapa visual de tu red local y contenedores sin complicaciones
Cuando un servidor casero o estación de trabajo acumula varias decenas de contenedores, máquinas virtuales y servicios de prueba, mantener un registro de todos ellos se vuelve difícil. Eventualmente te encuentras preguntándote: ¿en qué IP está funcionando la base de datos ahora mismo, qué puertos están expuestos y a qué redes Docker está conectado ese viejo worker? Normalmente tienes que abrir una terminal, hacer grep en la salida de docker inspect, ejecutar nmap y unir manualmente la información en tu cabeza.
Hace poco descubrí Atlas, un proyecto de código abierto del desarrollador Karam Ajaj. Esta herramienta se encarga de la rutina: escanea subredes locales, obtiene detalles de los contenedores a través del socket Docker y genera un mapa de red interactivo directamente en el navegador.
Qué hay bajo el capó y cómo funciona
La arquitectura de Atlas combina varios componentes conocidos, empaquetados en un único contenedor:
- El escáner está escrito en Go 1.22. El binario realiza solicitudes de red de bajo nivel mediante ARP y ping, consulta el socket Docker y realiza un análisis profundo de los puertos abiertos. Todos los hallazgos se almacenan en una base de datos SQLite local.
- El backend funciona con FastAPI. Sirve los hosts descubiertos a través de la API REST, gestiona las sesiones y acepta comandos para iniciar el escaneo.
- La interfaz web está construida con React, servida por NGINX, que también actúa como proxy para las solicitudes de la API.
Este stack opera de forma autónoma. No se necesita configuración de cron dentro del contenedor: el polling periódico de subredes se gestiona mediante temporizadores de Go.
Características principales
Inspección profunda de Docker
Muchas herramientas similares fallan cuando un contenedor tiene múltiples interfaces de red. Atlas rastrea cada interfaz por separado. Si un contenedor tiene múltiples IPs internas y direcciones MAC, todas aparecen en el gráfico vinculadas a nombres de red específicos. La utilidad también analiza los metadatos de la imagen, intentando determinar el tipo de sistema operativo.
Descubrimiento de hosts vecinos
Atlas no se detiene en el host local. La variable SCAN_SUBNETS te permite especificar una lista separada por comas de subredes, por ejemplo 192.168.1.0/24,10.0.0.0/24. El escáner descubre los dispositivos disponibles, identifica el sistema operativo y verifica los puertos accesibles. El mismo host visible desde diferentes adaptadores de red se etiqueta con las etiquetas de interfaz correspondientes.
Visualización interactiva
El gráfico de red puede cambiar entre diseños circular y jerárquico. Si la vista gráfica no es conveniente en un momento dado, hay disponible una tabla de hosts estándar con todos los parámetros, filtros y búsqueda. La interfaz es compatible con dispositivos móviles, así que puedes verificar el estado de la red desde tu teléfono.




Programación flexible a través de la API
Los intervalos de verificación se establecen al inicio, pero pueden cambiarse sobre la marcha sin reiniciar el contenedor. Endpoints dedicados de la API se encargan de esto:
# Проверить текущие интервалы
curl http://localhost:8888/api/scheduler/intervals
# Изменить частоту быстрого сканирования на 30 минут
curl -X PUT http://localhost:8888/api/scheduler/intervals/fastscan \
-H "Content-Type: application/json" \
-d '{"interval": 1800}'
Cómo desplegarlo tú mismo
La forma más rápida de probarlo es ejecutar la imagen Docker lista para usar. La herramienta necesita acceso a la red del host y al socket del daemon:
docker run -d \
--name atlas \
--network=host \
--cap-add=NET_RAW \
--cap-add=NET_ADMIN \
-v /var/run/docker.sock:/var/run/docker.sock \
-e ATLAS_UI_PORT='8888' \
-e ATLAS_API_PORT='8889' \
-e ATLAS_ADMIN_USER='admin' \
-e ATLAS_ADMIN_PASSWORD='change-me' \
-e SCAN_SUBNETS="192.168.1.0/24" \
keinstien/atlas:latest
Los flags NET_RAW y NET_ADMIN son necesarios para enviar paquetes de bajo nivel durante el escaneo. Si no se establece contraseña de administrador, la autenticación de la interfaz de usuario está deshabilitada por defecto. Cuando la seguridad es crítica, establece ATLAS_ADMIN_PASSWORD, después de lo cual la interfaz web estará protegida por una pantalla de inicio de sesión y los endpoints de la API requerirán un token bearer.
Después del inicio, la interfaz web está disponible en http://localhost:8888, y la documentación interactiva de Swagger está en http://localhost:8888/api/docs.
Para quién es útil
Atlas encaja perfectamente en laboratorios caseros, infraestructuras de oficinas pequeñas o servidores staging dedicados donde los entornos de prueba se crean y destruyen frecuentemente. El proyecto elimina la necesidad de mantener un mapa mental de las direcciones locales y te ayuda a detectar a tiempo un puerto abierto olvidado.
Si quieres hacerte una idea de la interfaz primero, el autor mantiene una demo pública en https://atlasdemo.vnerd.nl/ con el nombre de usuario admin y la contraseña change-me. El código fuente está publicado bajo la licencia MIT, así que puedes adaptar el proyecto con confianza para tus propios scripts de automatización.
Proyectos relacionados