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

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

  1. 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.
  2. En Agentes, pulsa Satélite en su fila y activa Actuar como satélite de su red.
  3. Escribe sus subredes, una por línea (por ejemplo 192.168.50.0/24).
  4. 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:

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):

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

Métricas para Prometheus

atalaya_satellite_up{satellite="…"} (1 sincroniza, 0 caído) y atalaya_satellite_hosts{satellite="…"} (equipos que vigila).

Límites actuales