Einrichten des Master-Slave-DNS-Servers mit "Bind"-Tools in RHEL/CentOS 6.5
Domain Name Server (DNS), der für die Namensauflösung in beliebige Hosts verwendet wird. Master-DNS-Server (Primärserver) sind die ursprünglichen Zonendatenhandler und Slave-DNS-Server (Sekundärserver) sind nur Backup-Server, die zum Kopieren der gleichen Zoneninformationen von den Master-Servern verwendet werden. Der Master-Server löst die Namen für alle Hosts auf, die wir in der Zonendatenbank definiert haben, und verwendet das UDP-Protokoll, da UDP-Protokolle niemals den Bestätigungsprozess verwenden, während TCP die Bestätigung verwendet. DNS-Server verwenden auch UDP-Protokolle, um die Abfrageanforderung frühestens aufzulösen.
Wie funktioniert DNS?
Das Verständnis von DNS kann für Neulinge etwas verwirrend sein. Hier ist eine kurze Erklärung, wie das DNS funktioniert.
Nehmen wir an, wenn wir auf eine Website zugreifen müssen, was werden wir tun? Geben Sie einfach www.google.com in den Browser ein und drücken Sie die Eingabetaste. Hmm, das ist alles, was wir wissen, aber Tatsache ist, wie schmerzhaft DNS es durchläuft, während es für uns abfragt. Während wir www.google.com tippen, sucht das System nach www.google.com. Immer wenn wir einen Domainnamen eingeben, gibt es ein . (Punkt) am Ende des www.google.com, der besagt, dass der Stammserver des Namensraums gesucht werden soll.
Weltweit stehen 13 Root-Server zur Verfügung, um die Abfrage zu lösen. Während wir die Eingabetaste drücken www.google.com, übergibt unser Browser zunächst eine Anfrage an unseren lokalen Resolver, der einen Eintrag über unsere Master- und Slave-DNS-Serverinformationen enthält. Wenn sie keine Informationen über eine solche angeforderte Anfrage haben, leiten sie die Anfrage an die Top Level Domain (TLD) weiter, wenn TLD sagt, ich kenne die Anfrage nicht, kann der autoritative Server Ihre Anfrage kennen, er wird an autoritative Server weitergeleitet, hier nur www.google.com als Adresse 72.36.15.56 definiert wurde.
In der Zwischenzeit gibt der autoritative Server die Antwort auf die TLD und die TLD wird an den Root-Server übergeben und root stellt die Informationen an den Browser weiter, sodass der Browser die DNS-Anfrage für die zukünftige Verwendung zwischenspeichert. Daher wird dieser lange Prozess in Millisekunden aufgelöst. Wenn sie die Anfrage nicht kennen, werden sie als NXDOMAIN antworten. Das bedeutet, dass in der Zonendatenbank keine Datensätze gefunden wurden. Ich hoffe, das lässt Sie verstehen, wie das DNS funktioniert.
Lesen Sie auch: Richten Sie den DNS-Cache-Server in Ubuntu ein
Meine Testumgebung
Für diesen Artikel verwende ich 3 Maschinen, 2 für die Servereinrichtung (Master und Slave) und 1 für den Client.
---------------------------------------------------
Master DNS Server
---------------------------------------------------
IP Address : 192.168.0.200
Host-name : masterdns.tecmintlocal.com
OS : Centos 6.5 Final
---------------------------------------------------
Slave DNS Server
---------------------------------------------------
IP Address : 192.168.0.201
Host-name : slavedns.tecmintlocal.com
OS : Centos 6.5 Final
---------------------------------------------------
Client Machine to use DNS
---------------------------------------------------
IP Address : 192.168.0.210
Host-name : node1.tecmintlocal.com
OS : Centos 6.5 Final
Anforderungspakete
bind, bind-utils, bind-chroot
Verwendete Konfigurationsdateien
config file : /etc/named.conf
script file : /etc/init.d/named
Verwendete Ports und Protokolle
53, UDPEinrichten des Master-DNS-Servers
Überprüfen Sie zunächst die IP-Adresse, den Hostnamen und die Verteilungsversion des Master-DNS-Servers, bevor Sie mit der Einrichtung fortfahren.
$ sudo ifconfig | grep inet
hostname
cat /etc/redhat-release
Sobald Sie bestätigt haben, dass die obigen Einstellungen korrekt sind, ist es an der Zeit, mit der Installation der erforderlichen Pakete fortzufahren.
$ sudo yum install bind* -y
Installieren und Konfigurieren von Bind
Nach der Installation der erforderlichen Pakete definieren Sie nun Zonendateien in der Masterkonfigurationsdatei 'named.conf'.
$ sudo vim /etc/named.conf
Unten ist mein named.conf-Dateieintrag angegeben, ändern Sie die Konfigurationsdatei nach Ihren Bedürfnissen.
//
// named.conf
//
// Provided by Red Hat bind package to configure the ISC BIND named(8) DNS
// server as a caching only nameserver (as a localhost DNS resolver only).
//
// See /usr/share/doc/bind*/sample/ for example named configuration files.
//
options {
listen-on port 53 { 127.0.0.1; 192.168.0.200; }; # Here we need to add our Master DNS Server IP.
listen-on-v6 port 53 { ::1; };
directory "/var/named";
dump-file "/var/named/data/cache_dump.db";
statistics-file "/var/named/data/named_stats.txt";
memstatistics-file "/var/named/data/named_mem_stats.txt";
allow-query { localhost; 192.168.0.0/24; }; # subnet range where my hosts are allowed to query our DNS.
allow-transfer { localhost; 192.168.0.201; }; # Here we need to our Slave DNS server IP.
recursion no;
dnssec-enable yes;
dnssec-validation yes;
dnssec-lookaside auto;
/* Path to ISC DLV key */
bindkeys-file "/etc/named.iscdlv.key";
managed-keys-directory "/var/named/dynamic";
};
logging {
channel default_debug {
file "data/named.run";
severity dynamic;
};
};
zone "." IN {
type hint;
file "named.ca";
};
## Define our forward & reverse Zone file here for tecmintlocal.com.
zone"tecmintlocal.com" IN {
type master;
file "tecmintlocal.fwd.zone";
allow-update { none; };
};
zone"0.168.192.in-addr.arpa" IN {
type master;
file "tecmintlocal.rev.zone";
allow-update { none; };
};
#####
include "/etc/named.rfc1912.zones";
include "/etc/named.root.key";
Im Folgenden finden Sie die Erläuterung der einzelnen Konfigurationen, die wir in der obigen Datei verwendet haben.
- listen-on-Port 53 – Dieser wird für das DNS verwendet, um verfügbare Schnittstellen zu überwachen.
- Master-DNS – Definieren Sie Ihre Master-DNS-IP-Adresse, um die Abfrage zu überwachen.
- Slave-DNS – Definieren Sie Ihr Slave-DNS, das zum Synchronisieren unserer Zoneninformationen verwendet wird, um die Hosts vom Master aufzulösen.
- recursion no – Wenn es auf yes gesetzt ist, führen rekursive Abfragen den Server zu einem DDOS-Angriff.
- Zonenname – Definieren Sie Ihren Zonennamen, der hier als tecminlocal.com definiert ist.
- type master – Da dieses System für einen Master-Server konfiguriert wurde, wird dies für den kommenden Slave-Server der Slave sein.
- tecmintlocal.fwd.zone – Diese Datei enthält die Hostinformationen für diese Zone.
- allow-update none – Wenn none gesetzt wird. Dynamic DNS (DDNS) wird nicht verwendet.
Erstellen von Masterzonendateien
Lassen Sie uns zunächst den Forward-Lookup-Zoneneintrag definieren. Hier müssen wir die Zonendateien im Namen dessen erstellen, was wir in der Datei named.conf wie folgt definiert haben.
tecmintlocal.fwd.zone
tecmintlocal.rev.zone
Wir verwenden Beispielkonfigurationsdateien zum Erstellen von Forward-Zone-Dateien, dazu müssen wir die Beispielkonfigurationsdateien kopieren.
$ sudo cp /var/named/named.localhost /var/named/tecmintlocal.fwd.zone
sudo cp /var/named/named.loopback /var/named/tecmintlocal.rev.zone
Nachdem Sie die Konfigurationsdateien kopiert haben, bearbeiten Sie diese Zonendateien jetzt mit dem vim-Editor.
$ sudo vim /var/named/tecmintlocal.fwd.zone
Bevor Sie unsere Hostinformationen in der Forward-Zonendatei definieren, werfen Sie zunächst einen kurzen Blick auf die Beispielzonendatei.
Dies ist meine Forward-Zone-Konfiguration, fügen Sie den untenstehenden Eintrag hinzu und nehmen Sie Änderungen nach Ihren Wünschen vor.
$TTL 86400
@ IN SOA masterdns.tecmintlocal.com. root.tecmintlocal.com. (
2014090401 ; serial
3600 ; refresh
1800 ; retry
604800 ; expire
86400 ) ; minimum
; Name server's
@ IN NS masterdns.tecmintlocal.com.
@ IN NS slavedns.tecmintlocal.com.
; Name server hostname to IP resolve.
@ IN A 192.168.0.200
@ IN A 192.168.0.201
; Hosts in this Domain
@ IN A 192.168.0.210
@ IN A 192.168.0.220
masterdns IN A 192.168.0.200
slavedns IN A 192.168.0.201
node1 IN A 192.168.0.210
rhel1 IN A 192.168.0.220
Speichern und beenden Sie die Datei mit wq!. Nachdem Sie den Forward-Lookup bearbeitet haben, sieht er wie folgt aus: Verwenden Sie TAB, um ein anständiges Format in der Zonendatei zu erhalten.
Erstellen Sie nun eine Reverse-Lookup-Datei, wir haben bereits eine Kopie der Loop-Back-Datei im Namen tecmintlocal.rev.zone erstellt. Daher verwenden wir diese Datei, um unseren Reverse-Lookup zu konfigurieren.
$ sudo vim /var/named/tecmintlocal.rev.zone
Bevor Sie unsere Hostinformationen in einer Reverse-Zonendatei definieren, werfen Sie einen kurzen Blick auf die unten gezeigte Beispiel-Reverse-Lookup-Datei.
Dies ist meine Reverse-Zone-Konfiguration, fügen Sie den untenstehenden Eintrag hinzu und nehmen Sie Änderungen nach Bedarf vor.
$TTL 86400
@ IN SOA masterdns.tecmintlocal.com. root.tecmintlocal.com. (
2014090402 ; serial
3600 ; refresh
1800 ; retry
604800 ; expire
86400 ) ; minimum
; Name server's
@ IN NS masterdns.tecmintlocal.com.
@ IN NS slavedns.tecmintlocal.com.
@ IN PTR tecmintlocal.com.
; Name server hostname to IP resolve.
masterdns IN A 192.168.0.200
slavedns IN A 192.168.0.201
;Hosts in Domain
node1 IN A 192.168.0.210
rhel IN A 192.168.0.220
200 IN PTR masterdns.tecmintlocal.com.
201 IN PTR slavedns.tecmintlocal.com.
210 IN PTR node1.tecmintlocal.com.
220 IN PTR rhel1.tecmintlocal.com.
Speichern und beenden Sie die Datei mit wq!. Nachdem Sie den Reverse-Lookup bearbeitet haben, sieht er wie folgt aus: Verwenden Sie TAB, um ein anständiges Format in der Zonendatei zu erhalten.
Überprüfen Sie die Gruppeneigentümerschaft von Forward-Lookup- und Reverse-Lookup-Dateien, bevor Sie nach Fehlern in der Konfiguration suchen.
$ sudo ls -l /var/named/
Hier können wir sehen, dass sich beide Dateien im Besitz des Root-Benutzers befinden, da Dateien, die wir aus Beispieldateien kopieren, unter /var/named/ verfügbar sind. Ändern Sie die Gruppe in beiden Dateien mit den folgenden Befehlen in benannt.
$ sudo chgrp named /var/named/tecmintlocal.fwd.zone
sudo chgrp named /var/named/tecmintlocal.rev.zone
Nachdem Sie die korrekte Eigentümerschaft für die Dateien festgelegt haben, überprüfen Sie sie erneut.
$ sudo ls -l /var/named/
Überprüfen Sie nun, ob die Zonendateien fehlerhaft sind, bevor Sie den DNS-Dienst starten. Überprüfen Sie zuerst die Datei named.conf und dann die anderen Zonendateien.
$ sudo named-checkconf /etc/named.conf
sudo named-checkzone masterdns.tecminlocal.com /var/named/tecmintlocal.fwd.zone
sudo named-checkzone masterdns.tecminlocal.com /var/named/tecmintlocal.rev.zone
Standardmäßig lief iptables und unser DNS-Server ist auf localhost beschränkt, wenn der Client den Namen von unserem DNS-Server auflösen möchte, müssen wir die eingehende Anfrage zulassen, dafür müssen wir die iptables-Regel für den eingehenden Eingang für den Port 53 hinzufügen.
$ sudo iptables -I INPUT -p udp --dport 53 -m state --state NEW -j ACCEPT
Überprüfen Sie nun, ob die Regeln korrekt in der INPUT-Kette hinzugefügt wurden.
$ sudo iptables -L INPUT
Speichern Sie als Nächstes die Regeln und starten Sie die Firewall neu.
$ sudo service iptables save
sudo service iptables restart
Starten Sie den benannten Dienst, und machen Sie ihn persistent.
$ sudo service named start
sudo chkconfig named on
sudo chkconfig --list named
Testen Sie abschließend die konfigurierten Master-DNS-Zonendateien (vorwärts und rückwärts) mit den Tools dig & nslookup.
$ dig masterdns.tecmintlocal.com [Forward Zone]
$ dig -x 192.168.0.200
$ nslookup tecmintlocal.com
nslookup masterdns.tecmintlocal.com
nslookup slavedns.tecmintlocal.com
Kühl! Wir haben ein Master-DNS konfiguriert, jetzt müssen wir einen Slave-DNS-Server einrichten. Fahren wir mit der Einrichtung eines Slave-Servers fort, Dies wird als Master-Setup nicht viel Zeit in Anspruch nehmen.
Slave-DNS-Server einrichten
Auch auf der Slave-Maschine müssen wir die gleichen Bind-Pakete installieren, die im Master gezeigt werden, also installieren wir sie mit dem folgenden Befehl.
$ sudo yum install bind* -y
Öffnen und bearbeiten Sie die Datei 'named.conf' für unsere Zonendatenbank und Portüberwachung.
$ sudo vim /etc/named.conf
Nehmen Sie die Änderungen wie gezeigt gemäß Ihren Anforderungen vor.
//
// named.conf
//
// Provided by Red Hat bind package to configure the ISC BIND named(8) DNS
// server as a caching only nameserver (as a localhost DNS resolver only).
//
// See /usr/share/doc/bind*/sample/ for example named configuration files.
//
options {
listen-on port 53 { 127.0.0.1; 192.168.0.201}; # Our Slave DNS server IP
listen-on-v6 port 53 { ::1; };
directory "/var/named";
dump-file "/var/named/data/cache_dump.db";
statistics-file "/var/named/data/named_stats.txt";
memstatistics-file "/var/named/data/named_mem_stats.txt";
allow-query { localhost; 192.168.0.0/24; };
recursion no;
dnssec-enable yes;
dnssec-validation yes;
dnssec-lookaside auto;
/* Path to ISC DLV key */
bindkeys-file "/etc/named.iscdlv.key";
managed-keys-directory "/var/named/dynamic";
};
logging {
channel default_debug {
file "data/named.run";
severity dynamic;
};
};
zone "." IN {
type hint;
file "named.ca";
};
## Define our slave forward and reverse zone, Zone files are replicated from master.
zone"tecmintlocal.com" IN {
type slave;
file "slaves/tecmintlocal.fwd.zone";
masters { 192.168.0.200; };
};
zone"0.168.192.in-addr.arpa" IN {
type slave;
file "slaves/tecmintlocal.rev.zone";
masters { 192.168.0.200; };
};
#####
include "/etc/named.rfc1912.zones";
include "/etc/named.root.key";
Starten Sie den DNS-Dienst mit.
$ sudo service named start
Nach dem Neustart des Bind-Dienstes müssen wir die Zoneninformationen nicht einzeln definieren, da unser allow-transfer die Zoneninformationen vom Masterserver repliziert, wie in der Abbildung unten gezeigt.
$ sudo ls -l /var/named/slaves
Überprüfen Sie die Zoneninformationen mit dem Befehl cat.
$ sudo cat /var/named/slaves/tecmintlocal.fwd.zone
sudo cat /var/named/slaves/tecmintlocal.rev.zone
Öffnen Sie als Nächstes den DNS-Port 53 auf iptables, um eingehende Verbindungen zuzulassen.
$ sudo iptables -I INPUT -p udp --dport 53 -m state --state NEW -j ACCEPT
Speichern Sie die iptables-Regeln, und starten Sie den iptables-Dienst neu.
$ sudo service iptables save
sudo service iptables restart
Machen Sie den Dienst beim Systemstart persistent.
$ sudo chkconfig iptables onCheck whether persistent set for run-levels .$ sudo chkconfig --list iptables
Das wars!. Jetzt ist es an der Zeit, unsere Client-Rechner zu konfigurieren und nach dem Hostnamen zu suchen.
Konfigurieren des Client-Computers
Auf der Client-Seite müssen wir den primären (192.168.0.200) und den sekundären DNS-Eintrag (192.168.0.201) in den Netzwerkeinstellungen zuweisen, um einen Hostnamen zuzuweisen. Führen Sie dazu den Befehl setup aus, um alle diese Einträge zu definieren, wie in der Abbildung gezeigt.
$ setup
Andernfalls bearbeiten Sie die Datei '/etc/reslov.conf' und fügen Sie die folgenden Einträge hinzu.
$ vim /etc/resolv.conf
search tecmintlocal.com
nameserver 192.168.0.200
nameserver 192.168.0.201
Überprüfen Sie nun die Suche nach IP, Hostname und Nameserver.
$ ifconfig | grep inet
hostname
nslookup tecmintlocal.com
Überprüfen Sie nun die Forward- und Reverse-DNS-Suche mit.
$ dig masterdns.tecmintlocal.com
dig -x 192.168.0.200
Verstehen der dig-Ausgabe:
- Header – Das sagt alles aus, was wir gefragt haben und wie das Ergebnis war.
- Status – Der Status war NO ERROR, d.h. die von uns gesendete Abfrageanfrage war ohne ERROR erfolgreich.
- Frage – Die Abfrage, die von uns gestellt wurde, hier wurde meine Abfrage masterdns.tecmintlocal.com.
- Antwort – Die Abfrageanforderung, die aufgelöst wurde, wenn Informationen verfügbar sind.
- Autorität – Die Antwort des Nameservers für die Domäne und Zone.
- Zusätzlich: Zusätzliche Informationen zu Nameservern wie Hostname und IP-Adresse.
- Abfragezeit – Wie lange es gedauert hat, die Namen von den oben genannten Servern aufzulösen.
Überprüfen Sie abschließend auf unseren Knoten und machen Sie einen Ping.
$ dig node1.tecmintlocal.com
$ ping masterdns.tecmintlocal.com -c 2
ping slavedns.tecmintlocal.com -c 2
ping 192.168.0.200 -c 2
ping 192.168.0.201 -c 2
Endlich, das Setup abgeschlossen, hier haben wir sowohl den primären (Master) als auch den Slave (Seconday) DNS-Server erfolgreich konfiguriert, ich hoffe, dass alle ohne Probleme eingerichtet haben, zögern Sie nicht, einen Kommentar zu hinterlassen, wenn Sie während der Einrichtung auf ein Problem stoßen.
























