DNS Server · 4 min read · Oct 01, 2025

Installazione e utilizzo del server di nomi Unbound su Debian Etch

Installazione e utilizzo del server di nomi Unbound su Debian Etch

Versione 1.0
Autore: Falko Timme

Unbound è un risolutore DNS validante, ricorsivo e in cache, rilasciato sotto licenza BSD. La versione 1.0.0 è stata rilasciata il 20 maggio 2008. Questo tutorial spiega come installarlo e utilizzarlo su Debian Etch, inclusa la creazione di zone per i propri domini.

Questo documento viene fornito senza alcuna garanzia! Voglio dire che questo non è l’unico modo per configurare un sistema del genere. Ci sono molti modi per raggiungere questo obiettivo, ma questo è il modo che seguo. Non rilascio alcuna garanzia che questo funzionerà per te!

1 Installazione di Unbound

Poiché non è ancora disponibile un pacchetto Debian, dobbiamo installare Unbound dai sorgenti. Prima installiamo i prerequisiti:

apt-get install build-essential libssl-dev

Poi scarichiamo e installiamo Unbound come segue:

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

Successivamente creiamo un utente e un gruppo chiamati unbound:

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

Utilizzeremo la directory /var/unbound come home directory del server di nomi Unbound - conterrà la configurazione di Unbound, e Unbound verrà eseguito in chroot per motivi di sicurezza.

Successivamente scarichiamo l’elenco dei server di nomi root:

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

Poi creiamo la directory /var/unbound/var/run che conterrà il file PID di Unbound, unbound.pid, e creiamo un symlink /var/run/unbound.pid ad esso:

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

Per avviare/arrestare/riavviare Unbound, abbiamo bisogno di uno script di init come questo:

vi /etc/init.d/unbound

| #!/bin/sh # # unbound Questo script shell si occupa di avviare e fermare # unbound (server 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 "$Starting $prog: " # setup root jail 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; # if not running, start it up here start-stop-daemon --start --quiet --pidfile $pidfile --exec $exec -- -c $config echo ;; stop) echo -n "$Stopping $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 "$Usage: $0 {start|stop|restart|reload|force-reload}" exit 2 ;; esac exit 0 |

Rendi lo script eseguibile e crea i collegamenti di avvio del sistema per esso:

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

Questo è tutto per l’installazione.

2 Configurazione di Unbound

Ora creiamo il file di configurazione di Unbound, /var/unbound/unbound.conf. Puoi trovare un file di configurazione di esempio in /tmp/unbound-1.0.0/doc/example.conf che contiene molte spiegazioni. Puoi anche visitare http://www.unbound.net/documentation/unbound.conf.html per saperne di più sulla configurazione di Unbound.

Nella seguente configurazione, aggiungo due zone per i domini (example.com e example.net) che voglio ospitare sul server di nomi Unbound. Se sei familiare con il server di nomi BIND, puoi apprendere rapidamente la sintassi di Unbound. Regola le zone secondo le tue esigenze, oppure lasciale fuori se hai bisogno solo di un risolutore locale:

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" |

Ho usato interface: 0.0.0.0 qui, il che significa che Unbound ascolta su tutte le interfacce di rete, e access-control: 0.0.0.0/0 allow, il che significa che chiunque può connettersi a Unbound. Se desideri che solo localhost possa connettersi, ad esempio, utilizzeresti

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

invece.

Per controllare se la sintassi della tua configurazione Unbound è corretta, puoi usare il comando unbound-checkconf:

unbound-checkconf /var/unbound/unbound.conf

server1:~# unbound-checkconf /var/unbound/unbound.conf
unbound-checkconf: nessun errore in /var/unbound/unbound.conf
server1:~#

Se la sintassi è corretta, puoi finalmente avviare Unbound:

/etc/init.d/unbound start

Per saperne di più su Unbound, ti preghiamo di fare riferimento alla documentazione di Unbound.

3 Link

Share: X/Twitter LinkedIn

Ricevi i nuovi post nella tua casella di posta.

Nessuno spam. Disiscriviti in qualsiasi momento.