Tras recibir un correo de Dyn en el que me anuncia que próximamente finaliza el servicio de DNS dinámica gratuito, me he puesto manos a la obra y he sustituido esta función utilizando la aplicación dinaIP de Dinahosting.
Aquí os dejo el minitutorial de cómo reemplazar nuestro servicio de DNS dinámico con la aplicación dinaIP y una Raspberry Pi por si a alguien le resulta útil.
Índice de contenidos
¿Qué necesitamos?
- Raspberry Pi (si no la tenemos, bastaría con el modelo A, más económico pero con menos RAM)
- Una tarjeta SD (rápida y de al menos 2GB, aunque te recomiendo que sea mínimo de 4) con Raspbian instalada (un tutorial)
- La aplicación de dinaIP que podemos descargar en Dinahosting
- Un nombre de dominio
¿Cómo?
Accedemos por SSH a nuestra raspberry y nos hacemos root:
pi@raspberry ~ $ sudo su - [sudo] password for pi: root@raspberry:~#
Descargamos la aplicación de dinaIP para consola y descomprimios el fichero resultante de la descarga:
root@raspberry:~# wget https://dinahosting.com/utilidades/estandar/aplicaciones/dinaIP-consola.tar.gz&& tar xzpf dinaIP-consola.tar.gz
Nos situamos en la carpeta descomprimida y ejecutamos el instalador
root@raspberry:~# cd dinaIP-consola/ root@raspberry:~/dinaIP-consola# sh install.sh root@raspberry:
Iniciamos el demonio de dinaIP de forma manual, con nuestro usuario y contraseña de acceso a los paneles:
root@raspberry:~# dinaip -u mi_usuario_molon -p ******
Añadimos nuestro dominio y la zona que queremos utilizar con dinaIP:
root@raspberry:~# dinaip -a example.com:example1
Con esto habremos iniciado el demonio de dinaIP que mantendrá nuestra IP dinámica actualizada en example1.example.com, pero tendremos que lanzarlo de forma manual cada vez que reiniciemos nuestra Raspberry, lo que nos lleva al siguiente punto…
Un poco de magia con init.d y update-rc.d
Para evitar tenemos que lanzar de forma manual cada vez que reiniciemos nuestra Raspberry vamos a hacer que el servicio se inicie de forma automática en cada arranque.
Empezaremos creando un fichero «/etc/init.d/dinaip» con el contenido que podemos ver en este gist (recordad configurar vuestra ID y contraseña) y le daremos permisos de ejecución:
root@raspberry:~# chmod +x /etc/init.d/dinaip
Ahora ya podemos arrancar y detener el servicio con el comando service, pero sigue sin iniciarse de forma automática, para esto tendremos que ejecutar estos 2 comandos (como root):
root@raspberry:~# update-rc.d dinaip defaults root@raspberry:~# update-rc.d dinaip enable
Y listo, ya tenemos nuestro servicio de DNS dinámico funcionando y arrancando de forma automatica en cada inicio.
Configurar la rotación automática de logs
Como los log de dinaIP son bastante detallados y el espacio de mi SD es limitado, ha sido necesario buscar la forma de rotar estos logs, de forma fácil, rápida y que no haga fallar la escritura los mismos…
Por suerte, Raspbian (como Debian y la mayoría de distribuciones Linux) cuenta con logrotate, que nos permite configurar la rotación automática de los ficheros de log.
Creando un fichero de configuración para logrotate
Configurar logrotate es muy fácil, basta con crear un fichero de configuración dentro del directorio «/etc/logrotate.d/’, llamado, por ejemplo dinaip. Yo lo he configurado con las siguientes opciones:
– Conservar logs de los últimos 7 días
– Rotación diaria
– Copiar y truncar el fichero actual
– Comprimir el log antiguo
– Pasar al siguiente fichero si la rotación falla
– No rotar si está en blanco
Puedes consultar el contenido del fichero de configuración aquí
Con esto solucionamos los posibles problemas de espacio si el log crece demasiado, de modo que ahora no tenemos que preocuparnos por el tamaño del mismo.
Listo! Nuestro servicio de DNS dinámico, arrancando en cada inicio y sin problemas de espacio está funcionando.
9 comentarios
Hola buenas
Al intentar logarme con la cuenta me marca este error
Can’t locate LWP/Simple.pm in @INC (@INC contains: /etc/perl /usr/local/lib/perl/5.14.2 /usr/local/share/perl/5.14.2 /usr/lib/perl5 /usr/share/perl5 /usr/lib/perl/5.14 /usr/share/perl/5.14 /usr/local/lib/site_perl . /opt/dinaip) at /opt/dinaip/Proceso.pm line 12.
BEGIN failed–compilation aborted at /opt/dinaip/Proceso.pm line 12.
Compilation failed in require at /usr/sbin/dinaip line 15.
BEGIN failed–compilation aborted at /usr/sbin/dinaip line 15.
No se si me podeis echar un cable! un saludo
Y para configurarlo sobre systemd? Llevo un rato tratando de arrancarlo y de momento nada
Hola Jose,
dinaIP en consola necesita la librería LWP::Simple. En distribuciones
basadas en debian está incluido en el paquete libwww-perl, que se puede
instalar con uno de los siguientes comandos:
-> apt-get install libwww-perl
-> aptitude install libwww-perl
Estos comandos han de ejecutarse como root o con un usuario que pueda hacer sudo. Por ejemplo, con el usuario pi en raspbian (usuario por defecto) se instalaría con cualquiera de los siguientes comandos:
-> sudo apt-get install libwww-perl
-> sudo aptitude install libwww-perl
Hola Guille
Para crear el script de inicio a través de system.d (en este caso solo tiene opciones para iniciar y detener el servicio)
se muestra en este gist (con nuestro usuario y clave): https://gist.github.com/vrdominguez/bc13a3859dfd2243f9ce
systemctl daemon-reload
systemctl enable dinaip.service
Listo,
ya podemos gestinoar dinaip con systemctl y se auto-inicia al iniciar
la máquina.
¿Alguien intentó configurar dinaIP en un router cisco?
Hola Carlos, ¿nos puedes indicar con qué problemas te encuentras en la configuración?
Llámanos o facilítanos un método de contacto y te echamos un cable en lo que necesites.
Un saludo 🙂
Mil millones de gracias. Al cambiar de router he tenido que volver a configurar precisamente esto y lo he tenido listo en dos minutos. He aprovechado para instalarlo en mi raspberry pi con pi-hole.
Sugerencia: Este tutorial es de 2014, podriais actualizarlo con lo que hay en los comentarios para los mas novatos.
Hola Iván,
Muchas gracias por leernos. Tomamos buena nota de tu sugerencia 🙂
Que tengas un buen día.
Hola Iván,
Tal y como nos has sugerido, hemos actualizado el tutorial 🙂 Aquí lo tienes https://blog.dinahosting.com/raspberry-pi-dinaip-tutorial-actualizado/
Esperamos que te sea de utilidad.
Saludos 😉