Probablemente no sea el primero en hacer esto, pero necesitaba usar el servicio DNS dinámico de NO-IP para poder configurar fácilmente dispositivos y computadoras para acceder a los recursos de mi LAN cuando estoy fuera. Para aquellos menos familiarizados con NO-IP, es un servicio DNS dinámico gratuito. La mayoría de las conexiones a Internet en hogares y pequeñas oficinas tienen una IP dinámica, lo que significa que las direcciones IP cambian más cada vez que se establece la conexión desde el enrutador. Normalmente, un nombre de dominio requiere una dirección IP estática para funcionar. El DNS dinámico permite que un nombre de dominio (es decir, subdominio.ejemplo.com) utilice una IP dinámica actualizando NO-IP con una nueva dirección IP cuando la dirección IP cambia. Luego, NO-IP asocia esa IP con el nombre de dominio para que los servicios se puedan configurar en el dominio en lugar de en la IP que cambia. Esto facilita la configuración de las cosas.
Muchos enrutadores tienen un cliente NO-IP incorporado, pero mi enrutador no admite NO-IP y, por alguna razón, nunca pude lograr que funcionara el cliente que NO-IP recomendaba para un host Linux. Descargué la fuente y la compilé siguiendo las instrucciones y parecía estar ejecutándose, pero nunca actualizó mi dirección IP. No hubo resultados en la consola ni en un archivo de registro para diagnosticar el problema que pude encontrar, así que decidí escribir el mío propio, lo cual realmente no fue tan difícil de hacer usando un script bash y algunas utilidades simples. en mi caja de Linux. Aquí está mi guía práctica y documentación para configurar esto. Estoy ejecutando el servidor Ubuntu, así que estoy usando apt y nano, pero esto debería funcionar en cualquier dispositivo basado en POSIX, como Mac OS X, BSD, cualquier versión de Linux, incluso Raspberry Pi.
El script se puede ejecutar como una instancia única con parámetros de línea de comando, como un demonio, usando crontabs (una utilidad para ejecutar programas según una programación) o como un servicio de Linux.
Este script tiene una dependencia, que es wget. Por lo general, esto se instala de forma predeterminada en la mayoría de las distribuciones de Linux y BSD, pero si no, use su administrador de paquetes para instalarlo.
sudo apt-get install wget
-o-
sudo yum install wget
no-ip.sh -u=username -p=password -h=host.sample.com -d=true -l=/path/to/logfile.log
Parámetros:
-u, --username
Nombre de usuario para iniciar sesión en no-ip.com.
-p, --password
Contraseña para iniciar sesión en no-ip.com.
-h, --hostname
El nombre de dominio a actualizar.
-d, --detectip
Le indica al script que detecte su dirección IP externa. Esto tiene prioridad sobre -i.
-i, --ip
Maually configura la dirección IP para actualizar. Si no se especifica ni -d ni -i, no-ip utilizará la dirección IP que detecte.
-n, --interval
Al ejecutar el script como demonio/servicio (consulte Instalación), esto actualizará no-ip cada n minutos.
-l, --logfile
Establece la ruta a un archivo de registro. Este archivo debe poder escribirse.
-c, --config
Establece la ruta a un archivo de configuración. Este archivo debe ser legible. Los parámetros del archivo de configuración tienen prioridad sobre los parámetros de la línea de comando.
no-ip.sh
Ejecuta el script con la configuración en el archivo de configuración en la ubicación predeterminada /etc/no-ip/no-ip.conf
no-ip.sh -u=username -p=password -h=host.sample.com -d=true -l=/path/to/logfile.log
Realiza una actualización única, detecta el UP y registra los resultados.
no-ip.sh -c=/home/username/no-ip.conf
Ejecute el script con la configuración en el archivo de configuración.
no-ip.sh /dev/null 2>&1 &
Ejecuta el script como un demonio con la configuración del archivo de configuración en la ubicación predeterminada /etc/no-ip/no-ip.conf.
El archivo de configuración utiliza una sintaxis simple para definir parámetros. Cualquier parámetro de línea de comando (excepto --config) también se puede especificar en el archivo de configuración. Se aplican las mismas reglas para los parámetros del archivo de configuración que para los parámetros de la línea de comando (es decir, "detectip" anula "ip" si se especifican ambos).
Ejemplo:
user=username
password=password
hostname=hostname.example.com
logfile=/var/log/no-ip.log
interval=10
detectip=true
Antes de instalar el script, descargue y extraiga los archivos a su máquina local. Las instrucciones asumen que se encuentra en la carpeta no-ip-master.
cd ~
wget https://github.com/theonemule/no-ip/archive/master.zip
unzip master.zip
cd no-ip-master
Método 1: crontabs
Crontabs le permite especificar una programación para ejecutar el script y también ejecutará el script como el usuario para el que está configurado el crontab. Asegúrese de que el usuario tenga permisos de ejecución en el script, permisos de lectura en el archivo de configuración y permisos de escritura en el archivo de registro. Crontabs ejecutará el script de forma programada, por lo que no es necesario especificar un intervalo.
A continuación se explica cómo ejecutar el script como root.
1.) Crea una carpeta en etc.
sudo mkdir /etc/no-ip
2.) Cree un archivo de configuración.
sudo touch /etc/no-ip/no-ip.conf
3.) Establece los parámetros con tu editor favorito. Yo uso nano. Consulte la sección Archivo de configuración anterior para obtener más detalles.
sudo nano /etc/no-ip/no-ip.conf
user=username
password=password
hostname=hostname.example.com
logfile=/var/log/no-ip.log
detectip=true
4.) Copie no-ip.sh a /usr/sbin
sudo cp no-ip.sh /usr/sbin/no-ip.sh
5.) Hacer ejecutable el script
sudo chmod +x /usr/sbin/no-ip.sh
6.) Inicie sesión como root
sudo -i
7.) Editar el crontab de root
crontab -e
8.) Agregue la entrada al final. */10 le dice a crontab que ejecute el script cada vez que la hora actual sea divisible por 10, o cada 10 minutos y guarde el crontab.
*/10 * * * * /usr/sbin/no-ip.sh
Método 2: Servicio Linux (escrito para distribuciones basadas en Debian. Esto variará para otras distribuciones)
Asegúrese de que root tenga permisos de ejecución en el script, permisos de lectura en el archivo de configuración y permisos de escritura en el archivo de registro.
1.) Cree una carpeta en /etc.
sudo mkdir /etc/no-ip
2.) Cree un archivo de configuración.
sudo touch /etc/no-ip/no-ip.conf
3.) Establece los parámetros con tu editor favorito. Yo uso nano. Consulte la sección Archivo de configuración anterior para obtener más detalles.
sudo nano /etc/no-ip/no-ip.conf
user=username
password=password
hostname=hostname.example.com
logfile=/var/log/no-ip.log
interval=10
detectip=true
4.) Copie no-ip.sh a /usr/sbin
sudo cp no-ip.sh /usr/sbin/no-ip.sh
5.) Hacer ejecutable el script
sudo chmod +x /usr/sbin/no-ip.sh
6.) Copie no-ip-service a init.d
sudo cp no-ip-service /etc/init.d/no-ip-service
7.) Hacer ejecutable el servicio no-ip
sudo chmod +x /etc/init.d/no-ip-service
8.) Iniciar el servicio
sudo service no-ip-service start
9.) Agregue el servicio para comenzar en el arranque.
update-rc.d no-ip-service defaults