Setup Master-Slave DNS Server Mat Bind Tools an RHEL/CentOS 6.5


Domain Name Server (DNS) benotzt fir den Numm ze léisen fir all Hosten. Master DNS Server (Primärer Server) sinn déi ursprénglech Zonendatenhändler a Sklaven DNS Server (Sekundär Server) si just e Backup Server dee benotzt gëtt fir déiselwecht Zoninformatioun vun de Master Serveren ze kopéieren. Master Server wäert d'Nimm fir all Hosten opléisen, déi mir an der Zone-Datebank definéiert hunn an den UDP-Protokoll benotzen, well UDP-Protokoller ni den Unerkennungsprozess benotzen, während tcp d'Unerkennung benotzt. DNS Server benotzen och UDP Protokoller fir d'Ufro Ufro am fréisten ze léisen.

DNS verstoen ka wéineg konfus sinn fir Newbies. Hei ass eng kuerz Erklärung wéi den DNS funktionnéiert.

Loosst eis soen, wa mir Zougang zu enger Websäit brauchen, wat maache mir? Gitt einfach www.google.com am Browser a dréckt Enter. Hmm dat ass alles wat mir wëssen, awer de Fakt ass, wéi Péng DNS duerch et geet, wärend Dir fir eis ufroen. Wärend mir www.google.com tippen, sicht de System no www.google.com. Wa mir en Domain Numm aginn, gëtt et e . (Punkt) um Enn vun der www.google.com déi soen fir de Rootserver vum Nummraum ze sichen.

Globalt ginn et 13 Root-Server verfügbar fir d'Ufro ze léisen. Am Ufank, wärend mir op Enter als www.google.com drécken, wäert eise Browser eng Ufro un eise lokale Resolver weiderginn, deen Entrée iwwer eise Master a Sklave DNS Server Info huet. Wann se keng Informatioun iwwer sou ugefrote Ufro hunn, wäerte se d'Ufro un den Top Level Domain (TLD) weiderginn, wann TLD soen datt ech d'Ufro net kennen, kann den autoritäre Server Är Ufro kennen, et wäert op autoritär weiderginn Serveren, hei nëmmen www.google.com war als Adress definéiert 72.36.15.56.

An der Tëschenzäit gëtt den autoritäre Server d'Äntwert op TLD an TLD gëtt op de Root-Server passéiert an d'Root gëtt d'Info un de Browser, dofir wäert de Browser d'DNS-Ufro fir zukünfteg Benotzung cache. Sou wäert dëse laange Prozess just mat a Millisekonnen opléisen. Wa se d'Ufro net wëssen, äntweren se als NXDOMAIN. Dat heescht, et gëtt kee Rekord an der Zone Datebank fonnt. Hoffen dëst mécht Iech ze verstoen wéi den DNS funktionnéiert.

Liest och: DNS Cache Server op Ubuntu opsetzen

Fir dësen Artikel benotzen ech 3 Maschinnen, 2 fir Server Setup (Master a Sklave) an 1 fir 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
bind, bind-utils, bind-chroot
config file	:	/etc/named.conf
script file	:	/etc/init.d/named
53, UDP

Setup Master DNS Server

Als éischt, z'iwwerpréiwen d'IP Adress, Hostnumm an Verdeelungsversioun vum Master DNS Server, ier Dir weiderfuere fir de Setup.

$ sudo ifconfig | grep inet
$ hostname
$ cat /etc/redhat-release

Eemol bestätegt Dir datt déi uewe genannte Astellunge richteg sinn, et ass Zäit fir no vir ze goen fir erfuerderlech Packagen z'installéieren.

$ sudo yum install bind* -y

Nodeems Dir erfuerderlech Packagen installéiert hutt, definéiert elo Zonedateien an der Masterkonfiguratioun 'named.conf' Datei.

$ sudo vim /etc/named.conf

Gitt ënnendrënner ass meng named.conf Dateientrée, ännert d'Konfiguratiounsdatei no Ärem Besoin.

//
// 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";

Folgend sinn d'Erklärung vun all Konfiguratioun déi mir an der uewen Datei benotzt hunn.

  1. Nolauschteren-an Hafen 53 - Dëst gëtt benotzt fir den DNS an verfügbaren Interfaces ze lauschteren.
  2. Master DNS - Definéiert Är Master DNS IP Adress fir d'Ufro ze lauschteren.
  3. Sklave DNS - Definéiert Äre Sklave DNS, dee benotzt gëtt fir eis Zoneinformatioun ze synchroniséieren fir d'Host vum Master ze léisen.
  4. Rekursioun nee - Wann et op Jo gesat ass, wäerte rekursiv Ufroen de Server an DDOS Attack maachen.
  5. Zonenumm - Definéiert Ären Zonennumm hei definéiert als tecminlocal.com.
  6. Typ Master – Well dëse System fir e Master-Server konfiguréiert gouf, fir de kommende Sklave-Server wäert dëst Sklave sinn.
  7. tecmintlocal.fwd.zone - Dëse Fichier huet d'Hostinformatioun fir dës Zone.
  8. allow-update none - Wann keen wäert astellen. et wäert net dynamesch DNS (DDNS) benotzen.

Als éischt loosse mer d'Forward Look-up Zonentrée definéieren. Hei musse mir d'Zonedateien erstellen am Numm vun deem wat mir an der named.conf Datei definéiert hunn wéi hei ënnen.

tecmintlocal.fwd.zone
tecmintlocal.rev.zone

Mir benotze Probe Konfiguratiounsdateien fir Forward Zone Dateien ze kreéieren, dofir musse mir d'Probe Konfiguratiounsdateien kopéieren.

$ sudo cp /var/named/named.localhost /var/named/tecmintlocal.fwd.zone
$ sudo cp /var/named/named.loopback /var/named/tecmintlocal.rev.zone

Eemol hutt Dir Konfiguratiounsdateien kopéiert, ännert elo dës Zonendateien mam vim Editor.

$ sudo vim /var/named/tecmintlocal.fwd.zone

Ier Dir eis Hostinformatioun an der Forward Zone Datei definéiert, kuckt als éischt d'Probe Zone Datei.

Dëst ass meng Forward Zonekonfiguratioun, fügen d'Entrée hei ënnen un a maacht Ännerungen no Ärem Bedierfnes.

$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

Späichert a stoppt d'Datei mat wq!. Nodeems Dir de Forward Lookup geännert hutt, gesäit et aus wéi ënnen, Benotzt TAB fir en anstänneg Format an der Zonedatei ze kréien.

Elo, erstellt ëmgedréint Lookup-Datei, mir hu schonn eng Kopie vun der Loop-Back-Datei am Numm vun tecmintlocal.rev.zone gemaach. Also, benotze mir dës Datei fir eise Reverse Look-up ze konfiguréieren.

$ sudo vim /var/named/tecmintlocal.rev.zone

Ier Dir eis Hostinformatioun an der ëmgedréint Zonedatei definéiert, huelt e séiere Bléck op d'Probe-Reverse Lookup-Datei wéi hei ënnendrënner.

Dëst ass meng ëmgedréint Zonekonfiguratioun, fügen d'Entrée hei ënnen un a maacht Ännerungen wéi Äre Besoin.

$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.

Späichert a stoppt d'Datei mat wq!. Nodeems Dir de Reverse Lookup geännert hutt, gesäit et aus wéi ënnen, Benotzt TAB fir en anstänneg Format an der Zonedatei ze kréien.

Kontrolléiert d'Gruppbesëtzer vu Forward Look-up & Reverse Look-up Dateien, ier Dir op Konfiguratiounsfehler kontrolléiert.

$ sudo ls -l /var/named/

Hei kënne mir gesinn datt souwuel d'Dateien am Root Benotzer Besëtz sinn, well Dateien déi mir eng Kopie maachen aus Proufdateien sinn ënner /var/named/ verfügbar. Ännert d'Grupp op den Numm op béide Fichier mat de folgende Kommandoen.

$ sudo chgrp named /var/named/tecmintlocal.fwd.zone
$ sudo chgrp named /var/named/tecmintlocal.rev.zone

Nodeems Dir d'korrekt Eegentum op d'Dateien gesat hutt, verifizéiert se nach eng Kéier.

$ sudo ls -l /var/named/

Elo, kontrolléiert d'Fehler an Zonedateien, ier Dir den DNS-Service starten. Préift éischt d'named.conf Datei, kontrolléiert dann aner Zonedateien.

$ 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

Par défaut war iptables lafen an eisen DNS Server ass limitéiert op localhost, wann de Client den Numm vun eisem DNS Server wëll léisen, da musse mir d'Inbound Ufro erlaben, dofir musse mir iptables Inbound Regel fir den Hafen 53 addéieren.

$ sudo iptables -I INPUT -p udp --dport 53 -m state --state NEW -j ACCEPT

Elo, z'iwwerpréiwen datt d'Regele richteg an der INPUT Kette bäigefüügt goufen.

$ sudo iptables -L INPUT

Als nächst, späichert d'Regelen a fänkt d'Firewall nei.

$ sudo service iptables save
$ sudo service iptables restart

Start de genannte Service a maacht et persistent.

$ sudo service named start
$ sudo chkconfig named on
$ sudo chkconfig --list named

Endlech, test déi konfiguréiert Master DNS Zone Dateien (Forward a Reverse), mat Dig & nslookup Tools.

$ dig masterdns.tecmintlocal.com		[Forward Zone]
$ dig -x 192.168.0.200
$ nslookup tecmintlocal.com
$ nslookup masterdns.tecmintlocal.com
$ nslookup slavedns.tecmintlocal.com

Cool! mir hunn e Master DNS konfiguréiert, elo musse mir e Slave DNS Server opbauen. Loosst eis virgoen fir e Sklave-Server opzestellen, Dëst wäert net vill Zäit daueren als Master-Setup.

Setup Slave DNS Server

An der Sklave Maschinn musse mir och déiselwecht Bind Packagen installéieren wéi am Master gewisen, also loosst eis se mat dem folgenden Kommando installéieren.

$ sudo yum install bind* -y

Öffnen an änneren 'named.conf' Datei fir eis Zone Datebank a Port lauschteren.

$ sudo vim /etc/named.conf

Maacht Ännerunge wéi gewisen, wéi pro Är Ufuerderungen.

//
// 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";

Start den DNS Service mat.

$ sudo service named start

Nodeems mir de Bindeservice nei gestart hunn, musse mir d'Zoneinformatioun net individuell definéieren, well eisen Erlaabnes-Transfer d'Zoneinformatioun vum Masterserver replizéiert wéi am Bild hei ënnendrënner.

$ sudo ls -l /var/named/slaves

Vergewëssert Iech d'Zoneinformatioun mat Katzekommando.

$ sudo cat /var/named/slaves/tecmintlocal.fwd.zone
$ sudo cat /var/named/slaves/tecmintlocal.rev.zone

Als nächst, öffnen den DNS Port 53 op iptables fir eng Inbound Verbindung z'erméiglechen.

$ sudo iptables -I INPUT -p udp --dport 53 -m state --state NEW -j ACCEPT

Späichert d'iptables Reegelen a restart den iptables Service.

$ sudo service iptables save
$ sudo service iptables restart

Maacht de Service persistent beim Systemboot.

$ sudo chkconfig iptables on
Check whether persistent set for run-levels .
$ sudo chkconfig --list iptables

Dat ass et!. Elo Zäit fir eis Client Maschinnen ze konfiguréieren an den Hostnumm ze kontrolléieren.

Client Maschinn konfiguréieren

Op Client Säit musse mir de Primär (192.168.0.200) a Secondary DNS (192.168.0.201) Entrée an de Netz Astellungen zouzeschreiwen fir e Hostnumm ze kréien. Fir ze maachen, lafen de Setup Kommando fir all dës Entréen ze definéieren wéi am Bild gewisen.

$ setup

Soss, ännert d'Datei '/etc/reslov.conf' a füügt déi folgend Entréen derbäi.

$ vim /etc/resolv.conf
search tecmintlocal.com
nameserver 192.168.0.200
nameserver 192.168.0.201

Elo, kontrolléiert d'IP, den Hostnumm an den Nummserver Look-up.

$ ifconfig | grep inet
$ hostname
$ nslookup tecmintlocal.com

Elo, kontrolléiert d'Forward & Reverse DNS Look-up benotzt.

$ dig masterdns.tecmintlocal.com
$ dig -x 192.168.0.200

D'Graf Output verstoen:

  1. Header - Dëst seet alles wat mir gefrot hunn a wéi d'Resultat war.
  2. Status - De Status war KEE FEIL, dat heescht, wéi eng Ufro-Ufro, déi vun eis geschéckt gouf, ouni FEELER erfollegräich war.
  3. Fro - D'Query déi vun eis gemaach gouf, hei war meng Ufro masterdns.tecmintlocal.com.
  4. Äntwert - D'Ufro Ufro ass geléist wann et verfügbar Informatioun ass.
  5. Autoritéit - D'Äntwert vum Nummserver fir d'Domain an d'Zone.
  6. Zousätzlech - Zousätzlech Informatioun iwwer Nummserver wéi Hostnumm an IP Adress.
  7. Ufrozäit - Wéi laang et gedauert huet fir d'Nimm vun den uewe genannte Serveren ze léisen.

Endlech kuckt no eisem Node a maacht e 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

Endlech, Setup fäerdeg, hei hu mir souwuel de Primär (Master) wéi och de Sklave (Seconday) DNS Server erfollegräich konfiguréiert, hoffen, datt jiddereen ouni Problem konfiguréiert huet, fillt Iech gratis e Kommentar ze loossen wann Dir e Problem beim Setup konfrontéiert.