Archivo

Archivo para Julio, 2014

DNS dinámicas con DigitalOcean y su API v2.0

Lunes, 7 de Julio de 2014 Sin comentarios

Si queremos tener accesible nuestra Raspberry a través de una conexión a Internet que nos provee una IP dinámica, podemos hacer uso de la API de DigitalOcean para configurar un subdominio que vaya cambiando su IP a la par que la nuestra.

Para ello deberemos crear un nuevo token desde el panel de administración de DigitalOcean, algo parecido a una especie de hash.

Después crearemos un nuevo registro de tipo A en el gestor de DNS que podemos llamar “home”, con lo que nuestro dominio dinámico será algo así como “home.midominio.com”.

Después haremos un script en nuestra Raspberry que tenga el siguiente aspecto:

!/bin/bash
var_token=”nuestroToken”
var_domain=”midominio.com”
var_record_id=”elIDdeHome”
var_ip=$(curl -s icanhazip.com)

## Devuelve las últimas acciones realizadas ##
#curl -X GET “https://api.digitalocean.com/v2/actions” \
# -H “Authorization: Bearer $var_token”
## Devuelve la información sobre el dominio ##
#curl -X GET “https://api.digitalocean.com/v2/domains/$var_domain/records” \
# -H “Authorization: Bearer $var_token”

## Cambia la IP del dominio ##
curl -X PUT “https://api.digitalocean.com/v2/domains/$var_domain/records/$var_record_id” \
-d'{“data”:”‘$var_ip'”}’ \
-H “Authorization: Bearer $var_token” \
-H “Content-Type: application/json”

Los únicos valores que tendremos que cambiar serán var_token (el token que hemos generado en el paso anterior), var_domain (el dominio que nos interesa modificar) y el var_record_id (un valor que deberemos recuperar).

Entonces, nuestra IP external la obtendremos gracias al servicio de “icanhzip.com” que soporta IPv4 e IPv6. El siguiente valor que nos interesa recuperar será el identificador del registro A de “home”, que se obtiene ejecutando el siguiente script:

!/bin/bash
var_token=”nuestroToken”
var_domain=”midominio.com”

curl -X GET “https://api.digitalocean.com/v2/domains/$var_domain/records” \

-H “Authorization: Bearer $var_token”

Una vez editado el script con toda ésta información sólo nos quedará programarlo en Cron. Para ello ejecutaremos como root el siguiente comando:

crontab -e

Añadiremos la ruta hasta nuestro script y la información para que se ejecute todos los días cada 5 horas:

# Actualiza la IP en DigitalOcean
* */5 * * * /opt/dynamicDNS/dns-digitalocean.sh > /dev/null 2>&1 | logger “Digital Ocean – Updating IP”

 

No olvidar instalar Curl en Raspbmc si no lo tenéis ya:

apt-get install curl

 

 

Direcciones de interés:

Información relativa a la API v2 de DigitalOcean

Manual Básico de Cron