Satélites: vigilar redes remotas
Un satélite es un agente instalado en otra red (la de una oficina, una casa, otra sede) que vigila desde dentro los equipos de esa red y manda los resultados al servidor. Sirve para lo que el servidor no puede ver por sí mismo: redes detrás de otro router, sin VPN, con direcciones que se repiten o con un enlace lento.
El satélite no es otro programa: es el agente de siempre (paquete atalaya-agent, para amd64 y arm64, por ejemplo una Raspberry Pi) al que el servidor le dice que actúe de satélite. No hay que tocar ningún fichero en él.
Qué hace un satélite
- Comprobaciones sin agente. Ejecuta en su red los pings, los puertos TCP, las webs HTTP(S), las consultas DNS y el SNMP (v1 y v2c) de los equipos que se le asignan, con los mismos parámetros y los mismos avisos que si las lanzara el servidor.
- Descubrimiento. Escanea las redes que se le asignen (ping, tabla ARP, nombres por DNS inverso y puertos habituales) y deja los equipos encontrados en la bandeja de Descubiertos.
- Cola local. Si se cae el enlace con el servidor, guarda los resultados (hasta 50 000, unas horas) en su disco y los envía al volver. Quedan en el historial con la hora a la que se tomaron.
- Relevo. Opcionalmente, deja que los agentes de su red hablen con el servidor a través de él.
Todo el tráfico es saliente: el satélite se conecta al servidor por el puerto de los agentes (8443, con certificado de cliente, igual que cualquier agente). No hay que abrir ningún puerto de entrada en la red remota ni crear una VPN.
Montar un satélite
- Instala y da de alta el agente en un equipo de la red remota (Agentes → Añadir agente), como siempre. Debe poder llegar al servidor por el puerto de la web (443) para el alta y por el 8443 para sincronizar.
- En Agentes, pulsa Satélite en su fila y activa Actuar como satélite de su red.
- Escribe sus subredes, una por línea (por ejemplo
192.168.50.0/24). - Guarda. En unos segundos el satélite recibe su configuración y empieza a trabajar.
La sección Satélites de la pantalla Agentes muestra su estado, sus subredes, cuántos equipos vigila, el relevo, cuánto tiene pendiente de enviar y cuándo sincronizó por última vez.
Qué equipos vigila cada uno
Cada equipo lo vigila el servidor o un satélite:
- Según su subred (lo normal): los equipos cuya dirección está dentro de las subredes de un satélite pasan a ser suyos solos, también los que se den de alta después. Si dos subredes se solapan, gana la más concreta. Los equipos con un nombre DNS en lugar de una IP no se asignan por subred.
- A mano: en la ficha del equipo (Editar → Lo vigila) puedes elegir un satélite concreto, El servidor (aunque su dirección esté en una subred de satélite) o volver a Según su subred.
- El propio equipo del satélite lo comprueba él mismo (por su dirección local): si cae, caen todos juntos y avisa una sola alerta.
Cuando cambia la asignación, la configuración baja sola; no hay que reiniciar nada. Las comprobaciones de tipo script (plugins de Nagios) y SSH solo las ejecuta el servidor: en un equipo de un satélite se quedan sin ejecutar (aparecen sin datos), y la web lo avisa en la propia comprobación, al crearla y en la ficha del equipo. El SNMPv3 tampoco funciona desde un satélite; usa SNMP v1 o v2c, o deja ese equipo al servidor.
Para escanear una red con un satélite, en Descubiertos → Redes elige en La escanea ese satélite. El botón Escanear le pide el escaneo, que empieza en su siguiente sincronización.
Si el satélite se cae
Si el satélite pasa más de 2 minutos sin sincronizar (se cambia en Ajustes → Satélites):
- Llega una sola alerta: «Satélite X sin conexión», con el número de equipos afectados. No hay una alerta por cada equipo.
- Los equipos que vigila pasan a «Sin datos (satélite caído)»: no se sabe si están bien o caídos, así que ni se avisa ni se cuentan como caídos. Las alertas que ya tuvieran abiertas no se repiten mientras tanto.
- Cuando vuelve el enlace, el satélite envía lo que guardó, la alerta se cierra con su aviso de recuperación y los equipos recuperan su estado.
Los resultados guardados durante el corte entran en el historial con su hora real, pero no cambian el estado ni avisan si son más viejos que el plazo de Ajustes → Satélites → Resultados atrasados (10 minutos por defecto): lo que ya pasó y se arregló solo no genera avisos.
El reloj del satélite no tiene que estar en hora: el servidor corrige la diferencia en cada sincronización.
Relevo de los agentes de la red remota
Con Relevar a los agentes de su red, el satélite escucha en su red los puertos 8443 (agentes) y 8444 (alta y descargas) y los pasa tal cual al servidor. Los agentes de esa red no necesitan salir a Internet ni llegar al servidor, y su certificado sigue siendo el suyo: el satélite no puede leer ni cambiar lo que pasa por él.
Para dar de alta un equipo de esa red, en Añadir agente elige A través del satélite… y escribe la dirección del satélite en su red: la orden usa https://<satélite>:8444 y el agente queda apuntando al satélite. Si el satélite cae, esos agentes guardan hasta una hora de datos y los envían al volver. En el alta, el agente dice al servidor su propia dirección (la de su red), que es la que se guarda para el equipo; así no se confunde con el satélite. Los agentes de versiones anteriores a la 0.8.2 no la envían: da de alta esos equipos eligiendo el equipo en la lista, no «El agente crea o busca…».
El relevo solo acepta conexiones de redes privadas (10/8, 172.16/12, 192.168/16, 169.254/16, 100.64/10, loopback y las equivalentes de IPv6); cierra cualquier conexión que llegue desde una dirección pública, así que un satélite con IP pública no ofrece a internet un túnel hacia el servidor. No hay nada que abrir hacia fuera.
Cuando el servidor está en internet detrás de un proxy (ver Publicar Atalaya en internet), el satélite lo detecta porque su dirección no es privada: las altas de los agentes de su red van entonces al puerto 8444 del servidor (que el proxy pasa tal cual al puerto web de Atalaya) y no al 443, para que la huella del certificado de la orden de alta siga valiendo. Los satélites tras NAT solo necesitan salida hacia el 8443 y el 8444.
Diagnóstico desde el propio satélite
Para ver qué vería el satélite sin esperar a la web, en su equipo:
atalaya-agent probe icmp 192.168.50.10
atalaya-agent probe tcp 192.168.50.10 '{"port": 22}'
atalaya-agent probe http 192.168.50.10 '{"url": "http://{address}/"}'
atalaya-agent probe snmp 192.168.50.1 '{}' '{"version":"2c","community":"public"}'
Muestra el estado, el valor y el mensaje, con los mismos parámetros que las comprobaciones de la web. Sale con 0 (bien), 1 (aviso), 2 (crítico) o 3 (desconocido).
Seguridad
- El satélite se identifica con el certificado de cliente que le firmó el servidor al darse de alta; un satélite solo puede mandar resultados de las comprobaciones de los equipos que tiene asignados, y el servidor rechaza el resto.
- Para las comprobaciones SNMP el servidor le entrega la comunidad por ese canal cifrado. El satélite la guarda solo en memoria.
- Si revocas el agente, deja de ser satélite y sus equipos y redes vuelven al servidor.
Métricas para Prometheus
atalaya_satellite_up{satellite="…"} (1 sincroniza, 0 caído) y atalaya_satellite_hosts{satellite="…"} (equipos que vigila).
Límites actuales
- El descubrimiento de un satélite busca por ping, ARP, DNS inverso y puertos; no usa mDNS, SSDP ni NetBIOS como el del servidor, así que da menos nombres de dispositivo.
- Las redes de un satélite se escanean de /22 a /32.
- Un satélite vigila equipos con IPv4 o nombre DNS; el ping admite también IPv6.