Conectarnos desde fuera de la red con free-dns

Conectarnos desde fuera de la red con free-dns
Photo by Alina Grubnyak / Unsplash

Free-dns es un servicio gratuito con el que nos podremos conectar a nuestro ordenador desde fuera de la red. Lo uso para conectarme a una Rasperry Pi 4 que tengo en casa y le he instalado bastantes servicios.

  • Paso 1

Crear una cuenta en freeDNS

  • Paso 2

En el menú de la izquierda pinchar en subdomains > Add para crear uno nuevo

De esta manera la dirección sería http://lecheDeVaca.mooo.com, en Destination tienes que poner tu IP pública

  • Paso 3

En el menú DynamicDNS, abajo veremos los dominios creados. Hacemos botón derecho en Direct URL, pinchamos en copiar enlace, nos tendremos que quedar con lo que hay detrás de "?" . Será algo como https://freedns.afraid.org/dynamic/update.php?bmdMVTVo.....

  • Paso 4

Abrimos una terminal y creamos un script en Cron

sudo nano /etc/cron.d/free-dns.sh

copiamos este contenido:

#!/bin/sh
# freedns_update.sh: Update the public IP on freedns.afraid.org only if it has changed.
## Place this script in the cron's job directory /etc/cron.d and assign the proper permissions
## and owner
## sudo chmod 500 /etc/cron.d/freedns_update.sh
## sudo chown root:root /etc/cron.d/freedns_update.sh
## Add to /etc/crontab to execute on reboot and every 5 minutes
## Edit /etc/crontab and append these two lines:
## @reboot root /etc/cron.d/freedns_update.sh >/dev/null
## */5 * * * * root /etc/cron.d/freedns_update.sh >/dev/null

#Use your own values
DOMAIN=raspberry.liar.info.tm
HASHKEY=c29Q2s1Ml9df604bba2b1359ff62MTEyMT185e7=

UPDATE_URL="http://freedns.afraid.org/dynamic/update.php?${HASHKEY}"

current_ip=$(wget -q --output-document - http://checkip.dyndns.org | grep -o '[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}')
registered_ip=$(ping -qn -c 1 $DOMAIN | head -n 1 | grep -o '[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}')

if [ "${current_ip}" != "${registered_ip}" ]; then  
   wget -q --read-timeout=0.0 --waitretry=5 --tries=400 --output-document /dev/null $UPDATE_URL
   if [ $? -eq 0 ]; then
     echo "$(date +"%b %_d %T") $(hostname) $0: IP address updated on freedns.afraid.org: new IP '${current_ip}', old IP '${registered_ip}'" >> /var/log/messages
   else    
     echo "$(date +"%b %_d %T") $(hostname) $0: ERROR IP address could not be  updated on freedns.afraid.org: current IP '${current_ip}', registered IP '${registered_ip}'" >> /var/log/messages
   fi
fi

Tenemos que cambiar:

DOMAIN=lecheDeVaca.mooo.com
HASKEY=Por lo que hay despues de *"?"* en *Direct URL*

Damos permisos de ejecución al archivo

sudo chmod 555 /etc/cron.d/free-dns.sh
  • Paso 5

Hay que programar la tarea, para eso:

sudo nano /etc/crontab

Al final del archivo añadimos

@reboot		root	/etc/cron.d/free-dns.sh>/dev/null
*/5 * * * *	root	/etc/cron.d/free-dns.sh>/dev/null

Es muy importante abrir los puertos 80 y 443 en el router para que se conecte fuera la tarea y para que vuelva la información.

Ahora ejecutamos

sudo /etc/init.d/cron restart

Se debe actualizar nuestra IP al ejecutarlo

Visto en fororaspberry.es

Salu2

Document