Konfigurer Master-Slave DNS-server ved å bruke Bind-verktøy i RHEL/CentOS 6.5


Domain Name Server (DNS) som brukes for navneløsning til alle verter. Master DNS-servere (Primærserver) er de originale sonedatabehandlerne og Slave DNS-servere (Sekundær Server) er bare en backupservere som brukes til å kopiere den samme soneinformasjonen fra hovedserverne. Master Server vil løse navnene for hver vert som vi definerte i sonedatabasen og bruker UDP-protokollen, fordi UDP-protokoller aldri bruker bekreftelsesprosessen mens tcp bruker bekreftelse. DNS-servere bruker også UDP-protokoller for å løse forespørselen tidligst.

Å forstå DNS kan være litt forvirrende for nybegynnere. Her er en kort forklaring på hvordan DNS fungerer.

La oss si, hvis vi trenger tilgang til et nettsted, hva vil vi gjøre? Bare skriv www.google.com i nettleseren og trykk enter. Hmm det er alt vi vet, men faktum er hvor smerte DNS går gjennom det mens de spør etter oss. Mens vi skriver www.google.com vil systemet se etter www.google.com. Hver gang vi skriver inn et domenenavn, er det en . (prikk) på slutten av www.google.com som sier å søke på rotserveren til navneområdet.

Globalt er det 13 rotservere tilgjengelig for å løse spørsmålet. Til å begynne med, mens vi trykker på enter som www.google.com, vil nettleseren vår sende en forespørsel til vår lokale løser, som har en oppføring om vår master- og slave-DNS-serverinformasjon. Hvis de ikke har informasjon om et slikt forespurt søk, vil de sende forespørselen til toppnivådomenet (TLD), hvis TLD sier at jeg ikke kjenner forespørselen, kan det være den autoritative serveren som kjenner forespørselen din, vil den videresendes til autoritativ servere, her ble bare www.google.com definert som adresse 72.36.15.56.

I mellomtiden vil autoritativ server gi svaret på TLD og TLD vil sendes til rotserveren og root vil gi informasjonen til nettleseren, derfor vil nettleseren hurtigbufre DNS-forespørselen for fremtidig bruk. Dermed vil disse lange prosessene bare løse seg i løpet av millisekunder. Hvis de ikke kjenner forespørselen, svarer de som NXDOMAIN. Det betyr at det ikke er noen registrering som ble funnet i Zone-databasen. Håper dette får deg til å forstå hvordan DNS fungerer.

Les også: Konfigurer DNS Cache Server i Ubuntu

For denne artikkelen bruker jeg 3 maskiner, 2 for serveroppsett (master og slave) og 1 for 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

Konfigurer Master DNS Server

Bekreft først IP-adressen, vertsnavnet og distribusjonsversjonen av Master DNS Server før du går videre for oppsett.

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

Når du bekrefter at innstillingene ovenfor er riktige, er det på tide å gå videre for å installere nødvendige pakker.

$ sudo yum install bind* -y

Etter å ha installert nødvendige pakker, definer nå sonefiler i hovedkonfigurasjonsfilen 'named.conf'.

$ sudo vim /etc/named.conf

Nedenfor er min named.conf-filoppføring, endre konfigurasjonsfilen etter ditt 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 av hver konfigurasjon vi brukte i filen ovenfor.

  1. lytte-på-port 53 – Denne brukes for at DNS skal lytte i tilgjengelige grensesnitt.
  2. Master DNS – Definer din Master DNS IP-adresse for å lytte til spørringen.
  3. Slave-DNS – Definer din slave-DNS, som brukes til å synkronisere soneinformasjonen vår for å løse opp vertene fra Master.
  4. rekursjon nei – Hvis den er satt til ja, vil rekursive spørringer gjøre serveren til DDOS-angrep.
  5. Sonenavn – Definer sonenavnet ditt her definert som tecminlocal.com.
  6. skriv master – Siden dette systemet ble konfigurert for en masterserver, vil dette være slave for kommende slaveserver.
  7. tecmintlocal.fwd.zone – Denne filen har vertsinformasjonen for denne sonen.
  8. tillat-oppdatering ingen – Hvis ingen vil angi. den vil ikke bruke dynamisk DNS (DDNS).

La oss først definere foroveroppslagssoneinngang. Her må vi lage sonefilene i navnet til det vi har definert i named.conf-filen som nedenfor.

tecmintlocal.fwd.zone
tecmintlocal.rev.zone

Vi bruker eksempelkonfigurasjonsfiler for å lage videresonefiler, for dette må vi kopiere eksempelkonfigurasjonsfilene.

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

En gang har du kopiert konfigurasjonsfiler, rediger nå disse sonefilene ved å bruke vim editor.

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

Før du definerer vertsinformasjonen vår i forover sonefilen, ta en rask titt på prøvesonefilen.

Dette er min konfigurasjon for forover sonen, legg til oppføringen nedenfor og gjør endringer etter 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

Lagre og avslutt filen med wq!. Etter å ha redigert foroveroppslaget ser det ut som nedenfor, Bruk TAB for å få et anstendig format i sonefil.

Nå, lag omvendt oppslagsfil, vi har allerede laget en kopi av loop-back-filen i navnet tecmintlocal.rev.zone. Så vi bruker denne filen til å konfigurere vårt omvendte oppslag.

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

Før du definerer vertsinformasjonen vår i omvendt sonefil, ta en rask titt på eksempelfilen for omvendt oppslag som vist nedenfor.

Dette er min omvendte sonekonfigurasjon, legg til oppføringen nedenfor og gjør endringer etter 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.

Lagre og avslutt filen med wq!. Etter å ha redigert det omvendte oppslaget, ser det ut som nedenfor, Bruk TAB for å få et anstendig format i sonefil.

Kontroller gruppeeierskapet til filer for foroveroppslag og omvendt oppslag før du sjekker for feil i konfigurasjonen.

$ sudo ls -l /var/named/

Her kan vi se at begge filene er i root-brukers eierskap, fordi filer som vi kopierer fra eksempelfiler er tilgjengelige under /var/named/. Endre gruppen til navngitt på begge filene ved å bruke følgende kommandoer.

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

Etter å ha angitt riktig eierskap for filene, verifiser dem på nytt.

$ sudo ls -l /var/named/

Se nå etter feilene i sonefilene før du starter DNS-tjenesten. Sjekk først filen named.conf, og sjekk deretter andre sonefiler.

$ 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 kjørte iptables og vår DNS-server er begrenset til localhost, hvis klienten ønsker å løse navn fra vår DNS-server, må vi tillate den innkommende forespørselen, for det må vi legge til iptables inngående regel for port 53.

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

Bekreft nå at reglene er lagt til på riktig måte i INPUT-kjeden.

$ sudo iptables -L INPUT

Deretter lagrer du reglene og starter brannmuren på nytt.

$ sudo service iptables save
$ sudo service iptables restart

Start den navngitte tjenesten og gjør den vedvarende.

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

Til slutt, test de konfigurerte Master DNS-sonefilene (fremover og bakover), ved å bruke dig & nslookup-verktøy.

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

Kul! vi har konfigurert en Master DNS, nå må vi sette opp en Slave DNS Server. La oss gå videre for å sette opp en slaveserver, dette vil ikke ta mye tid som masteroppsett.

Sett opp slave DNS-server

I Slave-maskinen må vi også installere de samme bindepakkene som vist i Master, så la oss installere dem ved å bruke følgende kommando.

$ sudo yum install bind* -y

Åpne og rediger 'named.conf'-filen for vår sonedatabase og portlytting.

$ sudo vim /etc/named.conf

Gjør endringer 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 med.

$ sudo service named start

Etter å ha startet bindingstjenesten på nytt, trenger vi ikke å definere soneinformasjonen individuelt, siden vår tillatelsesoverføring vil replikere soneinformasjonen fra hovedserveren som vist i bildet nedenfor.

$ sudo ls -l /var/named/slaves

Bekreft soneinformasjonen ved hjelp av cat-kommandoen.

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

Deretter åpner du DNS-port 53 på iptables for å tillate innkommende tilkobling.

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

Lagre iptables-reglene og start iptables-tjenesten på nytt.

$ sudo service iptables save
$ sudo service iptables restart

Gjør tjenesten vedvarende ved systemoppstart.

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

Det er det!. Nå er det tid for å konfigurere klientmaskinene våre og se etter vertsnavnet.

Konfigurer klientmaskin

På klientsiden må vi tilordne Primær (192.168.0.200) og Sekundær DNS (192.168.0.201) oppføring i nettverksinnstillinger for å få tildelt et vertsnavn. For å gjøre, kjør oppsettkommandoen for å definere alle disse oppføringene som vist på bildet.

$ setup

Ellers, rediger '/etc/reslov.conf'-filen og legg til følgende oppføringer.

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

Bekreft nå ip, vertsnavn og navneserveroppslag.

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

Sjekk nå frem og tilbake DNS-oppslag ved å bruke.

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

Forstå graveutgangen:

  1. Overskrift – Dette sier alt hva vi har spurt om og hvordan resultatet ble.
  2. Status – Status var INGEN FEIL, det betyr at forespørselen som ble sendt av oss var vellykket uten noen FEIL.
  3. Spørsmål – Spørsmålet som ble laget av oss, her var spørsmålet mitt masterdns.tecmintlocal.com.
  4. Svar – Forespørselen ble løst hvis det er tilgjengelig informasjon.
  5. Authority – Navnetjenerens svar for domenet og sonen.
  6. Ytterligere – tilleggsinformasjon om navneservere som vertsnavn og IP-adresse.
  7. Søketid – Hvor lang tid det tok å løse navnene fra serverne ovenfor.

Se til slutt etter noden vår og lag 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, oppsettet fullført, her har vi konfigurert både Primær (Master) og Slave (Seconday) DNS-server vellykket, håper alle har konfigurert uten problemer, slipp gjerne en kommentar hvis du møter problemer under oppsett.