Este script permite actualizar automáticamente los registros DNS de tipo A y AAAA en OVH, asegurando que tu dominio o subdominio siempre apunte a la IP pública actual de tu servidor. Ideal para conexiones con IP dinámica.
Asegúrate de contar con los siguientes requisitos antes de comenzar:
- Servidor o equipo con Linux (probado en Debian/Ubuntu, pero debería funcionar en otras distribuciones).
- Python 3.x instalado.
- Acceso SSH al servidor.
- Credenciales API de OVH (
APP_KEY,APP_SECRETyCONSUMER_KEY). - Acceso al panel de OVH para gestionar la zona DNS de tu dominio.
-
Instalar Python 3 y pip (si no los tienes):
sudo apt update sudo apt install python3 python3-pip -y
-
Instalar la librería oficial de OVH para Python:
pip install ovh
-
Instalar otras librerias necesarias:
pip install requests pip install python-dotenv
-
Crear un directorio para almacenar el estado de las actualizaciones:
sudo mkdir -p /var/lib/ovh_dns_updater sudo chown <usuario>:<grupo> /var/lib/ovh_dns_updater sudo chmod 700 /var/lib/ovh_dns_updater
Nota: Sustituye
<usuario>y<grupo>por el usuario que ejecutará el script.
-
Crear el archivo de configuración en
/etc/ovh-dns-updater.envcon el siguiente contenido:OVH_ENDPOINT=ovh-eu OVH_APP_KEY=xxxxxxxxxxxxxxxx OVH_APP_SECRET=xxxxxxxxxxxxxxxxxxxxxxxx OVH_CONSUMER_KEY=xxxxxxxxxxxxxxxxxxxxxxxx OVH_ZONE=midominio.com # OVH_SUBDOMAIN=casa # Descomentar si quieres un subdominio OVH_TTL=300 WANT_IPV6=0 FORCE_REMOTE_CHECK=0 IP_SERVICE_V4=https://api.ipify.org IP_SERVICE_V6=https://api6.ipify.org STATE_FILE=/var/lib/ovh_dns_updater/state.json
-
Dar permisos seguros al archivo
.env:sudo chmod 600 /etc/ovh-dns-updater.env
-
Para probar que todo funciona correctamente, ejecuta el script manualmente:
OVH_ENV_FILE=/etc/ovh-dns-updater.env python3 /usr/local/bin/ovh_dns_update.py
Si todo está bien, el script actualizará el registro A (y AAAA si
WANT_IPV6=1).
-
Editar el cron del usuario que ejecutará el script:
crontab -e
-
Añadir la siguiente línea para ejecutar el script cada 5 minutos:
*/5 * * * * OVH_ENV_FILE=/etc/ovh-dns-updater.env python3 /usr/local/bin/ovh_dns_update.py >> /var/log/ovh_dns_updater.log 2>&1
Esto redirige la salida estándar y de errores a un archivo de log (
/var/log/ovh_dns_updater.log).
-
NO compartas el archivo
.envni lo subas a repositorios públicos. -
Asegúrate de que solo el usuario autorizado tenga acceso de lectura al archivo
.env:sudo chmod 600 /etc/ovh-dns-updater.env
-
Puedes comprobar tu IP pública utilizando:
curl https://api.ipify.org
-
Verifica que la IP pública obtenida coincida con la configurada en tu registro DNS después de ejecutar el script.
David C.G. (CodeForUsers)
Este proyecto está licenciado bajo la Apache License 2.0.
Ver el archivo LICENSE para más detalles.