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-devEm 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.confserver1:~# 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 startPara saber mais sobre o Unbound, consulte a documentação do Unbound.
3 Links
- Unbound: http://www.unbound.net/index.html
- Debian: http://www.debian.org
Receba novas postagens na sua caixa de entrada
Sem spam. Cancele a assinatura a qualquer momento.