Einführung
Ein wichtiger Teil der Verwaltung der Serverkonfiguration und -infrastruktur besteht darin, Netzwerkschnittstellen und IP-Adressen auf einfache Weise nach Namen zu suchen, indem ein ordnungsgemäßes Domain Name System (DNS) eingerichtet wird. Die Verwendung von vollqualifizierten Domänennamen (FQDNs) anstelle von IP-Adressen zur Angabe von Netzwerkadressen vereinfacht die Konfiguration von Diensten und Anwendungen und verbessert die Wartbarkeit von Konfigurationsdateien. Das Einrichten eines eigenen DNS für Ihr privates Netzwerk ist eine hervorragende Möglichkeit, die Verwaltung Ihrer Server zu verbessern.
In diesem Tutorial erfahren Sie, wie Sie mit der BIND-Nameserver-Software (BIND9) unter Ubuntu 16.04 einen internen DNS-Server einrichten, mit dem Ihre Server private Hostnamen und private IP-Adressen auflösen können. Auf diese Weise können Sie Ihre internen Hostnamen und privaten IP-Adressen zentral verwalten. Dies ist unverzichtbar, wenn Ihre Umgebung auf mehrere Hosts erweitert wird.
Die CentOS-Version dieses Tutorials finden Sie unterhere.
Voraussetzungen
Um dieses Tutorial abzuschließen, benötigen Sie Folgendes:
-
Einige Server, die mitprivate networking enabled im selben Datencenter ausgeführt werden. Dies sind Ihre DNS-Clients.
-
Ein neuer Server, der als primärer DNS-Server dient,ns1
-
(Empfohlen) Ein neuer Server, der als sekundärer DNS-Server dient,ns2
-
Administratorzugriff mit einem
sudo
-Benutzer auf die oben genannten Server. Sie können unserenUbuntu 16.04 initial server setup guide folgen, um dies einzurichten.
Wenn Sie mit DNS-Konzepten nicht vertraut sind, wird empfohlen, mindestens die ersten drei Teile unsererIntroduction to Managing DNS zu lesen.
Beispiel Infrastruktur und Ziele
Für die Zwecke dieses Artikels gehen wir von Folgendem aus:
-
Wir haben zwei vorhandene Client-Server, die die von uns erstellte DNS-Infrastruktur nutzen werden. Wir werden diesehost1 undhost2 in diesem Handbuch nennen. Sie können beliebig viele für Ihre Infrastruktur hinzufügen.
-
Wir haben zwei zusätzliche Server, die als unsere DNS-Nameserver festgelegt werden. Wir werden diese in diesem Handbuch alsns1 undns2 bezeichnen.
-
Alle diese Server befinden sich im selben Datencenter. Wir gehen davon aus, dass dies das Datencenter vonnyc3ist.
-
Auf allen diesen Servern ist das private Netzwerk aktiviert (und sie befinden sich im Subnetz von
10.128.0.0/16
. Sie müssen dies wahrscheinlich für Ihre Server anpassen). -
Alle Server hängen irgendwie mit unserer Webanwendung zusammen, die auf "example.com" ausgeführt wird.
Mit diesen Annahmen entscheiden wir, dass es sinnvoll ist, ein Namensschema zu verwenden, das "nyc3.example.com" verwendet, um auf unser privates Subnetz oder unsere private Zone zu verweisen. Daher isthost1 privater vollqualifizierter Domainname (FQDN)host1.nyc3.example.com. In der folgenden Tabelle finden Sie die relevanten Details:
Host | Role | Privater FQDN | Private IP-Adresse |
---|---|---|---|
ns1 |
Primärer DNS Server |
ns1.nyc3.example.com |
10.128.10.11 |
ns2 |
Zweiter DNS Server |
ns2.nyc3.example.com |
10.128.20.12 |
host1 |
Generischer Host 1 |
host1.nyc3.example.com |
10.128.100.101 |
host2 |
Generischer Host 2 |
host2.nyc3.example.com |
10.128.200.102 |
Note
[.note] # Ihr vorhandenes Setup unterscheidet sich, aber die Beispielnamen und IP-Adressen werden verwendet, um zu demonstrieren, wie ein DNS-Server so konfiguriert wird, dass ein funktionierendes internes DNS bereitgestellt wird. Sie sollten in der Lage sein, dieses Setup einfach an Ihre eigene Umgebung anzupassen, indem Sie die Hostnamen und privaten IP-Adressen durch Ihre eigenen ersetzen. Es ist nicht erforderlich, den Regionsnamen des Datencenters in Ihrem Namensschema zu verwenden. Wir verwenden ihn hier jedoch, um anzuzeigen, dass diese Hosts zum privaten Netzwerk eines bestimmten Datencenters gehören. Wenn Sie mehrere Rechenzentren verwenden, können Sie ein internes DNS in den jeweiligen Rechenzentren einrichten.
#
Am Ende dieses Tutorials haben wir einen primären DNS-Server,ns1, und optional einen sekundären DNS-Server,ns2, der als Backup dient.
Beginnen wir mit der Installation unseres primären DNS-Servers ns1.
Installieren Sie BIND auf DNS-Servern
Note
[.note] # Text, der inred hervorgehoben ist, ist wichtig! Es wird oft verwendet, um etwas zu kennzeichnen, das durch Ihre eigenen Einstellungen ersetzt werden muss oder das geändert oder einer Konfigurationsdatei hinzugefügt werden sollte. Wenn Sie beispielsweisehost1.nyc3.example.com
sehen, ersetzen Sie es durch den FQDN Ihres eigenen Servers. Wenn Siehost1_private_IP
sehen, ersetzen Sie es durch die private IP-Adresse Ihres eigenen Servers.
#
Aktualisieren Sie auf beiden DNS-Servern,ns1 undns2, den Paketcache vonapt
, indem Sie Folgendes eingeben:
sudo apt-get update
Installieren Sie nun BIND:
sudo apt-get install bind9 bind9utils bind9-doc
IPv4-Modus
Bevor Sie fortfahren, setzen Sie BIND auf den IPv4-Modus. Bearbeiten Sie auf beiden Servern die Systemd-Unit-Datei vonbind9
, indem Sie Folgendes eingeben:
sudo systemctl edit --full bind9
Fügen Sie am Ende der DirektiveExecStart
"-4" hinzu. Es sollte wie folgt aussehen:
/etc/systemd/system/bind9.service
. . .
[Service]
ExecStart=/usr/sbin/named -f -u bind -4
Speichern und schließen Sie den Editor, wenn Sie fertig sind.
Laden Sie den systemd-Daemon neu, um die neue Konfiguration in das laufende System einzulesen:
sudo systemctl daemon-reload
Starten Sie BIND neu, um die Änderungen zu implementieren:
sudo systemctl restart bind9
Nachdem BIND installiert ist, konfigurieren wir den primären DNS-Server.
Konfigurieren Sie den primären DNS-Server
Die Konfiguration von BIND besteht aus mehreren Dateien, die in der Hauptkonfigurationsdateinamed.conf
enthalten sind. Diese Dateinamen beginnen mitnamed
, da dies der Name des Prozesses ist, den BIND ausführt. Wir beginnen mit der Konfiguration der Optionsdatei.
Optionsdatei konfigurieren
Öffnen Sie unterns1 die Dateinamed.conf.options
zur Bearbeitung:
sudo nano /etc/bind/named.conf.options
Erstellen Sie über dem vorhandenenoptions
-Block einen neuen ACL-Block mit dem Namen "vertrauenswürdig". Hier definieren wir eine Liste von Clients, von denen wir rekursive DNS-Abfragen zulassen (d. H. Ihre Server, die sich im selben Rechenzentrum wiens1 befinden. Anhand unserer privaten IP-Beispieladressen fügen wir unserer Liste vertrauenswürdiger Clientsns1,ns2,host1 undhost2 hinzu:
/etc/bind/named.conf.options — 1 of 3
acl "trusted" {
10.128.10.11; # ns1 - can be set to localhost
10.128.20.12; # ns2
10.128.100.101; # host1
10.128.200.102; # host2
};
options {
. . .
Nachdem wir unsere Liste der vertrauenswürdigen DNS-Clients haben, möchten wir den Blockoptions
bearbeiten. Derzeit sieht der Beginn des Blocks folgendermaßen aus:
/etc/bind/named.conf.options — 2 of 3
. . .
};
options {
directory "/var/cache/bind";
. . .
}
Fügen Sie unterhalb der Direktivedirectory
die hervorgehobenen Konfigurationszeilen hinzu (und ersetzen Sie die richtige IP-Adresse vonns1), damit sie ungefähr so aussieht:
/etc/bind/named.conf.options — 3 of 3
. . .
};
options {
directory "/var/cache/bind";
recursion yes; # enables resursive queries
allow-recursion { trusted; }; # allows recursive queries from "trusted" clients
listen-on { 10.128.10.11; }; # ns1 private IP address - listen on private network only
allow-transfer { none; }; # disable zone transfers by default
forwarders {
8.8.8.8;
8.8.4.4;
};
. . .
};
Wenn Sie fertig sind, speichern und schließen Sie die Dateinamed.conf.options
. Die obige Konfiguration gibt an, dass nur Ihre eigenen Server (die "vertrauenswürdigen") Ihren DNS-Server abfragen können.
Als Nächstes konfigurieren wir die lokale Datei, um unsere DNS-Zonen anzugeben.
Lokale Datei konfigurieren
Öffnen Sie unterns1 die Dateinamed.conf.local
zur Bearbeitung:
sudo nano /etc/bind/named.conf.local
Abgesehen von ein paar Kommentaren sollte die Datei leer sein. Hier legen wir unsere Vorwärts- und Rückwärtszonen fest.
Fügen Sie die Weiterleitungszone mit den folgenden Zeilen hinzu (ersetzen Sie den Zonennamen durch Ihren eigenen):
/etc/bind/named.conf.local — 1 of 2
zone "nyc3.example.com" {
type master;
file "/etc/bind/zones/db.nyc3.example.com"; # zone file path
allow-transfer { 10.128.20.12; }; # ns2 private IP address - secondary
};
Angenommen, unser privates Subnetz ist10.128.0.0/16
, fügen Sie die umgekehrte Zone mit den folgenden Zeilen (note that our reverse zone name starts with “128.10” which is the octet reversal of “10.128”) hinzu:
/etc/bind/named.conf.local — 2 of 2
. . .
};
zone "128.10.in-addr.arpa" {
type master;
file "/etc/bind/zones/db.10.128"; # 10.128.0.0/16 subnet
allow-transfer { 10.128.20.12; }; # ns2 private IP address - secondary
};
Wenn sich Ihre Server über mehrere private Subnetze erstrecken, sich jedoch im selben Datencenter befinden, müssen Sie für jedes einzelne Subnetz eine zusätzliche Zone und Zonendatei angeben. Wenn Sie alle gewünschten Zonen hinzugefügt haben, speichern Sie die Dateinamed.conf.local
und beenden Sie sie.
Nachdem unsere Zonen in BIND angegeben wurden, müssen die entsprechenden Vorwärts- und Rückwärtszonendateien erstellt werden.
Forward-Zonendatei erstellen
In der Forward-Zonendatei definieren wir DNS-Einträge für Forward-DNS-Lookups. Wenn der DNS beispielsweise eine Namensabfrage "host1.nyc3.example.com" empfängt, wird in der Weiterleitungszonendatei nach der entsprechenden privaten IP-Adresse vonhost1gesucht.
Erstellen wir das Verzeichnis, in dem sich unsere Zonendateien befinden. Gemäß unserernamed.conf.local-Konfiguration sollte dieser Speicherort/etc/bind/zones
ein:
sudo mkdir /etc/bind/zones
Wir werden unsere Vorwärtszonendatei auf der Zonendatei von Beispieldb.local
basieren. Kopieren Sie es mit den folgenden Befehlen an den richtigen Speicherort:
cd /etc/bind/zones
sudo cp ../db.local ./db.nyc3.example.com
Bearbeiten wir nun unsere Forward-Zone-Datei:
sudo nano /etc/bind/zones/db.nyc3.example.com
Zunächst sieht es ungefähr so aus:
/etc/bind/zones/db.nyc3.example.com — original
$TTL 604800
@ IN SOA localhost. root.localhost. (
2 ; Serial
604800 ; Refresh
86400 ; Retry
2419200 ; Expire
604800 ) ; Negative Cache TTL
;
@ IN NS localhost. ; delete this line
@ IN A 127.0.0.1 ; delete this line
@ IN AAAA ::1 ; delete this line
Zunächst möchten Sie den SOA-Datensatz bearbeiten. Ersetzen Sie den ersten "localhost" durch den vollqualifizierten Domänennamen vonns1und ersetzen Sie "root.localhost" durch "admin.nyc3.example.com". Außerdem sollten Sie jedes Mal, wenn Sie eine Zonendatei bearbeiten, den Wert vonserialerhöhen, bevor Sie den Prozess vonnamed
neu starten. Wir werden es auf "3" erhöhen. Es sollte ungefähr so aussehen:
/etc/bind/zones/db.nyc3.example.com — updated 1 of 3
@ IN SOA ns1.nyc3.example.com. admin.nyc3.example.com. (
3 ; Serial
. . .
Löschen Sie nun die drei Datensätze am Ende der Datei (nach dem SOA-Datensatz). Wenn Sie sich nicht sicher sind, welche Zeilen gelöscht werden sollen, sind sie oben mit einem Kommentar zum Löschen dieser Zeile gekennzeichnet.
Fügen Sie am Ende der Datei Ihre Nameserver-Einträge mit den folgenden Zeilen hinzu (ersetzen Sie die Namen durch Ihre eigenen). Beachten Sie, dass in der zweiten Spalte angegeben ist, dass dies "NS" -Datensätze sind:
/etc/bind/zones/db.nyc3.example.com — updated 2 of 3
. . .
; name servers - NS records
IN NS ns1.nyc3.example.com.
IN NS ns2.nyc3.example.com.
Fügen Sie dann die A-Datensätze für Ihre Hosts hinzu, die zu dieser Zone gehören. Dies schließt jeden Server ein, dessen Name mit ".nyc3.example.com" enden soll (ersetzen Sie die Namen und privaten IP-Adressen). Unter Verwendung unserer Beispielnamen und privaten IP-Adressen fügen wir A-Datensätze fürns1,ns2,host1 undhost2 wie folgt hinzu:
/etc/bind/zones/db.nyc3.example.com — updated 3 of 3
. . .
; name servers - A records
ns1.nyc3.example.com. IN A 10.128.10.11
ns2.nyc3.example.com. IN A 10.128.20.12
; 10.128.0.0/16 - A records
host1.nyc3.example.com. IN A 10.128.100.101
host2.nyc3.example.com. IN A 10.128.200.102
Speichern und schließen Sie die Dateidb.nyc3.example.com
.
Unser letztes Beispiel für eine Forward Zone-Datei sieht folgendermaßen aus:
/etc/bind/zones/db.nyc3.example.com — updated
$TTL 604800
@ IN SOA ns1.nyc3.example.com. admin.nyc3.example.com. (
3 ; Serial
604800 ; Refresh
86400 ; Retry
2419200 ; Expire
604800 ) ; Negative Cache TTL
;
; name servers - NS records
IN NS ns1.nyc3.example.com.
IN NS ns2.nyc3.example.com.
; name servers - A records
ns1.nyc3.example.com. IN A 10.128.10.11
ns2.nyc3.example.com. IN A 10.128.20.12
; 10.128.0.0/16 - A records
host1.nyc3.example.com. IN A 10.128.100.101
host2.nyc3.example.com. IN A 10.128.200.102
Gehen wir nun zu den Reverse-Zone-Dateien über.
Reverse Zone-Datei (en) erstellen
In Reverse-Zone-Dateien definieren wir DNS-PTR-Einträge für Reverse-DNS-Lookups. Das heißt, wenn der DNS eine Abfrage nach der IP-Adresse "10.128.100.101" empfängt, sucht er in den Reverse-Zonendateien, um den entsprechenden vollqualifizierten Domänennamen "host1.nyc3.example.com" in diesem Fall aufzulösen .
Erstellen Sie aufns1 für jede in der Dateinamed.conf.local
angegebene Umkehrzone eine Umkehrzonendatei. Wir werden unsere Reverse-Zone-Datei (en) auf der Zonendatei von Beispieldb.127
basieren. Kopieren Sie es mit den folgenden Befehlen an den richtigen Speicherort (wobei Sie den Dateinamen des Ziels so ersetzen, dass er mit Ihrer Reverse-Zonendefinition übereinstimmt):
cd /etc/bind/zones
sudo cp ../db.127 ./db.10.128
Bearbeiten Sie die Reverse-Zone-Datei, die der innamed.conf.local
definierten Reverse-Zone (s) entspricht:
sudo nano /etc/bind/zones/db.10.128
Zunächst sieht es ungefähr so aus:
/etc/bind/zones/db.10.128 — original
$TTL 604800
@ IN SOA localhost. root.localhost. (
1 ; Serial
604800 ; Refresh
86400 ; Retry
2419200 ; Expire
604800 ) ; Negative Cache TTL
;
@ IN NS localhost. ; delete this line
1.0.0 IN PTR localhost. ; delete this line
Auf die gleiche Weise wie in der Vorwärtszonendatei möchten Sie den SOA-Datensatz bearbeiten und den Wert vonserialerhöhen. Es sollte ungefähr so aussehen:
/etc/bind/zones/db.10.128 — updated 1 of 3
@ IN SOA ns1.nyc3.example.com. admin.nyc3.example.com. (
3 ; Serial
. . .
Löschen Sie nun die beiden Datensätze am Ende der Datei (nach dem SOA-Datensatz). Wenn Sie sich nicht sicher sind, welche Zeilen gelöscht werden sollen, sind sie oben mit einem Kommentar zum Löschen dieser Zeile gekennzeichnet.
Fügen Sie am Ende der Datei Ihre Nameserver-Einträge mit den folgenden Zeilen hinzu (ersetzen Sie die Namen durch Ihre eigenen). Beachten Sie, dass in der zweiten Spalte angegeben ist, dass dies "NS" -Datensätze sind:
/etc/bind/zones/db.10.128 — updated 2 of 3
. . .
; name servers - NS records
IN NS ns1.nyc3.example.com.
IN NS ns2.nyc3.example.com.
Fügen Sie dannPTR
Datensätze für alle Ihre Server hinzu, deren IP-Adressen sich im Subnetz der Zonendatei befinden, die Sie bearbeiten. In unserem Beispiel umfasst dies alle unsere Hosts, da sie sich alle im Subnetz von10.128.0.0/16
befinden. Beachten Sie, dass die erste Spalte aus den letzten beiden Bytes der privaten IP-Adressen Ihrer Server in umgekehrter Reihenfolge besteht. Stellen Sie sicher, dass Sie Namen und private IP-Adressen entsprechend Ihren Servern einsetzen:
/etc/bind/zones/db.10.128 — updated 3 of 3
. . .
; PTR Records
11.10 IN PTR ns1.nyc3.example.com. ; 10.128.10.11
12.20 IN PTR ns2.nyc3.example.com. ; 10.128.20.12
101.100 IN PTR host1.nyc3.example.com. ; 10.128.100.101
102.200 IN PTR host2.nyc3.example.com. ; 10.128.200.102
Speichern und schließen Sie die Reverse-Zone-Datei (wiederholen Sie diesen Abschnitt, wenn Sie weitere Reverse-Zone-Dateien hinzufügen müssen).
Unser letztes Beispiel für eine Reverse Zone-Datei sieht folgendermaßen aus:
/etc/bind/zones/db.10.128 — updated
$TTL 604800
@ IN SOA nyc3.example.com. admin.nyc3.example.com. (
3 ; Serial
604800 ; Refresh
86400 ; Retry
2419200 ; Expire
604800 ) ; Negative Cache TTL
; name servers
IN NS ns1.nyc3.example.com.
IN NS ns2.nyc3.example.com.
; PTR Records
11.10 IN PTR ns1.nyc3.example.com. ; 10.128.10.11
12.20 IN PTR ns2.nyc3.example.com. ; 10.128.20.12
101.100 IN PTR host1.nyc3.example.com. ; 10.128.100.101
102.200 IN PTR host2.nyc3.example.com. ; 10.128.200.102
Überprüfen Sie die BIND-Konfigurationssyntax
Führen Sie den folgenden Befehl aus, um die Syntax dernamed.conf*
-Dateien zu überprüfen:
sudo named-checkconf
Wenn Ihre benannten Konfigurationsdateien keine Syntaxfehler aufweisen, kehren Sie zur Shell-Eingabeaufforderung zurück und sehen keine Fehlermeldungen. Wenn Probleme mit Ihren Konfigurationsdateien auftreten, überprüfen Sie die Fehlermeldung und den Abschnitt „Konfigurieren des primären DNS-Servers“ und versuchen Sie es erneut mitnamed-checkconf
.
Mit dem Befehlnamed-checkzone
können Sie die Richtigkeit Ihrer Zonendateien überprüfen. Das erste Argument gibt einen Zonennamen an, und das zweite Argument gibt die entsprechende Zonendatei an, die beide innamed.conf.local
definiert sind.
Führen Sie beispielsweise den folgenden Befehl aus, um die Konfiguration der Vorwärtszone „nyc3.example.com“ zu überprüfen (ändern Sie die Namen entsprechend Ihrer Vorwärtszone und Datei):
sudo named-checkzone nyc3.example.com db.nyc3.example.com
Führen Sie den folgenden Befehl aus, um die Konfiguration der Umkehrzone „128.10.in-addr.arpa“ zu überprüfen (ändern Sie die Nummern entsprechend Ihrer Umkehrzone und Datei):
sudo named-checkzone 128.10.in-addr.arpa /etc/bind/zones/db.10.128
Wenn alle Konfigurations- und Zonendateien fehlerfrei sind, sollten Sie bereit sein, den BIND-Dienst neu zu starten.
Starten Sie BIND neu
BIND neu starten:
sudo systemctl restart bind9
Wenn Sie die UFW-Firewall konfiguriert haben, öffnen Sie den Zugriff auf BIND, indem Sie Folgendes eingeben:
sudo ufw allow Bind9
Ihr primärer DNS-Server ist jetzt eingerichtet und kann auf DNS-Anfragen antworten. Fahren wir mit der Erstellung des sekundären DNS-Servers fort.
Konfigurieren Sie den sekundären DNS-Server
In den meisten Umgebungen empfiehlt es sich, einen sekundären DNS-Server einzurichten, der auf Anforderungen reagiert, wenn der primäre Server nicht mehr verfügbar ist. Glücklicherweise ist der sekundäre DNS-Server viel einfacher zu konfigurieren.
Bearbeiten Sie aufns2 die Dateinamed.conf.options
:
sudo nano /etc/bind/named.conf.options
Fügen Sie oben in der Datei die ACL mit den privaten IP-Adressen aller Ihrer vertrauenswürdigen Server hinzu:
/etc/bind/named.conf.options — updated 1 of 2 (secondary)
acl "trusted" {
10.128.10.11; # ns1
10.128.20.12; # ns2 - can be set to localhost
10.128.100.101; # host1
10.128.200.102; # host2
};
options {
. . .
Fügen Sie unter der Direktivedirectory
die folgenden Zeilen hinzu:
/etc/bind/named.conf.options — updated 2 of 2 (secondary)
recursion yes;
allow-recursion { trusted; };
listen-on { 10.128.20.12; }; # ns2 private IP address
allow-transfer { none; }; # disable zone transfers by default
forwarders {
8.8.8.8;
8.8.4.4;
};
Speichern und schließen Sie die Dateinamed.conf.options
. Diese Datei sollte genau wie dienamed.conf.options
-Datei vonns1 aussehen, außer dass sie so konfiguriert sein sollte, dass sie die private IP-Adresse vonns2abhört.
Bearbeiten Sie nun die Dateinamed.conf.local
:
sudo nano /etc/bind/named.conf.local
Definieren Sie Slave-Zonen, die den Master-Zonen auf dem primären DNS-Server entsprechen. Beachten Sie, dass der Typ "Slave" ist, die Datei keinen Pfad enthält und es einemasters
-Richtlinie gibt, die auf die private IP des primären DNS-Servers festgelegt werden sollte. Wenn Sie im primären DNS-Server mehrere Reverse-Zonen definiert haben, müssen Sie diese hier hinzufügen:
/etc/bind/named.conf.local — updated (secondary)
zone "nyc3.example.com" {
type slave;
file "slaves/db.nyc3.example.com";
masters { 10.128.10.11; }; # ns1 private IP
};
zone "128.10.in-addr.arpa" {
type slave;
file "slaves/db.10.128";
masters { 10.128.10.11; }; # ns1 private IP
};
Speichern und schließen Sie nun die Dateinamed.conf.local
.
Führen Sie den folgenden Befehl aus, um die Gültigkeit Ihrer Konfigurationsdateien zu überprüfen:
sudo named-checkconf
Sobald das ausgecheckt ist, starte BIND neu:
sudo systemctl restart bind9
Zulassen von DNS-Verbindungen zum Server durch Ändern der UFW-Firewallregeln:
sudo ufw allow Bind9
Jetzt haben Sie primäre und sekundäre DNS-Server für die Auflösung von privaten Netzwerknamen und IP-Adressen. Jetzt müssen Sie Ihre Client-Server für die Verwendung Ihrer privaten DNS-Server konfigurieren.
Konfigurieren Sie DNS-Clients
Bevor alle Ihre Server in der "vertrauenswürdigen" ACL Ihre DNS-Server abfragen können, müssen Sie jeden von ihnen so konfigurieren, dassns1 undns2 als Nameserver verwendet werden. Dieser Vorgang variiert je nach Betriebssystem. Bei den meisten Linux-Distributionen müssen Sie jedoch Ihre Nameserver zur/etc/resolv.conf
-Datei hinzufügen.
Ubuntu-Clients
Auf Ubuntu- und Debian Linux-Servern können Sie die Datei/etc/network/interfaces
bearbeiten:
sudo nano /etc/network/interfaces
Suchen Sie darin die Zeiledns-nameservers
und stellen Sie Ihre eigenen Nameserver vor die Liste, die derzeit vorhanden ist. Fügen Sie unterhalb dieser Zeile die Optiondns-search
hinzu, die auf die Basisdomäne Ihrer Infrastruktur verweist. In unserem Fall wäre dies "nyc3.example.com":
/etc/network/interfaces
. . .
dns-nameservers 10.128.10.11 10.128.20.12 8.8.8.8
dns-search nyc3.example.com
. . .
Speichern und schließen Sie die Datei, wenn Sie fertig sind.
Starten Sie jetzt Ihre Netzwerkdienste neu und übernehmen Sie die neuen Änderungen mit den folgenden Befehlen. Stellen Sie sicher, dass Sieeth0
durch den Namen Ihrer Netzwerkschnittstelle ersetzen:
sudo ifdown --force eth0 && sudo ip addr flush dev eth0 && sudo ifup --force eth0
Dadurch sollte Ihr Netzwerk neu gestartet werden, ohne dass die aktuelle Verbindung unterbrochen wird. Wenn es richtig funktioniert hat, sollten Sie so etwas sehen:
OutputRTNETLINK answers: No such process
Waiting for DAD... Done
Überprüfen Sie, ob Ihre Einstellungen übernommen wurden, indem Sie Folgendes eingeben:
cat /etc/resolv.conf
Sie sollten Ihre Nameserver in der Datei/etc/resolv.conf
owie in Ihrer Suchdomäne sehen:
Output# Dynamic resolv.conf(5) file for glibc resolver(3) generated by resolvconf(8)
# DO NOT EDIT THIS FILE BY HAND -- YOUR CHANGES WILL BE OVERWRITTEN
nameserver 10.128.10.11
nameserver 10.128.20.12
nameserver 8.8.8.8
search nyc3.example.com
Ihr Client ist jetzt für die Verwendung Ihrer DNS-Server konfiguriert.
CentOS-Clients
Bearbeiten Sie unter CentOS, RedHat und Fedora Linux VPS die Datei/etc/sysconfig/network-scripts/ifcfg-eth0
. Möglicherweise müssen Sieeth0
durch den Namen Ihrer primären Netzwerkschnittstelle ersetzen:
sudo nano /etc/sysconfig/network-scripts/ifcfg-eth0
Suchen Sie nach den OptionenDNS1
undDNS2
und setzen Sie sie auf die privaten IP-Adressen Ihrer primären und sekundären Nameserver. Fügen Sie einenDOMAIN
-Parameter hinzu, der der Basisdomäne Ihrer Infrastruktur entspricht. In diesem Handbuch wäre das "nyc3.example.com":
/etc/sysconfig/network-scripts/ifcfg-eth0
. . .
DNS1=10.128.10.11
DNS2=10.128.20.12
DOMAIN='nyc3.example.com'
. . .
Speichern und schließen Sie die Datei, wenn Sie fertig sind.
Starten Sie nun den Netzwerkdienst neu, indem Sie Folgendes eingeben:
sudo systemctl restart network
Der Befehl kann einige Sekunden lang hängen bleiben, sollte Sie jedoch in Kürze zur Eingabeaufforderung zurückführen.
Überprüfen Sie, ob Ihre Änderungen übernommen wurden, indem Sie Folgendes eingeben:
cat /etc/resolv.conf
Sie sollten Ihre Nameserver und Suchdomäne in der Liste sehen:
/etc/resolv.conf
nameserver 10.128.10.11
nameserver 10.128.20.12
search nyc3.example.com
Clients testen
Verwenden Sienslookup
, um zu testen, ob Ihre Clients Ihre Nameserver abfragen können. Dies sollte auf allen Clients möglich sein, die Sie konfiguriert haben und die sich in der „vertrauenswürdigen“ ACL befinden.
Für CentOS-Clients müssen Sie möglicherweise das Dienstprogramm installieren mit:
sudo yum install bind-utils
Forward-Lookup
Zum Beispiel können wir eine Vorwärtssuche durchführen, um die IP-Adresse vonhost1.nyc3.example.com abzurufen, indem wir den folgenden Befehl ausführen:
nslookup host1
Das Abfragen von "host1" wird zu "host1.nyc3.example.com" erweitert, da die Option "search
" auf Ihre private Subdomain festgelegt ist. DNS-Abfragen versuchen, diese Subdomain zu suchen, bevor sie nach dem Host an anderer Stelle suchen. Die Ausgabe des obigen Befehls sieht folgendermaßen aus:
Output:Server: 10.128.10.11
Address: 10.128.10.11#53
Name: host1.nyc3.example.com
Address: 10.128.100.101
Rückwärtssuche
Fragen Sie den DNS-Server mit der privaten IP-Adresse vonhost1ab, um die umgekehrte Suche zu testen:
nslookup 10.128.100.101
Sie sollten eine Ausgabe sehen, die wie folgt aussieht:
OutputServer: 10.128.10.11
Address: 10.128.10.11#53
11.10.128.10.in-addr.arpa name = host1.nyc3.example.com.
Wenn alle Namen und IP-Adressen in die richtigen Werte aufgelöst werden, bedeutet dies, dass Ihre Zonendateien ordnungsgemäß konfiguriert sind. Wenn Sie unerwartete Werte erhalten, überprüfen Sie unbedingt die Zonendateien auf Ihrem primären DNS-Server (z. db.nyc3.example.com
unddb.10.128
).
Herzliche Glückwünsche! Ihre internen DNS-Server sind jetzt ordnungsgemäß eingerichtet! Jetzt kümmern wir uns um die Pflege Ihrer Zonendatensätze.
DNS-Einträge pflegen
Da Sie nun über ein funktionierendes internes DNS verfügen, müssen Sie Ihre DNS-Einträge so verwalten, dass sie Ihre Serverumgebung genau widerspiegeln.
Hinzufügen von Host zu DNS
Wann immer Sie Ihrer Umgebung einen Host hinzufügen (im selben Datencenter), möchten Sie ihn zum DNS hinzufügen. Hier ist eine Liste der Schritte, die Sie ausführen müssen:
Primärer Nameserver
-
Forward Zone-Datei: Fügen Sie einen "A" -Datensatz für den neuen Host hinzu und erhöhen Sie den Wert von "Serial".
-
Reverse-Zone-Datei: Fügen Sie einen "PTR" -Datensatz für den neuen Host hinzu, und erhöhen Sie den Wert von "Serial".
-
Fügen Sie die private IP-Adresse Ihres neuen Hosts zur "vertrauenswürdigen" ACL hinzu (
named.conf.options
).
Dann lade BIND neu:
sudo systemctl reload bind9
Sekundärer Nameserver
-
Fügen Sie die private IP-Adresse Ihres neuen Hosts zur "vertrauenswürdigen" ACL hinzu (
named.conf.options
).
Dann lade BIND neu:
sudo systemctl reload bind9
Konfigurieren Sie den neuen Host für die Verwendung Ihres DNS
-
Konfigurieren Sie
/etc/resolv.conf
für die Verwendung Ihrer DNS-Server -
Test mit
nslookup
Host aus DNS entfernen
Wenn Sie einen Host aus Ihrer Umgebung entfernen oder ihn einfach aus DNS entfernen möchten, entfernen Sie einfach alle Elemente, die hinzugefügt wurden, als Sie den Server zu DNS hinzugefügt haben (d. H. die Umkehrung der obigen Schritte).
Fazit
Jetzt können Sie die privaten Netzwerkschnittstellen Ihrer Server nach Namen und nicht nach IP-Adresse benennen. Dies erleichtert die Konfiguration von Diensten und Anwendungen, da Sie sich die privaten IP-Adressen nicht mehr merken müssen und die Dateien leichter zu lesen und zu verstehen sind. Außerdem können Sie jetzt Ihre Konfigurationen so ändern, dass sie auf einen neuen Server an einem einzigen Ort, Ihrem primären DNS-Server, verweisen, anstatt verschiedene verteilte Konfigurationsdateien bearbeiten zu müssen, was die Wartung vereinfacht.
Sobald Sie Ihr internes DNS eingerichtet haben und Ihre Konfigurationsdateien private FQDNs verwenden, um Netzwerkverbindungen anzugeben, werden Ihre DNS-Server incritical ordnungsgemäß gewartet. Wenn beide nicht mehr verfügbar sind, funktionieren Ihre Dienste und Anwendungen, die darauf angewiesen sind, nicht mehr ordnungsgemäß. Aus diesem Grund wird empfohlen, Ihren DNS mit mindestens einem sekundären Server einzurichten und funktionierende Backups von allen zu führen.