Opsæt Master-Slave DNS-server ved hjælp af "Bind" -værktøjer i RHEL/CentOS 6.5


Domain Name Server (DNS), der bruges til navneløsning til alle værter. Master DNS-servere (Primary Server) er de originale zone-datahåndterere, og Slave DNS-server (Secondary Server) er kun en backup-server, der bruges til at kopiere de samme zoneoplysninger fra hovedserverne. Master Server løser navnene for hver vært, som vi definerede i zondatabasen, og bruger UDP-protokol, fordi UDP-protokoller aldrig bruger kvitteringsprocessen, mens tcp bruger bekræftelse. DNS-servere bruger også UDP-protokoller til tidligst at løse forespørgslen.

At forstå DNS kan være lidt forvirrende for nybegyndere. Her er en kort forklaring på, hvordan DNS fungerer.

Lad os sige, hvis vi har brug for adgang til et websted, hvad vil vi gøre? Skriv bare www.google.com i browseren, og tryk på Enter. Hmm, det er alt, hvad vi ved, men faktum er, hvordan smerte DNS går igennem det, mens man spørger efter os. Mens vi skriver www.google.com, ser systemet efter www.google.com. Hver gang vi skriver et domænenavn, er der et. (prik) i slutningen af www.google.com, der siger at søge på rodserveren i navneområdet.

Globalt er der 13 rodservere tilgængelige til at løse forespørgslen. Først mens vi trykker på enter som www.google.com, sender vores browser en anmodning til vores lokale resolver, som har adgang til vores master- og slave-DNS-serveroplysninger. Hvis de ikke har info om sådan anmodet forespørgsel, videresender de anmodningen til Top Level-domænet (TLD), hvis TLD siger, at jeg ikke kender anmodningen, kan det være, at den autoritative server kender din anmodning, den videresendes til autoritativ servere, her blev kun www.google.com defineret som adresse 72.36.15.56.

I mellemtiden vil autoritativ server give svaret på TLD, og TLD vil videregive til rodserver, og root vil give informationen til browseren, hvorfor browseren cache DNS-anmodningen til fremtidig brug. Således løser denne lange proces bare med i millisekunder. Hvis de ikke kender anmodningen, svarer de som NXDOMAIN. Det betyder, at der ikke er nogen registrering, der blev fundet i Zone-databasen. Håber dette får dig til at forstå, hvordan DNS fungerer.

Læs også : Opsæt DNS-cache-server i Ubuntu

Til denne artikel bruger jeg 3 maskiner, 2 til serveropsætning (master og slave) og 1 til klient.

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

Opsæt Master DNS-server

Først skal du kontrollere IP-adressen, værtsnavnet og distributionsversionen af Master DNS-serveren, inden du går videre til opsætning.

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

Én gang bekræfter du, at ovenstående indstillinger er korrekte, det er tid til at gå videre til at installere nødvendige pakker.

$ sudo yum install bind* -y

Efter installation af påkrævede pakker skal du nu definere zonefiler i masterkonfiguration 'named.conf' fil.

$ sudo vim /etc/named.conf

Nedenfor er min navngivne.conf-filindgang, skift konfigurationsfilen efter dit behov.

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

Følgende er forklaringen på hver konfiguration, vi brugte i ovenstående fil.

  1. lytte-port 53 - Dette bruges til DNS til at lytte i tilgængelige grænseflader.
  2. Master DNS - Definer, din Master DNS IP-adresse for at lytte til forespørgslen.
  3. Slave DNS - Definer din Slave DNS, som bruges til at synkronisere vores zoneoplysninger for at løse værter fra Master.
  4. rekursions nej - Hvis det er indstillet til ja, vil rekursive forespørgsler gøre serveren til DDOS-angreb.
  5. Zone navn - Definer dit Zone navn her defineret som tecminlocal.com.
  6. type master - Da dette system blev konfigureret til en masterserver, vil dette være en slave for den kommende slaveserver.
  7. tecmintlocal.fwd.zone - Denne fil har værtsoplysningerne for denne zone.
  8. tillad-opdatering ingen - Hvis ingen indstilles. det bruger ikke dynamisk DNS (DDNS).

Lad os i første omgang definere fremadgående opslag i zone. Her er vi nødt til at oprette zonefiler i navnet på det, vi har defineret i filen named.conf som nedenfor.

tecmintlocal.fwd.zone
tecmintlocal.rev.zone

Vi bruger eksempelkonfigurationsfiler til at oprette fremadrettede zonefiler, for dette skal vi kopiere eksempelkonfigurationsfilerne.

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

Når du har kopieret konfigurationsfiler, skal du nu redigere disse zonefiler ved hjælp af vim editor.

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

Inden du definerer vores værtsoplysninger i forward zone-fil, skal du først kigge hurtigt på samplezonefilen.

Dette er min konfiguration af den forreste zone, tilføj nedenstående post og foretag ændringer efter dit behov.

$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

Gem og afslut filen ved hjælp af wq !. Efter redigering af fremadgående opslag ser det ud som nedenfor: Brug TAB for at få et anstændigt format i zonefil.

Opret nu omvendt opslagsfil, vi har allerede lavet en kopi af loop-back-fil i navnet tecmintlocal.rev.zone. Så vi bruger denne fil til at konfigurere vores omvendte opslag.

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

Inden du definerer vores værtsinformation i reverse zone-fil, skal du hurtigt se eksemplet på reverse reverse-opslagsfil som vist nedenfor.

Dette er min omvendte zonekonfiguration, tilføj nedenstående post og foretag ændringer efter dit behov.

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

Gem og afslut filen ved hjælp af wq !. Efter redigering af det omvendte opslag ser det ud som nedenfor: Brug TAB for at få et anstændigt format i zonefil.

Kontroller gruppeejerskabet af fremadrettede opslag- og omvendte opslagningsfiler, før du kontrollerer for eventuelle konfigurationsfejl.

$ sudo ls -l /var/named/

Her kan vi se, at begge filerne er i rodbrugernes ejerskab, fordi filer, som vi laver en kopi fra eksempler på filer, er tilgængelige under/var/named /. Skift gruppen til navngivet på begge filer ved hjælp af følgende kommandoer.

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

Efter at have indstillet korrekt ejerskab til filerne, skal du bekræfte dem igen.

$ sudo ls -l /var/named/

Kontroller nu, om der er fejl i zonefiler, inden du starter DNS-tjenesten. Kontroller først den named.conf-fil, og kontroller derefter andre zonefiler.

$ 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

Som standard kørte iptables, og vores DNS-server er begrænset til localhost, hvis klienten ønsker at løse navnet fra vores DNS-server, så er vi nødt til at tillade den indgående anmodning, til det er vi nødt til at tilføje iptables indgående regel for porten 53.

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

Kontroller nu, at reglerne er tilføjet korrekt i INPUT-kæden.

$ sudo iptables -L INPUT

Gem derefter reglerne, og genstart firewall.

$ sudo service iptables save
$ sudo service iptables restart

Start den navngivne tjeneste, og gør den vedholdende.

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

Endelig test de konfigurerede Master DNS-zonefiler (frem og tilbage) ved hjælp af dig & nslookup-værktøjer.

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

Fedt nok! vi har konfigureret en Master DNS, nu skal vi konfigurere en Slave DNS Server. Lad os gå videre til opsætning af en slaveserver. Dette tager ikke meget tid som masteropsætning.

Opsæt Slave DNS Server

I slave-maskine er vi også nødt til at installere de samme bindepakker som vist i Master, så lad os installere dem ved hjælp af følgende kommando.

$ sudo yum install bind* -y

Åbn og rediger 'named.conf' fil til vores zondatabase og portlytten.

$ sudo vim /etc/named.conf

Foretag ændringer som vist i henhold til dine krav.

//
// 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 DNS-tjenesten ved hjælp af.

$ sudo service named start

Efter genstart af bindetjenesten behøver vi ikke definere zoneoplysningerne individuelt, da vores tilladelsesoverførsel replikerer zoneoplysningerne fra masterserveren som vist på billedet nedenfor.

$ sudo ls -l /var/named/slaves

Bekræft zoneoplysningerne ved hjælp af kat-kommandoen.

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

Åbn derefter DNS-port 53 på iptables for at tillade indgående forbindelse.

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

Gem reglerne for iptables, og genstart tjenesten iptables.

$ sudo service iptables save
$ sudo service iptables restart

Gør tjenesten vedvarende ved systemstart.

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

Det er det!. Nu tid til at konfigurere vores klientmaskiner og kontrollere værtsnavnet.

Konfigurer klientmaskine

På klientsiden er vi nødt til at tildele Primær (192.168.0.200) og Sekundær DNS (192.168.0.201) post i netværksindstillinger for at få tildele et værtsnavn. For at gøre det skal du køre opsætningskommandoen for at definere alle disse poster som vist på billedet.

$ setup

Ellers skal du redigere filen ‘/etc/reslov.conf’ og tilføje følgende poster.

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

Bekræft nu ip, værtsnavn og navneserveropslag.

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

Tjek nu fremad og omvendt DNS-opslag ved hjælp af.

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

Underbemanding af graveoutput:

  1. Overskrift - Dette siger alt, hvad vi har bedt om, og hvordan resultatet blev.
  2. Status - Status var INGEN FEJL, det betyder, hvilken forespørgsel, der blev sendt af os, lykkedes uden FEJL.
  3. Spørgsmål - Forespørgslen, som blev foretaget af os, her var min forespørgsel masterdns.tecmintlocal.com.
  4. Svar - Forespørgslen om forespørgsel blev løst, hvis der er tilgængelig information.
  5. Autoritet - Navneservernes svar for domænet og zonen.
  6. Yderligere - Yderligere oplysninger om navneservere såsom værtsnavn og IP-adresse.
  7. Forespørgselstid - Hvor lang tid tog det at løse navnene fra ovenstående servere.

Kontroller endelig vores node og lav et 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

Endelig er opsætningen afsluttet, her har vi konfigureret både Primary (Master) og Slave (Seconday) DNS-server med succes, håber alle har opsat uden noget problem, er du velkommen til at droppe en kommentar, hvis du står over for et problem under opsætningen.