DNS-Server · 4 min read · Oct 01, 2025
Installation und Verwendung des Unbound Name Servers auf Debian Etch
Installation und Verwendung des Unbound Name Servers auf Debian Etch
Version 1.0
Autor: Falko Timme
Unbound ist ein validierender, rekursiver und zwischenspeichernder DNS-Resolver, der unter einer BSD-Lizenz veröffentlicht wurde. Version 1.0.0 wurde am 20. Mai 2008 veröffentlicht. Dieses Tutorial erklärt, wie man es auf Debian Etch installiert und verwendet, einschließlich der Erstellung von Zonen für eigene Domains.
Dieses Dokument kommt ohne jegliche Gewährleistung! Ich möchte sagen, dass dies nicht der einzige Weg ist, ein solches System einzurichten. Es gibt viele Möglichkeiten, dieses Ziel zu erreichen, aber dies ist der Weg, den ich wähle. Ich gebe keine Garantie, dass dies für Sie funktionieren wird!
1 Installation von Unbound
Da es noch kein Debian-Paket gibt, müssen wir Unbound aus den Quellen installieren. Zuerst installieren wir die Voraussetzungen:
apt-get install build-essential libssl-devDann laden wir Unbound herunter und installieren es wie folgt:
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
Als nächstes erstellen wir einen Benutzer und eine Gruppe namens unbound:
groupadd unbound
useradd -d /var/unbound -m -g unbound -s /bin/false unbound
Wir verwenden das Verzeichnis /var/unbound als das Home-Verzeichnis des Unbound-Name-Servers - es wird die Unbound-Konfiguration enthalten, und Unbound wird aus Sicherheitsgründen chrooted darin ausgeführt.
Als nächstes laden wir die Liste der Root-Name-Server herunter:
cd /var/unbound
wget ftp://ftp.internic.net/domain/named.cache
Dann erstellen wir das Verzeichnis /var/unbound/var/run, das die Unbound PID-Datei, unbound.pid, enthalten wird, und erstellen einen Symlink /var/run/unbound.pid zu ihm:
mkdir -p /var/unbound/var/run
chown -R unbound:unbound /var/unbound
ln -s /var/unbound/var/run/unbound.pid /var/run/unbound.pid
Um Unbound zu starten/stoppen/neustarten, benötigen wir ein Init-Skript wie dieses:
vi /etc/init.d/unbound| #!/bin/sh # # unbound Dieses Shell-Skript kümmert sich um das Starten und Stoppen # von unbound (DNS-Server). 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: " # Root-Jail einrichten 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; # Wenn nicht läuft, hier starten 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 |
Machen Sie das Skript ausführbar und erstellen Sie die Systemstartlinks dafür:
chmod 755 /etc/init.d/unbound
update-rc.d unbound defaults
Das war’s mit der Installation.
2 Konfiguration von Unbound
Jetzt erstellen wir die Unbound-Konfigurationsdatei, /var/unbound/unbound.conf. Sie finden eine Beispielkonfigurationsdatei in /tmp/unbound-1.0.0/doc/example.conf, die viele Erklärungen enthält. Sie können auch http://www.unbound.net/documentation/unbound.conf.html besuchen, um mehr über die Unbound-Konfiguration zu erfahren.
In der folgenden Konfiguration füge ich zwei Zonen für Domains (example.com und example.net) hinzu, die ich auf dem Unbound-Name-Server hosten möchte. Wenn Sie mit dem BIND-Name-Server vertraut sind, können Sie die Unbound-Syntax sehr schnell lernen. Passen Sie die Zonen an Ihre Bedürfnisse an oder lassen Sie sie weg, wenn Sie nur einen lokalen Resolver benötigen:
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" |
Ich habe hier interface: 0.0.0.0 verwendet, was bedeutet, dass Unbound auf allen Netzwerkinterfaces lauscht, und access-control: 0.0.0.0/0 allow, was bedeutet, dass jeder sich mit Unbound verbinden kann. Wenn Sie nur localhost erlauben möchten, sich zu verbinden, würden Sie beispielsweise verwenden
| [...] access-control: 0.0.0.0/0 refuse access-control: 127.0.0.0/8 allow [...] |
stattdessen.
Um zu überprüfen, ob die Syntax Ihrer Unbound-Konfiguration korrekt ist, können Sie den Befehl unbound-checkconf verwenden:
unbound-checkconf /var/unbound/unbound.confserver1:~# unbound-checkconf /var/unbound/unbound.conf
unbound-checkconf: keine Fehler in /var/unbound/unbound.conf
server1:~#
Wenn die Syntax in Ordnung ist, können Sie schließlich Unbound starten:
/etc/init.d/unbound startUm mehr über Unbound zu erfahren, konsultieren Sie bitte die Unbound-Dokumentation.
3 Links
- Unbound: http://www.unbound.net/index.html
- Debian: http://www.debian.org
Erhalte neue Beiträge in deinem Posteingang.
Kein Spam. Jederzeit abmelden.