I server DNS possono essere configurati per fungere da master o slave per servire la richiesta DNS. Quando il DNS è configurato come slave, ottiene la copia dei dati di zona dal master utilizzando un metodo di trasferimento di zona e lo conserva in una cache per un determinato periodo per servire le query DNS.
Ambiente
itzgeek.local | ||
---|---|---|
ns1.itzgeek.local | 192.168.0.10 | Server DNS principale |
ns2.itzgeek.local | 192.168.0.20 | Server DNS slave. Si occupa delle richieste DNS quando il server principale si interrompe |
ns1.itzgeek.local è già configurato come master per il dominio itzgeek.local.
LEGGI :Configura il server DNS su Ubuntu 18.04 / Ubuntu 16.04
LEGGI :Configura il server DNS su Debian 10 / Debian 9
Ora configureremo ns2.itzgeek.local come server DNS slave per il dominio itzgeek.local.
Configura il server principale
Dobbiamo configurare BIND sul server master (ns1.itzgeek.local) per abilitare il trasferimento di zona al nostro server secondario (ns2.itzgeek.local).
Modifica il file /etc/named.conf.local in ns1.itzgeek.local.
sudo nano /etc/bind/named.conf.local
Dovresti aggiornare le zone esistenti che abbiamo creato per itzgeek.local con il parametro allow-transfer and also-notify.
Il trasferimento consentito ti consentirà di trasferire le zone dal master a un server slave e anche la notifica ci aiuta a notificare a un server slave quando c'è un cambio di zone sul server master.
Zona di andata
zone "itzgeek.local" IN { // Domain name type master; // Primary DNS file "/etc/bind/forward.itzgeek.local.db"; // Forward lookup file allow-transfer { 192.168.0.20; }; //Allow Transfer of zone from the master server also-notify { 192.168.0.20; }; //Notify slave for zone changes };
Zona inversa
zone "0.168.192.in-addr.arpa" IN { //Reverse lookup name, should match your network in reverse order type master; // Primary DNS file "/etc/bind/reverse.itzgeek.local.db"; //Reverse lookup file allow-transfer { 192.168.0.20; }; //Allow Transfer of zone from the master server also-notify { 192.168.0.20; }; //Notify slave for zone changes };
Riavvia il servizio DNS su ns1.itzgeek.local.
sudo systemctl restart bind9
Configura server slave
Assicurati di installare i seguenti pacchetti sul server slave.
sudo apt-get install -y bind9 bind9utils bind9-doc dnsutils
È il momento di aggiungere una dichiarazione di zona slave sul server slave (ns2.itzgeek.local). Modifica il file /etc/bind/named.conf.local.
sudo nano /etc/bind/named.conf.local
Zona di andata
Aggiungi la zona slave come di seguito.
zone "itzgeek.local" IN { //Domain name type slave; //Secondary Slave DNS file "/var/cache/bind/forward.itzgeek.local.db"; //Forward Zone Cache file masters { 192.168.0.10; }; //Master Server IP };
Zona inversa
Aggiungi la zona slave come di seguito.
zone "0.168.192.in-addr.arpa" IN { //Reverse lookup name. Should match your network in reverse order type slave; // Secondary/Slave DNS file "/var/cache/bind/reverse.itzgeek.local.db"; //Reverse Zone Cache file masters { 192.168.0.10; }; //Master Server IP };
Riavvia il servizio DNS su ns2.itzgeek.local
sudo systemctl restart bind9
Attendi qualche minuto e inizierai a vedere qualcosa di simile sotto nel file /var/log/syslog.
Jan 4 23:18:49 ns2 named[2637]: zone itzgeek.local/IN: Transfer started. Jan 4 23:18:49 ns2 named[2637]: transfer of 'itzgeek.local/IN' from 192.168.0.10#53: connected using 192.168.0.20#54333 Jan 4 23:18:49 ns2 named[2637]: zone itzgeek.local/IN: transferred serial 3 Jan 4 23:18:49 ns2 named[2637]: transfer of 'itzgeek.local/IN' from 192.168.0.10#53: Transfer status: success Jan 4 23:18:49 ns2 named[2637]: transfer of 'itzgeek.local/IN' from 192.168.0.10#53: Transfer completed: 1 messages, 8 records, 228 bytes, 0.004 secs (57000 bytes/sec) Jan 4 23:18:49 ns2 named[2637]: managed-keys-zone: Key 20326 for zone . acceptance timer complete: key now trusted Jan 4 23:18:49 ns2 named[2637]: resolver priming query complete Jan 4 23:18:49 ns2 named[2637]: zone 0.168.192.in-addr.arpa/IN: Transfer started. Jan 4 23:18:49 ns2 named[2637]: transfer of '0.168.192.in-addr.arpa/IN' from 192.168.0.10#53: connected using 192.168.0.20#55105 Jan 4 23:18:49 ns2 named[2637]: zone 0.168.192.in-addr.arpa/IN: transferred serial 3 Jan 4 23:18:49 ns2 named[2637]: transfer of '0.168.192.in-addr.arpa/IN' from 192.168.0.10#53: Transfer status: success Jan 4 23:18:49 ns2 named[2637]: transfer of '0.168.192.in-addr.arpa/IN' from 192.168.0.10#53: Transfer completed: 1 messages, 6 records, 210 bytes, 0.007 secs (30000 bytes/sec) Jan 4 23:18:49 ns2 named[2637]: zone 0.168.192.in-addr.arpa/IN: sending notifies (serial 3)
Aggiornamento record DNS
Durante la modifica dei record di qualsiasi zona sul server master, assicurati di aggiornare il numero di serie a un numero casuale, superiore a quello corrente. Inoltre, eseguire il comando seguente sul server master per ricaricare la zona in modo che la zona slave ottenga i record aggiornati.Modifica itzgeek.local e 0.168.192.in-addr.arpa con i nomi delle tue zone.
### Forward Zone ### sudo rndc reload itzgeek.local ### Reverse Zone ### sudo rndc reload 0.168.192.in-addr.arpa
Verifica server DNS slave
Sulla macchina client, aggiungi un indirizzo IP del server DNS slave nel file /etc/resolv.conf.
sudo nano /etc/resolv.conf
Aggiungi una voce DNS aggiuntiva come di seguito insieme alle voci esistenti.
nameserver 192.168.0.20
O
Leggi il tutorial seguente per impostare l'IP del server DNS in Linux.
LEGGI: Come impostare l'indirizzo IP DNS in CentOS / Fedora
LEGGI: Come impostare l'indirizzo IP DNS in Ubuntu / Debian – ifupdown
LEGGI: Come impostare l'indirizzo IP DNS in Ubuntu 18.04 – Netplan
Puoi utilizzare il comando nslookup o dig per verificare il server DNS.
Utilizzare il comando dig per verificare la ricerca in avanti insieme a @Verifica la ricerca di www.itzgeek.local utilizzando ns2.itzgeek.local (192.168.0.20)
dig www.itzgeek.local @192.168.0.20
Risultato:
; <<>> DiG 9.11.3-1ubuntu1.7-Ubuntu <<>> www.itzgeek.local @192.168.0.20 ;; global options: +cmd ;; Got answer: ;; WARNING: .local is reserved for Multicast DNS ;; You are currently testing what happens when an mDNS query is leaked to DNS ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 29076 ;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 2 ;; OPT PSEUDOSECTION: ; EDNS: version: 0, flags:; udp: 4096 ; COOKIE: 0ff4fbeabbfe6d45cf28f0e85e11725b14943fb073203e78 (good) ;; QUESTION SECTION: ;www.itzgeek.local. IN A ;; ANSWER SECTION: www.itzgeek.local. 604800 IN A 192.168.0.100 ;; AUTHORITY SECTION: itzgeek.local. 604800 IN NS ns1.itzgeek.local. ;; ADDITIONAL SECTION: ns1.itzgeek.local. 604800 IN A 192.168.0.10 ;; Query time: 0 msec ;; SERVER: 192.168.0.20#53(192.168.0.20) ;; WHEN: Sun Jan 05 10:51:26 IST 2020 ;; MSG SIZE rcvd: 124
Ora puoi vedere che il server slave risponde alle query DNS.
Conclusione
È tutto. Hai configurato correttamente il server DNS slave su Ubuntu 18.04 / Ubuntu 16.04 e Debian 10 / Debian 9. Condividi il tuo feedback nella sezione commenti.