>_ DevTrendspt

Idioma

Início

Linguagens

Seções

Frontend Backend Mobile DevOps AI / ML GameDev Blockchain Embarcados Segurança
JavaScript

Um mapa visual da sua rede local e containers sem complicação

Quando um servidor caseiro ou estação de trabalho acumula algumas dezenas de containers, VMs e serviços de teste, acompanhar todos eles se torna difícil. Eventualmente você se pega perguntando: qual é o IP do banco de dados que está rodando agora, quais portas estão expostas, e a qual rede Docker aquele worker antigo está conectado? Normalmente você precisa abrir um terminal, fazer grep na saída do docker inspect, rodar nmap, e manualmente montar as informações na sua cabeça.

Recentemente encontrei o Atlas, um projeto open-source do desenvolvedor Karam Ajaj. Esta ferramenta assume a rotina: escaneia sub-redes locais, puxa detalhes dos containers via socket Docker, e renderiza um mapa de rede interativo direto no navegador.

Como funciona por baixo dos panos

A arquitetura do Atlas combina vários componentes familiares, empacotados em um único container:

  • O scanner é escrito em Go 1.22. O binário realiza requisições de rede de baixo nível via ARP e ping, consulta o socket Docker, e faz uma varredura profunda das portas abertas. Todos os achados são armazenados em um banco de dados SQLite local.
  • O backend roda em FastAPI. Ele serve os hosts descobertos via API REST, gerencia sessões, e aceita comandos para iniciar o escaneamento.
  • A interface web é construída com React, servida por NGINX, que também faz proxy das requisições da API.

Esta stack opera de forma autônoma. Não é necessário configurar cron dentro do container: o polling periódico das sub-redes é tratado por timers em Go.

Principais funcionalidades

Inspeção profunda do Docker

Muitas ferramentas similares tropeçam quando um container tem múltiplas interfaces de rede. O Atlas rastreia cada interface separadamente. Se um container tem múltiplos IPs internos e endereços MAC, todos aparecem no grafo vinculados aos nomes de rede específicos. O utilitário também parseia metadados da imagem, tentando determinar o tipo de sistema operacional.

Descoberta de hosts vizinhos

O Atlas não para no host local. A variável SCAN_SUBNETS permite especificar uma lista separada por vírgulas de sub-redes, por exemplo 192.168.1.0/24,10.0.0.0/24. O scanner descobre dispositivos disponíveis, faz fingerprint do SO, e verifica portas acessíveis. O mesmo host visível a partir de diferentes adaptadores de rede é rotulado com as labels de interface correspondentes.

Visualização interativa

O grafo de rede pode ser alternado entre layouts circular e hierárquico. Se a visualização gráfica não for conveniente em um dado momento, uma tabela padrão de hosts está disponível com todos os parâmetros, filtros e busca. A interface é amigável para mobile, então você pode verificar o status da rede do seu celular.

Layout circular do dashboard

Layout hierárquico do dashboard

Tabela de hosts

Painel de logs

Agendamento flexível via API

Os intervalos de verificação são definidos na inicialização, mas podem ser alterados em tempo real sem reiniciar o container. Endpoints dedicados da API tratam disso:

# Проверить текущие интервалы
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}'

Como fazer o deploy você mesmo

A forma mais rápida de experimentar é rodar a imagem Docker pronta. A ferramenta precisa de acesso à rede do host e ao socket do 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

As flags NET_RAW e NET_ADMIN são necessárias para enviar pacotes de baixo nível durante o escaneamento. Se nenhuma senha de admin for definida, a autenticação da UI é desabilitada por padrão. Quando a segurança é crítica, defina ATLAS_ADMIN_PASSWORD, após o que a interface web será protegida por uma tela de login e os endpoints da API vão exigir um bearer token.

Após a inicialização, a interface web está disponível em http://localhost:8888, e a documentação interativa do Swagger está em http://localhost:8888/api/docs.

Para quem é

O Atlas se encaixa perfeitamente em home labs, infraestruturas de pequenos escritórios, ou servidores staging dedicados onde ambientes de teste são frequentemente criados e destruídos. O projeto elimina a necessidade de manter um mapa mental de endereços locais e ajuda você a identificar uma porta aberta esquecida a tempo.

Se você quer ter uma ideia da interface primeiro, o autor mantém uma demo pública em https://atlasdemo.vnerd.nl/ com usuário admin e senha change-me. O código fonte é liberado sob licença MIT, então você pode adaptar o projeto com confiança para seus próprios scripts de automação.

Projetos relacionados