Zum Inhalt springen

Eine sekundäre Zone mit STACKIT DNS einrichten

sidebar: order: 4

In diesem Tutorial lernen Sie, wie Sie eine sekundäre Zone innerhalb des STACKIT DNS Anycast-Netzwerks einrichten.

Indem Sie dieser Anleitung folgen, richten Sie eine STACKIT-Instanz mit Linux Ubuntu und einem BIND9-DNS-Server als Hidden Primary ein. Der Zugriff aus dem Internet wird durch Security Groups verweigert. Nur die STACKIT DNS Anycast-Nameserver sind berechtigt, den Knoten abzufragen und Zonen über das AXFR-Protokoll zu übertragen. Mit diesem Setup können Sie Ihre Zonen auf dem Hidden Primary verwalten, während diese gleichzeitig global verteilt und durch die STACKIT DNS Anycast-Server geschützt sind.

Erstellen Sie für dieses Handbuch eine Server-Instanz mit dem neuesten Ubuntu-Image. Ein kleines Boot-Volume von 5-10GB sowie ein kleiner Flavor sind ausreichend. Laden Sie Ihren öffentlichen SSH-Schlüssel hoch und weisen Sie Ihrer Instanz eine öffentliche IP-Adresse zu. Stellen Sie sicher, dass Sie von Ihrem SSH-Client aus auf die Instanz zugreifen können, indem Sie den Zugriff auf den TCP-Port 22 von Ihrer Client-IP aus erlauben.

Weitere Informationen finden Sie unter Erstellen einer neuen STACKIT Server-Instanz.

Verwenden Sie die folgenden Befehle, um den DNS-Primary mit bind9 zu installieren:

Terminal-Fenster
sudo apt update -y
sudo apt install -y bind9 bind9utils

Aktivieren Sie das erweiterte Logging und konfigurieren Sie die primäre DNS-Zone als Master. Für dieses Tutorial verwenden wir myzone.test.. Konfigurieren Sie Benachrichtigungen (Notify) an die STACKIT Anycast-Nameserver und erlauben Sie Zonen-Updates von localhost. Erstellen Sie die Datei /etc/bind/named.conf.local mit dem folgenden Inhalt:

logging {
category xfer-out { default_syslog; };
category xfer-in { default_syslog; };
category notify { default_syslog; };
category lame-servers { default_syslog; };
category general { default_syslog; };
category default { default_syslog; };
};
zone "myzone.test" IN {
type master;
file "/var/cache/bind/myzone.test.db";
notify explicit;
also-notify { 83.136.34.51; };
allow-update { 127.0.0.1; };
};

Erstellen Sie den initialen Inhalt Ihrer primären Zone in der Datei /var/cache/bind/myzone.test.db:

; Zone file for myzone.test.
;
; The full zone file
;
$ORIGIN myzone.test.
@ 3600 IN SOA myzone.test. hostmaster.myzone.test. 2023051000 7200 3600 1209600 30
3600 IN NS ns1.stackit.cloud.
3600 IN NS ns2.stackit.zone.
www IN A 127.0.0.1
IN AAAA ::1

Überprüfen Sie die Konfiguration, laden Sie bind9 neu und verifizieren Sie, dass Ihre konfigurierte Zone funktioniert:

Terminal-Fenster
named-checkconf
systemctl reload named
dig +short myzone.test. SOA @127.0.0.1

Sie sollten folgendes Ergebnis erhalten:

myzone.test. hostmaster.myzone.test. 2023051000 7200 3600 1209600 30

Und führen Sie einen zweiten Test durch:

Terminal-Fenster
dig +short www.myzone.test. @127.0.0.1

Sie sollten folgendes Ergebnis erhalten:

127.0.0.1

Damit der STACKIT DNS Anycast-Server DNS-Zonen von Ihrem primären Nameserver übertragen kann, erlauben Sie bitte den Netzwerk-Zonentransfer und den Abfragezugriff von der folgenden IP:

  • Fügen Sie eine Security-Regel hinzu, um TCP-Ingress Port 53 für 83.136.34.51 zu erlauben.
  • Fügen Sie eine Security-Regel hinzu, um UDP-Ingress Port 53 für 83.136.34.51 zu erlauben.

Erstellen Sie im STACKIT Portal eine neue sekundäre Zone und fügen Sie Ihre öffentliche IP als primären DNS-Server hinzu. Weitere Informationen finden Sie unter Verwalten von DNS-Zonen.

Sie können den erfolgreichen initialen Zonentransfer in den Logs Ihres Primary verifizieren:

Terminal-Fenster
journalctl --unit named --follow

Dort sollten Sie zwei Zeilen sehen, die dieser ähneln:

May 16 12:08:06 primary named[2172]: client @0x7f780c1d1208 83.136.34...#51029 (myzone.test): transfer of 'myzone.test/IN': AXFR started (serial 2023051000)
May 16 12:08:06 primary named[2172]: client @0x7f780c1d1208 83.136.34...#51029 (myzone.test): transfer of 'myzone.test/IN': AXFR ended: 1 messages, 6 records, 213 bytes, 0.004 secs (53250 bytes/sec) (serial 2023051000)

Nun kann Ihre Zone global über das STACKIT DNS Anycast-Netzwerk aufgelöst werden, während der direkte Zugriff auf Ihren Primary geschützt ist. Prüfen Sie dies von einem beliebigen anderen Host mit Internetzugang:

Terminal-Fenster
dig +short myzone.test. SOA @ns1.stackit.cloud.

Sie sollten die folgende Ausgabe erhalten:

myzone.test. hostmaster.myzone.test. 2023051000 7200 3600 1209600 30
Terminal-Fenster
dig +short www.myzone.test. @ns1.stackit.cloud.

Sie sollten die folgende Ausgabe erhalten:

127.0.0.1
Terminal-Fenster
dig +short myzone.test. SOA @<your-public-primary-ip>

Sie sollten die folgende Ausgabe erhalten:

;; connection timed out; no servers could be reached
Terminal-Fenster
dig +short www.myzone.test. @<your-public-primary-ip>

Sie sollten die folgende Ausgabe erhalten:

;; connection timed out; no servers could be reached

Fügen wir den Datensatz www2.myzone.test. zur Zone auf Ihrem Primary hinzu und verifizieren wir, dass er lokal aufgelöst wird:

Terminal-Fenster
nsupdate
> server 127.0.0.1
> zone myzone.test.
> update add www2.myzone.test. 600 IN A 192.0.2.1
> send
> quit
dig +short www2.myzone.test. @127.0.0.1

Sie sollten die folgende Ausgabe erhalten:

192.0.2.1

Beachten Sie, dass bind9 Benachrichtigungen (Notifies) für die aktualisierte Zone versendet, woraufhin die Zone erneut vom STACKIT DNS-Netzwerk übertragen wird:

Terminal-Fenster
journalctl --unit named --follow

Dort sollten Sie drei Zeilen sehen, die dieser ähneln:

May 16 12:10:17 rc0-primary-docs named[2496]: zone myzone.test/IN: sending notifies (serial 2023051002)
May 16 12:10:17 rc0-primary-docs named[2496]: client @0x7f8f880a9508 83.136.34.30#36005 (myzone.test): transfer of 'myzone.test/IN': AXFR started (serial 2023051002)
May 16 12:10:17 rc0-primary-docs named[2496]: client @0x7f8f880a9508 83.136.34.30#36005 (myzone.test): transfer of 'myzone.test/IN': AXFR ended: 1 messages, 8 records, 250 bytes, 0.001 secs (250000 bytes/sec) (serial 2023051002)

Nun kann der neue Datensatz ebenfalls global über das STACKIT DNS Anycast-Netzwerk aufgelöst werden:

Terminal-Fenster
dig +short www2.myzone.test. @ns1.stackit.cloud.

Sie erhalten die folgende Ausgabe:

192.0.2.1