DNS System · 3 min read · Oct 02, 2025

Ein Debian DNS-System aufbauen

Ein Debian DNS-System aufbauen

Version 1.0
Autor: Joe Topjian

OK, das ist der letzte DNS-Artikel… für eine Weile, zumindest.

Dieser Artikel zeigt Ihnen, wie Sie ein komplettes DNS-System mit Debian aufbauen. Dazu gehören ein Master-Server, ein Slave-Server, DDNS und eine Menge DNSSEC. Ich werde BIND 9 für den Server verwenden.

Der Master-Server

Zuerst bringen wir unseren Master-Server zum Laufen. Da BIND bekannt dafür ist, eine faire Anzahl von Exploits zu haben, werden wir es in ein Chroot-Gefängnis stecken. Ich werde das nicht behandeln, da Falko hier einen ausgezeichneten Leitfaden dafür geschrieben hat.

Nachdem Sie es alles eingesperrt haben, bringen Sie RNDC zum Laufen. RNDC ist ein kleines Befehlszeilenprogramm zur Steuerung von BIND. Um es zu verwenden, kopieren Sie den Inhalt von /etc/bind/rndc.key nach /etc/bind/named.conf. Starten Sie BIND neu und Sie sind bereit. Jetzt können Sie RNDC verwenden, um mit BIND zu interagieren, anstatt direkt mit BIND zu arbeiten. Für weitere Informationen zu RNDC-Befehlen siehe hier.

Als nächstes ist es Zeit, die Zonendatei zu erstellen. Für dieses Beispiel werde ich die fiktive TLD hemingway verwenden. Es gibt keinen besonderen Grund – nur weil ich kann und ich weiß, dass es niemals mit einem echten Domainnamen in Konflikt geraten wird.

Zur Organisation habe ich zwei Verzeichnisse erstellt, um die Zonendateien zu speichern, ein Master und ein Slave – zur Speicherung der Master- und Slave-Zonendateien.

/etc/bind/zones/master
/etc/bind/zones/slave

Vergessen Sie nicht, /etc/bind/named.conf.options zu bearbeiten und die Verzeichnisoption auf “/etc/bind” zu ändern.

Die Zonendatei sieht so aus ( /etc/bind/zones/master/master.hemingway):

| $ORIGIN hemingway $TTL 1d @ IN SOA ns1 hostmaster ( 2005103008 ; serial 43200 900 604800 10800 ) NS hemingway. A 127.0.0.1 |

Die umgekehrte Zone für die 192.168.1.0/24 ( /etc/bind/zones/192.168.1.rev) sieht so aus:

| $TTL 1d ; $ORIGIN 1.168.192.IN-ADDR.ARPA. @ IN SOA ns1.hemingway. hostmaster.hemingway. ( 2005103001 2h 15m 2w 3h ) IN NS ns1.hemingway. IN NS ns2.hemingway. |

Jetzt bearbeiten Sie /etc/bind/named.conf.local mit den neuen Zonen:

| zone "hemingway" { type master; file "zones/master/master.hemingway"; }; |

| zone "1.168.192.IN-ADDR.ARPA" { type master; file "zones/192.168.1.rev"; }; |

Laden Sie DNS neu und überprüfen Sie Ihre Protokolle. Sie sollten keine Fehler haben, aber man weiß ja nie…

rndc reload

Jetzt, da BIND weiß, welche Domain gehostet werden soll, ist es Zeit, einige Hostnamen hinzuzufügen. Wir werden dafür DDNS verwenden. Um DDNS einzurichten, können Sie meinen DDNS-Artikel hier folgen.

Um tatsächlich die Hosts mit DDNS hinzuzufügen, werde ich mein ddns.py-Skript verwenden.

ddns.py add jake.hemingway A 192.168.1.11
ddns.py add bill.hemingway A 192.168.1.12
ddns.py add robert.hemingway A 192.168.1.13
ddns.py add brett.hemingway A 192.168.1.14

Die entsprechenden PTR-Dateien wurden ebenfalls hinzugefügt, aber ich überspringe das, um Platz zu sparen.

Wir haben jetzt einen voll funktionsfähigen Master-DNS-Server, der alle Hostnamen auflöst, die wir ihm geben.

Der Slave-Server

Jetzt, da der Master-Server eingerichtet ist, ist es Zeit, zum Slave überzugehen. Richten Sie auf einem anderen Rechner eine eingesperrte BIND-Installation genau wie beim Master ein.

Der Slave wird Zonentransfers vom Master abrufen. Da diese Zonentransfers unverschlüsselt über das Netzwerk gehen, wollen wir sie sichern.

Fügen Sie in beiden /etc/bind/named.conf.options-Dateien von Master und Slave Folgendes hinzu:

| dnssec-enable yes; |

Verwenden Sie den dnssec-keygen-Befehl, der hier beschrieben ist, um einen Schlüssel zu erstellen. Fügen Sie den MD5-Hash zu einer neuen Schlüsselanweisung in beiden /etc/bind/named.conf-Dateien hinzu:

| key "TRANSFER" { algorithm hmac-md5; secret "jXc2Lreaw4QHHTb/MjiHAw=="; }; |

Fügen Sie auf dem Master die folgende Serveranweisung zu /etc/bind/named.conf hinzu:

| server IP-OF-SLAVE { keys { TRANSFER; }; }; |

Auf dem Slave machen Sie das Gegenteil:

| server IP-OF-MASTER { keys { TRANSFER; }; }; |

Fügen Sie auf dem Master Folgendes zu den Zonenblöcken in /etc/bind/named.conf.local hinzu:

| allow-transfer { key TRANSFER; }; |

Der Zonenblock auf dem Slave sollte so aussehen:

| zone hemingway { type slave; file "zones/slave/slave.hemingway"; masters { IP-OF-MASTER; }; allow-notify { IP-OF-MASTER; }; }; |

Stellen Sie schließlich sicher, dass beide Server ihre Uhren synchronisiert haben. Zonentransfers finden nicht statt, wenn sie es nicht sind.

Sobald Sie fertig sind, starten Sie den Slave-Server. Sie sollten jetzt eine brandneue Datei in /etc/bind/zones/slave/ vom Zonentransfer haben. Wenn nicht, überprüfen Sie Ihre Protokolle – sie sind sehr ausführlich mit Fehlern.

Ende

Das ist alles! Es ist viel Arbeit und ich bin wirklich schnell durchgegangen, aber das sollte Sie zum Laufen bringen. Zur Referenz und für weitere Informationen lesen Sie bitte meine DDNS-Artikel hier und beziehen Sie sich auf das wunderbare Buch Pro DNS und BIND (keine Marketingwerbung – es ist wirklich ein gutes Buch!).

Share: X/Twitter LinkedIn

Erhalte neue Beiträge in deinem Posteingang.

Kein Spam. Jederzeit abmelden.