dnsmasq es un servidor DNS y por tanto debería estar siempre arrancado, para responder a las peticiones de resolución de nombres precedentes del resto de máquinas.
La instalación en Alpine Linux no configura el servicio de dnsmasq para iniciar durante el arranque del sistema, por lo que debe iniciarse manualmente.
Esta no es la configuración que queremos, así que vamos a corregirla.
Comprobar si un servicio está arrancado en Alpine Linux
El primer paso es averiguar si un servicio está levantado o no; en Alpine Linux lo conseguimos mediante el comando service
:
# service dnsmasq status
Comprobar si el servicio autoarranca
Podemos averiguar qué servicios arrancan durante el inicio del sistema mediante el comando rc-status --all
; el comando muestra los servicios que arrancan en cada uno de los runlevels (ver Alpine Linux Init System: rc-status usage).
dns:~# rc-status -a
Runlevel: shutdown
savecache [ stopped ]
killprocs [ stopped ]
mount-ro [ stopped ]
Runlevel: nonetwork
Runlevel: default
qemu-guest-agent [ started ]
sshd [ started ]
acpid [ started ]
crond [ started ]
Runlevel: boot
modules [ started ]
hwclock [ started ]
swap [ started ]
urandom [ started ]
hostname [ started ]
sysctl [ started ]
bootmisc [ started ]
syslog [ started ]
networking [ started ]
loadkmap [ started ]
Runlevel: sysinit
devfs [ started ]
dmesg [ started ]
mdev [ started ]
hwdrivers [ started ]
Dynamic Runlevel: hotplugged
Dynamic Runlevel: needed/wanted
sysfs [ started ]
fsck [ started ]
root [ started ]
localmount [ started ]
Dynamic Runlevel: manual
Como vemos, dnsmasq no aparece listado en ningún runlevel.
Incluir un servicio en el proceso de arranque
Para incluir un servicio para lograr que se inicie durante el proceso de arranque, usamos el comando rc-update add
.
dns:~# rc-update add dnsmasq
* service dnsmasq added to runlevel default
Como no indicamos el runlevel en el que queremos agregar el servicio, se añade a la lista de servicios que arrancan en el runlevel por defecto.
Si ahora comprobamos los servicios de nuevo:
dns:~$ rc-status
Runlevel: default
dnsmasq [ started ]
qemu-guest-agent [ started ]
sshd [ started ]
acpid [ started ]
crond [ started ]
Dynamic Runlevel: hotplugged
Dynamic Runlevel: needed/wanted
sysfs [ started ]
fsck [ started ]
root [ started ]
localmount [ started ]
Dynamic Runlevel: manual
Ahora sólo quedaría reiniciar la máquina del DNS para validar que el servicio arrancará automáticamente durante el arranque.
La historia detraś de esta entrada
Después de instalar dnsmasq no me di cuenta de que no se había añadido a la lista de servicios que arrancan con el sistema.
Como sólo uso las máquinas de laboratorio para realizar pruebas, no había notado que tenían problemas para resolver direcciones hasta que he intentado actualizar el propio servidor de laboratorio.
Al lanzar un sudo apt update
desde la máquina he visto que no podía contactar con los repositorios de paquetes y a partir de aquí he ido “tirando del hilo” hasta descubrir que dnsmasq estaba parado.
Afortunadamente, en vez de empezar a buscar las causas de porqué se estaba parando el servicio, he empezado por las opciones básicas: mirar en primer lugar si está configurado para autoarrancar.
En su momento, al instalar dnsmasq debería haberlo comprobado pero, bueno, estas cosas pasan… ¯\_(ツ)_/¯