Instalando el cliente NoIP en la Raspberry PI
NoIP es un sistema que nos permite tener un nombre público en Internet para identificar nuestra Raspberry Pi aunque tengamos una dirección IP dinámica. Esto es bastante útil si queremos conectarnos a ella y la dirección que nos proporciona nuestro proveedor suele cambiar a menudo.
Una vez que hemos creado nuestra cuenta en NoIP, vamos a la opción Add a Host y en el cuadro Host Information seleccionamos el nombre que queremos que tenga nuestra Raspberry Pi, por ejemplo pruebas.redirectme.net. La dirección IP que aparece en el cuadro es la IP pública que tenemos actualmente.
Una vez tenemos los datos puestos, hacemos clic en Add Host y ya tenemos la primera parte lista. Ahora vamos a instalar el software que cada X minutos comprobará nuestra IP pública y actualizará el registro DNS que acabamos de crear en el paso anterior para que podamos acceder desde cualquier lugar de Internet.
Con los siguientes comandos nos bajamos, compilamos e instalamos el cliente en nuestra RPi:
mkdir noip cd noip wget http://www.no-ip.com/client/linux/noip-duc-linux.tar.gz tar xvzf noip-duc-linux.tar.gz cd noip-2.1.9-1/ make sudo make install
Al ejecutar el último comando nos preguntará usuario, contraseña, el nombre del host que queremos que se actualice y el tiempo entre actualizaciones:
root@raspberrypi:~/noip/noip-2.1.9-1# sudo make install if [ ! -d /usr/local/bin ]; then mkdir -p /usr/local/bin;fi if [ ! -d /usr/local/etc ]; then mkdir -p /usr/local/etc;fi cp noip2 /usr/local/bin/noip2 /usr/local/bin/noip2 -C -c /tmp/no-ip2.conf Auto configuration for Linux client of no-ip.com. Please enter the login/email string for no-ip.com micorreo@servidor.com Please enter the password for user micorreo@servidor.com ************** 4 hosts are registered to this account. Do you wish to have them all updated?[N] (y/N) n Do you wish to have host [pruebas.redirectme.net] updated?[N] (y/N) y Please enter an update interval:[30] 15 Do you wish to run something at successful update?[N] (y/N) n New configuration file /tmp/no-ip2.conf created. mv /tmp/no-ip2.conf /usr/local/etc/no-ip2.conf
Ya lo tenemos instalado. Ahora nos queda crear un script para que se ejecute cada vez que se inicia el sistema. Para ello tenemos que crear el fichero /etc/init.d/noip2 con el siguiente contenido:
#!/bin/sh ### BEGIN INIT INFO # Provides: noip # Required-Start: $network # Required-Stop: # Should-Start: # Default-Start: 1 2 3 4 5 # Default-Stop: # Short-Description: Actualiza los registros DNS # Description: Actualiza los registros DNS de NoIP ### END INIT INFO DAEMON=/usr/local/bin/noip2 NOIP_ARGS="-c /usr/local/etc/no-ip2.conf" PATH=/sbin:/usr/sbin:/bin:/usr/bin:/usr/local/bin . /lib/lsb/init-functions case $1 in start) log_daemon_msg "Starting NoIP client" "noip2" start-stop-daemon --start --exec $DAEMON --quiet --oknodo --startas $DAEMON -- $NOIP_ARGS status=$? log_end_msg $status ;; stop) log_daemon_msg "Stopping NoIP client" "noip2" start-stop-daemon --stop --quiet --oknodo --exec $DAEMON log_end_msg $? ;; esac
Le damos permisos de ejecución y lo activamos para que se inicie con el sistema:
sudo chmod +x /etc/init.d/noip2 sudo update-rc.d noip2 defaults
Ya tenemos nuestro sistema preparado para acceder al él por Internet con el nombre que habíamos elegido 🙂 (activando el NAT en nuestro router, y redireccionando los puertos que nos interesen a nuestra RPi…)
Hola José Maria
Antes que nada darte las gracias por compartir tus avances en tu proyecto. Estoy enviando datos por un socket a mi raspberry ( emulando a un sensor) y me interesa Noip.
He creado el fichero /etc/init.d/noip2 con » sudo nano /etc/init.d/noip2 /. Copié y pegué tú código , dí permisos de ejecución y ejecute el último comando. Me aparece el siguiente error:
update-rc.d: using dependency based boot sequencing
update-rc.d: warning: default start runlevel arguments (2 3 4 5) do not match noip2 Default-Start values ( 1 2 3 4 5)
update-rc.d: warning: default stop runlevel arguments (0 1 6) do not match noip2 Default-Stop values ( )
insserv: Script noip2 is broken: incomplete LSB comment.
insserv: missing valid name for `Provides:’ please add.
¿ Podrías darme alguna orientación para solucionarlo?
Gracias de antemano
Si has copiado el script tal cual, debería funcionar. Por el error que te da, parece que sea alguna errata. Después del # debe haber solo un espacio en blanco. En pagina siguiente puedes encontrar cual es la estructura del fichero, https://wiki.debian.org/LSBInitScripts.
También puedes probar a copiar la cabecera de algún otro archivo de la carpeta /etc/init.d (como el /etc/init.d/atd, que es muy sencillo) y sustituir los valores por lo que pone en el de arriba.
Espero haberte ayudado algo, y muchisimas gracias por tu comentario 🙂