sábado, 12 de agosto de 2017

Apuntar un dominio a una IP dinámica de una instancia de Google Cloud Compute

Cuando contratamos un servicio en Google Cloud Platform y creamos una instancia de una máquina virtual decubrimos que nos dan una IP dinámica. Los costos de una IP estática son elevados en este proveedor de hosting (cobro por hora). La solución es utilizar algún proveedor de DNS de IPs dinámicas.

En este ejemplo vamos a utilizar el servicio que nos brinda NO-IP. Vamos a crear un dominio en esa página y luego vamos a apuntar el dominio real que queramos utilizar a este otro mediante un registro CNAME. Una vez creado el dominio en NO-IP, ponemos la IP temporal que tengamos en ese momento apuntando a ese dominio.

El paso siguiente consistirá en bajar el software cliente de NO-IP e instalarlo en nuestra VM de GCloud. Para ello nos vamos a la sección de descarga del cliente. Les dejo el link directo de la descarga asumiendo que la instancia tiene instalado un sistema operativo Linux:

https://www.noip.com/download?page=linux

Para descargarlo directamente en nuestra instancia y no tener que hacer un posterior upload al servidor de producción, podemos ejecutar los siguientes comandos:

$ wget https://www.noip.com/client/linux/noip-duc-linux.tar.gz
$ tar xvfz noip-duc-linux.tar.gz

Ahora procederemos con la instalación:

$ cd noip-2.1.9-1
$ make
$ sudo make install

    * (Paso opcional aquí: ir)

Finalmente ejecutamos el cliente que actualizará nuestra IP cada vez que esta cambie.

$ sudo /usr/local/bin/noip2

Ahora solo resta apuntar al dominio registrado en NO-IP el dominio final que queramos utilizar en producción. En este ejemplo, voy a usar uno gratuito registrado en Freenom, el cual es más estético que las opciones que nos brinda NO-IP. Primero, nos logueamos en Freenom y nos vamos a la sección Services  My Domains. Hacemos click en Manage Domain:


Ahora entramos en Manage Freenom DNS e ingresamos las siguientes entradas:


En este ejemplo appicar.ddns.net es el dominio registrado en NO-IP y appicar.tk, el de Freenom. Ustedes deberán reemplazar ahí por sus respectivos dominios.

Checkeamos que todo esté en orden:

$ dig www.appicar.tk


Como podemos observar, los dominios apuntan correctamente a sus respectivos blancos.

Aquí termina el tutorial básico. Si siguieron todos los pasos anteriores ya contarán con un servicio que les actualizará automáticamente el registro A del dominio que registraron en NO-IP.

Script de Logging

Durante el proceso de instalación nos preguntará si queremos ejecutar algún script cuando se realice la actualización de la IP. Yo creé un script que escribirá un log en /var/log/noip/log. Veamos el contenido del mismo:

# cat /usr/bin/noip-log

#!/bin/bash

echo $(date +"%Y-%m-%d %H:%M:%S") - IP updated: $(myip) >> /var/log/noip/log


Copien el contenido de noip-log a un archivo con el mismo nombre y denle permisos de ejecución:

# chmod +x /usr/bin/noip-log

Después tenemos que crear el archivo /usr/bin/myip que nos devolverá en la consola nuestra IP pública. Ponemos este código dentro del mismo:


#!/bin/bash

curl -s checkip.dyndns.org | sed -e 's/.*Current IP Address: //' -e 's/<.*$//'


Le damos permisos de ejecución:

# chmod +x /usr/bin/myip

Ahora lo vamos a ejecutar nosotros mismos para dejar registro de la IP actual:

# /usr/bin/noip-log
# cat /var/log/noip/log
2017-08-11 21:05:57 - IP updated: 35.196.20.137

3 comentarios:

  1. hola, sigo al pie de la letra lo que tu haces pero cuando le doy salvar me da error; Error occured: CNAME records should have a name set!

    ResponderEliminar
    Respuestas
    1. how to resolve Freenom 的 CNAME 记录系统存在一个错误,不允许添加没有名称的 CNAME 记录。

      Eliminar