DNS Server · 4 min read · Oct 01, 2025

Instalando E Usando O Servidor De Nomes Unbound No Debian Etch

Instalando E Usando O Servidor De Nomes Unbound No Debian Etch

Versão 1.0
Autor: Falko Timme

Unbound é um resolvedor DNS validante, recursivo e em cache, lançado sob uma licença BSD. A versão 1.0.0 foi lançada em 20 de maio de 2008. Este tutorial explica como instalá-lo e usá-lo no Debian Etch, incluindo a criação de zonas para seus próprios domínios.

Este documento vem sem garantia de qualquer tipo! Quero dizer que esta não é a única maneira de configurar um sistema assim. Existem muitas maneiras de alcançar esse objetivo, mas este é o caminho que eu sigo. Não dou garantia de que isso funcionará para você!

1 Instalando o Unbound

Como ainda não há um pacote Debian disponível, precisamos instalar o Unbound a partir das fontes. Primeiro, instalamos os pré-requisitos:

apt-get install build-essential libssl-dev

Em seguida, baixamos e instalamos o Unbound da seguinte forma:

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

Em seguida, criamos um usuário e grupo chamados unbound:

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

Usaremos o diretório /var/unbound como o diretório home do servidor de nomes Unbound - ele conterá a configuração do Unbound, e o Unbound será executado chrooted nele por razões de segurança.

Em seguida, baixamos a lista de servidores de nomes raiz:

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

Então, criamos o diretório /var/unbound/var/run que conterá o arquivo PID do Unbound, unbound.pid, e criamos um symlink /var/run/unbound.pid para ele:

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/parar/reiniciar o Unbound, precisamos de um script init como este:

vi /etc/init.d/unbound

| #!/bin/sh # # unbound Este script shell cuida de iniciar e parar # 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 jaula raiz 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; # se não estiver em execução, inicie-o aqui start-stop-daemon --start --quiet --pidfile $pidfile --exec $exec -- -c $config echo ;; stop) echo -n "$"Parando $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 |

Torne o script executável e crie os links de inicialização do sistema para ele:

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

É isso para a instalação.

2 Configurando o Unbound

Agora criamos o arquivo de configuração do Unbound, /var/unbound/unbound.conf. Você pode encontrar um arquivo de configuração de exemplo em /tmp/unbound-1.0.0/doc/example.conf que tem muitas explicações. Você também pode visitar http://www.unbound.net/documentation/unbound.conf.html para saber mais sobre a configuração do Unbound.

Na configuração a seguir, adiciono duas zonas para domínios (example.com e example.net) que quero hospedar no servidor de nomes Unbound. Se você está familiarizado com o servidor de nomes BIND, pode aprender a sintaxe do Unbound muito rapidamente. Ajuste as zonas conforme suas necessidades ou deixe-as de fora se você só precisar de um 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" |

Usei interface: 0.0.0.0 aqui, o que significa que o Unbound escuta em todas as interfaces de rede, e access-control: 0.0.0.0/0 allow, o que significa que qualquer um pode se conectar ao Unbound. Se você só quiser que o localhost seja permitido se conectar, por exemplo, você usaria

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

em vez disso.

Para verificar se a sintaxe da sua configuração do Unbound está correta, você pode usar o comando unbound-checkconf:

unbound-checkconf /var/unbound/unbound.conf

server1:~# unbound-checkconf /var/unbound/unbound.conf
unbound-checkconf: no errors in /var/unbound/unbound.conf
server1:~#

Se a sintaxe estiver ok, você pode finalmente iniciar o Unbound:

/etc/init.d/unbound start

Para saber mais sobre o Unbound, consulte a documentação do Unbound.

3 Links

Share: X/Twitter LinkedIn

Receba novas postagens na sua caixa de entrada

Sem spam. Cancele a assinatura a qualquer momento.