DNS Server · 4 min read · Oct 01, 2025

Instalación y uso del servidor de nombres Unbound en Debian Etch

Instalación y uso del servidor de nombres Unbound en Debian Etch

Versión 1.0
Autor: Falko Timme

Unbound es un resolvedor DNS validante, recursivo y en caché, lanzado bajo una licencia BSD. La versión 1.0.0 fue lanzada el 20 de mayo de 2008. Este tutorial explica cómo instalarlo y usarlo en Debian Etch, incluyendo la creación de zonas para sus propios dominios.

¡Este documento se proporciona sin garantía de ningún tipo! Quiero decir que esta no es la única forma de configurar un sistema así. Hay muchas maneras de lograr este objetivo, pero esta es la forma que elijo. No emito ninguna garantía de que esto funcione para usted.

1 Instalando Unbound

Debido a que aún no hay un paquete de Debian disponible, tenemos que instalar Unbound desde las fuentes. Primero instalamos los requisitos previos:

apt-get install build-essential libssl-dev

Luego descargamos e instalamos Unbound de la siguiente manera:

cd /tmp
wget http://www.unbound.net/downloads/unbound-latest.tar.gz
tar xvfz unbound-latest.tar.gz
cd unbound-1.0.0/
./configure
make
make install

A continuación, creamos un usuario y un grupo llamados unbound:

groupadd unbound
useradd -d /var/unbound -m -g unbound -s /bin/false unbound

Usaremos el directorio /var/unbound como el directorio principal del servidor de nombres Unbound; contendrá la configuración de Unbound, y Unbound se ejecutará en chroot en él por razones de seguridad.

A continuación, descargamos la lista de servidores de nombres raíz:

cd /var/unbound
wget ftp://ftp.internic.net/domain/named.cache

Luego creamos el directorio /var/unbound/var/run que contendrá el archivo PID de Unbound, unbound.pid, y creamos un enlace simbólico /var/run/unbound.pid a él:

mkdir -p /var/unbound/var/run
chown -R unbound:unbound /var/unbound
ln -s /var/unbound/var/run/unbound.pid /var/run/unbound.pid

Para iniciar/detener/reiniciar Unbound, necesitamos un script de inicio como este:

vi /etc/init.d/unbound

| #!/bin/sh # # unbound Este script de shell se encarga de iniciar y detener # unbound (servidor DNS). exec="/usr/local/sbin/unbound" prog="unbound" config="/var/unbound/unbound.conf" pidfile="/var/run/unbound.pid" rootdir="/var/unbound" case "$1" in start) [ -x $exec ] || exit 5 [ -f $config ] || exit 6 echo -n "$"Iniciando $prog: " # configurar la cárcel raíz if [ -s /etc/localtime ]; then [ -d ${rootdir}/etc ] || mkdir -p ${rootdir}/etc ; if [ ! -e ${rootdir}/etc/localtime ] || /usr/bin/cmp -s /etc/localtime ${rootdir}/etc/localtime; then cp -fp /etc/localtime ${rootdir}/etc/localtime fi; fi; if [ -s /etc/resolv.conf ]; then [ -d ${rootdir}/etc ] || mkdir -p ${rootdir}/etc ; if [ ! -e ${rootdir}/etc/resolv.conf ] || /usr/bin/cmp -s /etc/resolv.conf ${rootdir}/etc/resolv.conf; then cp -fp /etc/resolv.conf ${rootdir}/etc/resolv.conf fi; fi; if ! egrep -q '^/[^[:space:]]+[[:space:]]+'${rootdir}'/dev/log' /proc/mounts; then [ -d ${rootdir}/dev ] || mkdir -p ${rootdir}/dev ; [ -e ${rootdir}/dev/log ] || touch ${rootdir}/dev/log mount --bind -n /dev/log ${rootdir}/dev/log >/dev/null 2>&1; fi; if ! egrep -q '^/[^[:space:]]+[[:space:]]+'${rootdir}'/dev/random' /proc/mounts; then [ -d ${rootdir}/dev ] || mkdir -p ${rootdir}/dev ; [ -e ${rootdir}/dev/random ] || touch ${rootdir}/dev/random mount --bind -n /dev/random ${rootdir}/dev/random >/dev/null 2>&1; fi; # si no está en ejecución, inícielo aquí start-stop-daemon --start --quiet --pidfile $pidfile --exec $exec -- -c $config echo ;; stop) echo -n "$"Deteniendo $prog: " start-stop-daemon --stop --quiet --oknodo --pidfile $pidfile echo if egrep -q '^/[^[:space:]]+[[:space:]]+'${rootdir}'/dev/log' /proc/mounts; then umount ${rootdir}/dev/log >/dev/null 2>&1 fi; if egrep -q '^/[^[:space:]]+[[:space:]]+'${rootdir}'/dev/random' /proc/mounts; then umount ${rootdir}/dev/random >/dev/null 2>&1 fi; ;; restart) start-stop-daemon --stop --quiet --oknodo --pidfile $pidfile start-stop-daemon --start --quiet --pidfile $pidfile --exec $exec -- -c $config ;; reload) start-stop-daemon --stop --signal 1 --quiet --oknodo --pidfile $pidfile --exec $exec ;; force_reload) start-stop-daemon --stop --signal 1 --quiet --oknodo --pidfile $pidfile --exec $exec ;; *) echo "$"Uso: $0 {start|stop|restart|reload|force-reload}" exit 2 ;; esac exit 0 |

Haga que el script sea ejecutable y cree los enlaces de inicio del sistema para él:

chmod 755 /etc/init.d/unbound
update-rc.d unbound defaults

Eso es todo para la instalación.

2 Configurando Unbound

Ahora creamos el archivo de configuración de Unbound, /var/unbound/unbound.conf. Puede encontrar un archivo de configuración de muestra en /tmp/unbound-1.0.0/doc/example.conf que tiene muchas explicaciones. También puede visitar http://www.unbound.net/documentation/unbound.conf.html para aprender más sobre la configuración de Unbound.

En la siguiente configuración, añado dos zonas para dominios (example.com y example.net) que quiero alojar en el servidor de nombres Unbound. Si está familiarizado con el servidor de nombres BIND, puede aprender la sintaxis de Unbound muy rápido. Ajuste las zonas a sus necesidades, o déjelas fuera si solo necesita un resolvedor local:

vi /var/unbound/unbound.conf

| server: verbosity: 1 interface: 0.0.0.0 port: 53 do-ip4: yes do-ip6: yes do-udp: yes do-tcp: yes do-daemonize: yes access-control: 0.0.0.0/0 allow #access-control: 0.0.0.0/0 refuse #access-control: 127.0.0.0/8 allow chroot: "/var/unbound" username: "unbound" directory: "/var/unbound" use-syslog: yes pidfile: "/var/run/unbound.pid" root-hints: "/var/unbound/named.cache" local-zone: "example.com." static local-data: "example.com. 86400 IN NS ns1.hostingcompany.com." local-data: "example.com. 86400 IN NS ns2.hostingcompany.com." local-data: "example.com. 86400 IN SOA ns1.hostingcompany.com. hostmaster.hostingcompany.com. 2008052201 28800 7200 604800 86400" local-data: "example.com. 86400 IN A 1.2.3.4" local-data: "www.example.com. 86400 IN CNAME example.com." local-data: "mail.example.com. 86400 IN A 1.2.3.4" local-data: "example.com. 86400 IN MX 10 mail.example.com." local-data: "example.com. 86400 IN TXT v=spf1 a mx ~all" local-zone: "example.net." static local-data: "example.net. 86400 IN NS ns1.hostingcompany.com." local-data: "example.net. 86400 IN NS ns2.hostingcompany.com." local-data: "example.net. 86400 IN SOA ns1.hostingcompany.com. hostmaster.hostingcompany.com. 2008052201 28800 7200 604800 86400" local-data: "example.net. 86400 IN A 1.2.3.4" local-data: "www.example.net. 86400 IN CNAME example.net." local-data: "mail.example.net. 86400 IN A 1.2.3.4" local-data: "example.net. 86400 IN MX 10 mail.example.net." local-data: "example.net. 86400 IN TXT v=spf1 a mx ~all" |

He utilizado interface: 0.0.0.0 aquí, lo que significa que Unbound escucha en todas las interfaces de red, y access-control: 0.0.0.0/0 allow, lo que significa que cualquiera puede conectarse a Unbound. Si solo desea que localhost esté permitido para conectarse, por ejemplo, usaría

| [...] access-control: 0.0.0.0/0 refuse access-control: 127.0.0.0/8 allow [...] |

en su lugar.

Para verificar si la sintaxis de su configuración de Unbound es correcta, puede usar el comando unbound-checkconf:

unbound-checkconf /var/unbound/unbound.conf

server1:~# unbound-checkconf /var/unbound/unbound.conf
unbound-checkconf: no hay errores en /var/unbound/unbound.conf
server1:~#

Si la sintaxis es correcta, finalmente puede iniciar Unbound:

/etc/init.d/unbound start

Para aprender más sobre Unbound, consulte la documentación de Unbound.

3 Enlaces

Share: X/Twitter LinkedIn

Recibe nuevas publicaciones en tu bandeja de entrada.

No spam. Cancela la suscripción en cualquier momento.