DNS Setup · 6 min read · Nov 27, 2025

Perfekte DjbDNS-Einrichtung auf Ubuntu Server 8.04 (amd64) Hardy

Perfekte DjbDNS-Einrichtung auf Ubuntu Server 8.04 (amd64) Hardy

DjbDNS ist eine Sammlung von Tools für das Domain Name System. Es umfasst Software für alle grundlegenden DNS-Operationen:

DNS-Cache: Adressen von Internet-Hosts finden. Wenn ein Browser www.hotwired.com kontaktieren möchte, fragt er zuerst einen DNS-Cache, wie den dnscache von djbdns, um die IP-Adresse von www.hotwired.com zu finden. Internetdienstanbieter betreiben dnscache, um IP-Adressen zu finden, die von ihren Kunden angefordert werden. Wenn Sie einen Heimcomputer oder einen Arbeitsplatz betreiben, können Sie Ihren eigenen dnscache ausführen, um Ihr Surfen im Internet zu beschleunigen.

DNS-Server: Adressen von Internet-Hosts veröffentlichen. Die IP-Adresse von www.hotwired.com wird von den DNS-Servern von HotWired veröffentlicht. djbdns umfasst einen allgemeinen DNS-Server, tinydns; Netzwerkadministratoren betreiben tinydns, um die IP-Adressen ihrer Computer zu veröffentlichen. djbdns umfasst auch spezielle Server zur Veröffentlichung von DNS-Walls und RBLs.

DNS-Client: Mit einem DNS-Cache kommunizieren. djbdns enthält eine DNS-Client-C-Bibliothek und mehrere Befehlszeilen-DNS-Client-Dienstprogramme. Programmierer verwenden diese Tools, um Anfragen an DNS-Caches zu senden.

DjbDNS umfasst auch mehrere DNS-Debugging-Tools, insbesondere dnstrace, das Administratoren verwenden, um falsch konfigurierte Remote-Server zu diagnostizieren.

Sicherheitsmerkmale:

  • dnscache läuft als dedizierte Non-Root-UID innerhalb eines chroot-Gefängnisses, sodass es den Rest der Maschine nicht berühren kann.
  • tinydns läuft als eine weitere dedizierte Non-Root-UID innerhalb seines eigenen chroot-Gefängnisses.
  • walldns läuft als eine weitere dedizierte Non-Root-UID innerhalb seines eigenen chroot-Gefängnisses.
  • dnscache verwirft DNS-Anfragen von außerhalb einer bestimmten Liste von IP-Adressen.
  • dnscache und die DNS-Bibliothek verwenden eine neue Abfrage-ID und einen neuen UDP-Port für jedes Abfragepaket. Sie verwerfen DNS-Antworten von jeder IP-Adresse, die nicht diejenige ist, an die die entsprechende Abfrage gerade gesendet wurde.
  • dnscache verwendet einen kryptografischen Generator, um unvorhersehbare Portnummern und IDs auszuwählen.
  • dnscache ist immun gegen Cache-Poisoning.

tinydns speichert keine Informationen im Cache. Es unterstützt keine Rekursion.

Vorinstallation

apt-get install build-essential  
mkdir /tmp/downloads  
cd $_  
wget -c  HYPERLINK "http://www.thedjbway.org/patches/djb_errno_patches.tgz" http://www.thedjbway.org/patches/djb_errno_patches.tgz  
tar -zxvf djb_errno_patches.tgz  
wget -c   HYPERLINK "http://cr.yp.to/daemontools/daemontools-0.76.tar.gz" http://cr.yp.to/daemontools/daemontools-0.76.tar.gz  
wget -c  HYPERLINK "http://cr.yp.to/ucspi-tcp/ucspi-tcp-0.88.tar.gz" http://cr.yp.to/ucspi-tcp/ucspi-tcp-0.88.tar.gz  
wget -c  HYPERLINK "http://cr.yp.to/djbdns/djbdns-1.05.tar.gz" http://cr.yp.to/djbdns/djbdns-1.05.tar.gz

Installieren Sie alle Pakete

a. Installieren Sie ucspi-tcp-src:

cd /tmp/downloads  
tar -zxvf ucspi-tcp-0.88.tar.gz  
cd ucspi-tcp-0.88  
patch -p1 < /tmp/downloads/ucspi-tcp-0.88.errno.patch  
make  
make setup check

b. daemontools

cd /tmp/downloads  
tar -zxvf  daemontools-0.76.tar.gz  
cd admin/daemontools-0.76/  
touch /etc/inittab  
patch -p1 < /tmp/downloads/daemontools-0.76.errno.patch  
package/install
vi /etc/event.d/svscan
# svscan - daemontools

start on runlevel 2
start on runlevel 3
start on runlevel 4
start on runlevel 5
stop on runlevel 0
stop on runlevel 1
stop on runlevel 6

respawn
exec /command/svscanboot

Dieser Installer erstellt nur Links zu allen svscan-Befehlen in /command, also ist es besser, diese zu kopieren:

cd /command  
rm -rf *  
cp /tmp/downloads/admin/daemontools/command/* /command/

Das ist alles… dann (Sie müssen möglicherweise neu starten) …

initctl start svscan

c. djbdns

cd /tmp/downloads  
tar -zxvf djbdns-1.05.tar.gz  
cd djbdns-1.05  
echo gcc -O2 -include /usr/include/errno.h > conf-cc   
make  
make setup check

Pakete konfigurieren

Benutzer erstellen (falls sie nicht automatisch erstellt wurden):

adduser --no-create-home --disabled-login --shell /bin/false dnscache  
adduser --no-create-home --disabled-login --shell /bin/false dnslog  
adduser --no-create-home --disabled-login --shell /bin/false tinydns

Konfigurieren Sie dnscache:

In unserem Szenario benötigen wir jeden Master- und Slave-Server als sowohl “autorisierend” als auch “caching”. Daher ist es sehr wichtig zu verstehen, wie man dies mit djbdns erreicht. Im Gegensatz zu bind verwendet djbdns eine individuelle IP für jede Art von DNS-Dienst. Standardmäßig ist jedes System mit 2 IPs ausgestattet => eine Host-IP und die andere ist die Loopback-IP. Daher sollte jedes System im LAN den caching DNS erreichen, also die Host-IP für caching-dns. Und wir werden autorisierend auf der Loopback-IP ausführen und später an caching-dns binden, sodass LAN-Hosts auch autorisierende Hostdatensätze abfragen können.

mkdir /var/lib/svscan  
dnscache-conf dnscache dnslog /var/lib/svscan/dnscache   
ln -sf /var/lib/svscan/dnscache /service

Überprüfen Sie, ob das Verzeichnis “supervise” in /service/dnscache erstellt wurde.
Um zu überprüfen, ob es läuft: Fügen Sie einfach nur einen einzigen Eintrag wie ‘nameserver ’ in /etc/resolv.conf hinzu und überprüfen Sie einige öffentliche Website-Abfragen mit ‘nslookup’ oder ‘dig’ von der Befehlszeile.

Jetzt müssen Sie den LAN-Hosts erlauben, von ihm abzufragen. Erstellen Sie einfach eine leere Datei mit dem Namen Ihres Netzwerks oder Subnetzes:

touch /etc/dnscache/root/ip/

Das ist es. Jetzt können Sie von einem beliebigen Host dieses abfragen. Ebenso können Sie mehrere Hosts, Netzwerke oder Subnetze für Abfragen aktivieren.
Im Gegensatz zu bind können Sie die Cache-Größe des Nameservers anpassen, indem Sie die Datei /etc/dnscache/env/CACHESIZE bearbeiten. Außerdem können Sie den Cache manuell aktualisieren oder leeren, indem Sie den folgenden Befehl ausführen:

svc -t /service/dnscache

Vorübergehend können Sie dnscache mit den folgenden Befehlen stoppen und starten:

svc -d /service/dnscache => um den dnscache-Dienst herunterzufahren  
svc -u /service/dnscache => um den dnscache-Dienst zu starten

Konfigurieren Sie tinydns:

tinydns-conf tinydns dnslog /var/lib/svscan/tinydns   
ln -sf /var/lib/svscan/tinydns /service

Überprüfen Sie, ob das Verzeichnis “supervise” in /service/tinydns erstellt wurde.

Sie enthalten noch keine Zonen-Einträge für irgendwelche Domains, aber darauf kommen wir gleich zu sprechen. Im Gegensatz zu bind werden die Zoneninformationen in einer einzigen Datei (auch für mehrere Zonen, einschließlich Reverse-Zonen) geschrieben, und das ist /var/lib/svscan/tinydns/root/data. Dies ist eine von Menschen beschreibbare Datei, die später in ein binäres Format mit einem tinydns-Befehl umgewandelt wird, und dieses Binärformat wird cdb-Format genannt, sodass die Binärdatei /var/lib/svscan/tinydns/root/data.cdb ist, von der tinydns alle Abfragen beantwortet. Die Syntax für Zonenaufzeichnungen ist im Vergleich zu bind sehr kurz und kompakt. Hier sind einige Beispiele:

a. Für den Nameserver-Eintrag:

  .in.domain.com:10.20.0.10:ns1.in.domain.com  
  .in.domain.com:10.20.0.12:ns2.in.domain.com

b. Für Reverse-DNS für den obigen Nameserver:

  .10.in-addr.arpa::ns1.in.domain.com  
  .10.in-addr.arpa::ns2.in.domain.com

c. Für MX-Einträge:

  @in.domain.com:165.212.65.113:mx.usa.net:10  
  @in.domain.com:10.20.0.12:mail.in.domain.com:20

d. A-Einträge:

  =host0001.in.domain.com:10.10.0.101

e. Alias-Einträge für Hosts:

  +host01.in.domain.com:10.10.0.101  
  +mysql01.in.domain.com:10.10.0.101

Und schließlich konvertieren Sie /var/lib/svscan/tinydns/root/data in cdb-Format mit

tinydns-data

oder

cd /var/lib/svscan/tinydns/root  
make

Am Ende, um diese Zoneninformationen an den caching-dns-Server zu binden, erstellen Sie Dateien mit Namen wie 10.in-addr.arpa, in.domain.com und domain.com usw. im Verzeichnis /var/lib/svscan/dnscache/root/servers/, deren Inhalt 127.0.0.1 (die Loopback-IP) sein sollte. Das ist es. Es ist alles eingerichtet.

Hinweis: Jedes Mal, wenn Sie Änderungen an den Daten vornehmen und eine geänderte data.cdb-Datei erstellen, vergessen Sie nicht, den Cache zu aktualisieren oder zu leeren.

svc -t /services/*

Slave-Server-Einrichtung mit Djbdbs

Folgen Sie einfach http://www.seebq.com/dns-replication-using-rsync und einigen Anpassungen an einigen Dateien von Master und Slaves.

a. Änderungen an der Master-Datei /var/lib/svscan/tinydns/root/Makefile: Bearbeiten Sie die Datei wie folgt:

remote: data.cdb
  rsync -az -e ssh data.cdb :/service/tinydns/root/data.cdb
  ssh  'svc -t /service/dnscache'
data.cdb: data
  /usr/local/bin/tinydns-data
  svc -t /service/dnscache

b. Änderungen an der Slave-Datei /var/libsvscan/tinydns/root/data wie folgt:

# Bearbeiten Sie die Daten auf diesem Computer nicht! data.cdb wird vom MASTER kopiert.
# Die folgende Zeile schützt data.cdb, indem sie make stoppt.
9

Wenn also versehentlich jemand den Befehl make im Verzeichnis /etc/tinydns/root oder den Befehl tinydns-data eingibt, wird dies nur den Cache leeren, da keine Datendatei in den Slave(s) vorhanden ist.

Und ja, richten Sie einfach eine automatische SSH-Anmeldung zwischen Master und Slave(s) ein, damit die obigen Änderungen den Prozess automatisieren. Die obigen Änderungen übertragen nur die data.cdb-Datei an die Slave(s). Somit besteht keine Chance auf unterschiedliche Daten zwischen den Nameservern, was Konsistenz über alle bedeutet.

Backup und Wiederherstellung

Mindestens benötigen wir nur eine Kopie der Datei /var/lib/svscan/tinydns/root/data oder maximal das gesamte /var/lib/svscan/dnscache und /var/lib/svscan/tinydns. Das ist es.

Für die Wiederherstellung richten Sie einfach dnscache oder tinydns ein, es wird kaum Zeit in Anspruch nehmen, und kopieren Sie die Backup-Daten. Schließlich erstellen Sie einen symbolischen Link zu /service. Das ist es.

Share: X/Twitter LinkedIn

Erhalte neue Beiträge in deinem Posteingang.

Kein Spam. Jederzeit abmelden.