Cómo servir una web desde una IP dinámica con proxy inverso, SSH y cron
Un bloguero explica cómo mantiene su homelab accesible tras los cambios de IP de su conexión de marcado, usando un proxy inverso remoto actualizado por SSH y cron.
¿Tienes un servicio en casa con una IP que cambia sin aviso y un proxy inverso en un servidor remoto que necesita saber la dirección nueva? El problema clásico es que el proxy no se entera del cambio. Un usuario ha publicado su solución: un cron que comprueba si el sitio responde y, si no, actualiza la configuración del proxy por SSH.
El autor describe un escenario habitual en homelabs: una conexión dial-up (o similar) que se reconecta de vez en cuando con una IP distinta. Tiene un proxy inverso (lighttpd) en una máquina con IP fija para enrutar el tráfico hacia su servidor casero. El DNS dinámico no le sirve porque el proxy no es el que consulta el DNS; es el propio proxy el que necesita apuntar a la IP correcta.
La solución es ingeniosa y minimalista. En el servidor de casa, un cron lanza un script cada 15 minutos. El script primero intenta acceder a la URL del sitio con curl --fail --silent. Si responde, asume que todo está bien y no hace nada. Si falla, significa que la IP ha cambiado y que el proxy sigue apuntando a la anterior. Entonces se conecta por SSH al servidor remoto y ejecuta un comando que sustituye en la plantilla de configuración la variable IPv4 por la dirección actual, utilizando envsubst. Después recarga lighttpd para aplicar los cambios.
Lo interesante es que obtiene la IP del propio SSH_CLIENT: al conectarse desde la máquina local, esa variable contiene la IP de origen, que es justo la que el proxy necesita. No hace falta ningún servicio externo de IP dinámica ni notificaciones push. Todo con herramientas estándar: cron, ssh, curl, envsubst y el comando de recarga del servidor web.
El margen de 15 minutos puede ser suficiente para un homelab; si la conexión se cae, el servicio se restablece en el peor caso en un cuarto de hora. El autor reconoce que es un mecanismo sencillo y sin dependencias, pero cumple su función. En la discusión original se pueden leer comentarios de otros usuarios con enfoques alternativos, como usar túneles o servicios de DNS dinámico con API de actualización.
La solución destaca por no requerir infraestructura adicional ni herramientas propietarias. Es un buen ejemplo de cómo resolver un problema de red con lo que ya tienes instalado. Para alguien que gestione servicios en casa con IP inestable, puede servir como punto de partida, aunque habría que probar la frecuencia adecuada y el impacto en el rendimiento si el tráfico es mayor.
Al final, lo que muestra es que a veces las soluciones más efectivas son las que combinan herramientas básicas de forma creativa, sin necesidad de añadir más piezas al sistema.
