Ricerca nel sito web

Configura il server DNS master-slave utilizzando gli strumenti "Bind" in RHEL/CentOS 6.5


Domain Name Server (DNS) utilizzato per la risoluzione dei nomi su qualsiasi host. I server DNS master (server primario) sono i gestori dati di zona originali e i server DNS slave (server secondario) sono solo server di backup utilizzati per copiare le stesse informazioni di zona da i server principali. Master Server risolverà i nomi per ogni host che abbiamo definito nel database di zona e utilizzerà il protocollo UDP, poiché i protocolli UDP non utilizzano mai il processo di riconoscimento mentre tcp utilizza il riconoscimento. Anche i server DNS utilizzano i protocolli UDP per risolvere al più presto la richiesta di query.

Come funziona il DNS?

Comprendere il DNS potrebbe creare poca confusione per i principianti. Ecco una breve spiegazione su come funzionano i DNS.

Diciamo, se abbiamo bisogno di accedere a qualsiasi sito web cosa faremo? Basta digitare www.google.com nel browser e premere Invio. Hmm questo è tutto ciò che sappiamo, ma il fatto è che il DNS lo attraversa mentre interroga per noi. Mentre digitiamo www.google.com il sistema cercherà www.google.com. Ogni volta che digitiamo un nome di dominio, c'è un . (punto) alla fine di www.google.com che dice di cercare nel server root dello spazio dei nomi.

A livello globale sono disponibili 13 server root per risolvere la query. Inizialmente, mentre premiamo Invio come www.google.com, il nostro browser passerà una richiesta al nostro risolutore locale, che ha una voce sulle informazioni sui nostri server DNS master e slave. Se non hanno informazioni su tale query richiesta, passeranno la richiesta al dominio di primo livello (TLD), se il TLD dice che non conosco la richiesta, potrebbe essere il server autorevole a conoscerti richiesta, inoltrerà ai server autorevoli, qui solo www.google.com è stato definito come indirizzo 72.36.15.56.

Nel frattempo il server autorevole fornirà la risposta al TLD e il TLD passerà al server root e root fornirà le informazioni al browser, quindi il browser memorizzerà nella cache la richiesta DNS per un uso futuro. Pertanto questo lungo processo si risolverà in pochi millisecondi. Se non conoscono la richiesta risponderanno come NXDOMAIN. Ciò significa che non è stato trovato alcun record nel database della zona. Spero che questo ti faccia capire come funziona il DNS.

Leggi anche: Configurazione del server cache DNS in Ubuntu

Il mio ambiente di test

Per questo articolo utilizzo 3 macchine, 2 per la configurazione del server (master e slave) e 1 per il 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
Pacchetti di requisiti
bind, bind-utils, bind-chroot
File di configurazione utilizzati
config file	:	/etc/named.conf
script file	:	/etc/init.d/named
Porta e protocolli utilizzati
53, UDP

Configura il server DNS principale

Innanzitutto, verifica l'indirizzo IP, il nome host e la versione di distribuzione del server DNS master, prima di procedere con la configurazione.

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

Una volta confermato che le impostazioni di cui sopra sono corrette, è ora di procedere con l'installazione dei pacchetti richiesti.

sudo yum install bind* -y

Installazione e configurazione di Bind

Dopo aver installato i pacchetti richiesti, ora definisci i file di zona nel file di configurazione principale "named.conf".

sudo vim /etc/named.conf

Di seguito è riportata la voce del mio file named.conf, modifica il file di configurazione in base alle tue necessità.

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

Di seguito è riportata la spiegazione di ciascuna configurazione utilizzata nel file precedente.

  1. porta di ascolto 53: viene utilizzata per l'ascolto del DNS nelle interfacce disponibili.
  2. Master DNS: definisci il tuo indirizzo IP DNS master per ascoltare la query.
  3. DNS slave – Definisci il DNS slave, che viene utilizzato per sincronizzare le informazioni sulla nostra zona per risolvere gli host dal Master.
  4. ricorsione no – Se è impostato su sì, le query ricorsive trasformeranno il server in un attacco DDOS.
  5. Nome zona – Definisci il nome della tua zona qui definito come tecminlocal.com.
  6. tipo master – Poiché questo sistema è stato configurato per un server master, per il prossimo server slave questo sarà slave.
  7. tecmintlocal.fwd.zone – Questo file contiene le informazioni sull'host per questa zona.
  8. allow-update none – Se non verrà impostato nessuno. non utilizzerà il DNS dinamico (DDNS).

Creazione di file della zona master

Innanzitutto definiamo l'ingresso nella zona di ricerca diretta. Qui dobbiamo creare i file di zona nel nome di ciò che abbiamo definito nel file named.conf come di seguito.

tecmintlocal.fwd.zone
tecmintlocal.rev.zone

Utilizziamo file di configurazione di esempio per creare file di zona forward, per questo dobbiamo copiare i file di configurazione di esempio.

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

Una volta copiati i file di configurazione, ora modifica questi file di zone utilizzando l'editor vim.

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

Prima di definire le informazioni del nostro host nel file della zona di inoltro, dai una rapida occhiata al file della zona di esempio.

Questa è la mia configurazione della zona di inoltro, aggiungi la voce seguente e apporta le modifiche secondo le tue necessità.

$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

Salva e chiudi il file utilizzando wq!. Dopo aver modificato la ricerca in avanti, appare come di seguito: utilizza TAB per ottenere un formato decente nel file di zona.

Ora crea il file di ricerca inversa, abbiamo già creato una copia del file di loopback nel nome tecmintlocal.rev.zone. Quindi, utilizziamo questo file per configurare la nostra ricerca inversa.

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

Prima di definire le informazioni sul nostro host nel file della zona inversa, dai una rapida occhiata al file di ricerca inversa di esempio come mostrato di seguito.

Questa è la mia configurazione della zona inversa, aggiungi la voce seguente e apporta le modifiche secondo le tue necessità.

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

Salva e chiudi il file utilizzando wq!. Dopo aver modificato la ricerca inversa, appare come di seguito: utilizza TAB per ottenere un formato decente nel file di zona.

Controlla la proprietà del gruppo dei file di ricerca diretta e di ricerca inversa, prima di verificare eventuali errori nella configurazione.

sudo ls -l /var/named/

Qui possiamo vedere che entrambi i file sono di proprietà degli utenti root, perché i file che facciamo una copia dai file di esempio sono disponibili in /var/named/. Cambia il gruppo in denominato su entrambi i file utilizzando i seguenti comandi.

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

Dopo aver impostato la proprietà corretta sui file, verificali nuovamente.

sudo ls -l /var/named/

Ora controlla gli errori nei file di zona, prima di avviare il servizio DNS. Prima controlla il file named.conf, poi controlla gli altri file di zona.

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

Per impostazione predefinita iptables era in esecuzione e il nostro server DNS è limitato a localhost, se il client desidera risolvere il nome dal nostro server DNS, dobbiamo consentire la richiesta in entrata, per questo dobbiamo aggiungere la regola in entrata iptables per la porta 53.

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

Ora verifica che le regole siano state aggiunte correttamente nella catena INPUT.

sudo iptables -L INPUT

Successivamente, salva le regole e riavvia il firewall.

sudo service iptables save
sudo service iptables restart

Avvia il servizio denominato e rendilo persistente.

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

Infine, testa i file di zona DNS master configurati (in avanti e all'indietro), utilizzando gli strumenti dig e nslookup.

dig masterdns.tecmintlocal.com		[Forward Zone]

dig -x 192.168.0.200

nslookup tecmintlocal.com
nslookup masterdns.tecmintlocal.com
nslookup slavedns.tecmintlocal.com

Freddo! abbiamo configurato un Master DNS, ora dobbiamo impostare un server Slave DNS. Andiamo avanti con la configurazione di un server slave. Questo non richiederà molto tempo come configurazione principale.

Configura il server DNS secondario

Nella macchina Slave, inoltre, dobbiamo installare gli stessi pacchetti di collegamento mostrati in Master, quindi installiamoli utilizzando il seguente comando.

sudo yum install bind* -y

Apri e modifica il file "named.conf" per il nostro database di zona e porta l'ascolto.

sudo vim /etc/named.conf

Apporta le modifiche come mostrato, secondo le tue esigenze.

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

Avvia il servizio DNS utilizzando.

sudo service named start

Dopo aver riavviato il servizio di associazione, non dobbiamo definire le informazioni sulla zona individualmente, poiché il nostro consenti trasferimento replicherà le informazioni sulla zona dal server principale come mostrato nell'immagine seguente.

sudo ls -l /var/named/slaves

Verificare le informazioni sulla zona utilizzando il comando cat.

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

Successivamente, apri la porta DNS 53 su iptables per consentire la connessione in entrata.

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

Salva le regole di iptables e riavvia il servizio iptables.

sudo service iptables save
sudo service iptables restart

Rendi il servizio persistente all'avvio del sistema.

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

Questo è tutto!. Ora è il momento di configurare le nostre macchine client e verificare il nome host.

Configura macchina client

Sul lato client dobbiamo assegnare la voce DNS primario (192.168.0.200) e DNS secondario (192.168.0.201) nelle impostazioni di rete per ottenere l'assegnazione di un nome host. Per fare ciò, esegui il comando setup per definire tutte queste voci come mostrato nell'immagine.

setup

Altrimenti, modifica il file "/etc/reslov.conf" e aggiungi le seguenti voci.

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

Ora verifica la ricerca di IP, nome host e server dei nomi.

ifconfig | grep inet
hostname
nslookup tecmintlocal.com

Ora controlla la ricerca DNS diretta e inversa utilizzando.

dig masterdns.tecmintlocal.com
dig -x 192.168.0.200

Comprensione dell'output dig:

  1. Intestazione: dice tutto ciò che abbiamo chiesto e come è stato il risultato.
  2. Stato – Lo stato era NO ERRORE, ciò significa che la richiesta di query inviata da noi ha avuto successo senza alcun ERRORE.
  3. Domanda – La query che è stata fatta da noi, qui la mia query era masterdns.tecmintlocal.com.
  4. Risposta: la richiesta di query è stata risolta se sono disponibili informazioni.
  5. Autorità: la risposta del server dei nomi per il dominio e la zona.
  6. Ulteriori: informazioni aggiuntive relative ai server dei nomi come nome host e indirizzo IP.
  7. Tempo query: quanto tempo è stato necessario per risolvere i nomi dai server sopra indicati.

Infine controlla il nostro nodo ed effettua un 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

Infine, configurazione completata, qui abbiamo configurato correttamente sia il server DNS primario (master) che quello slave (secondo), spero che tutti abbiano effettuato la configurazione senza problemi, sentiti libero di lasciare un commento se riscontri problemi durante la configurazione.