Domain Name Service (DNS) è un servizio Internet che associa indirizzi IP a nomi di dominio completi (FQDN) e viceversa.
BIND sta per Berkley Internet Naming Daemon.
BIND è il programma più comune utilizzato per mantenere un server dei nomi su Linux.
In questo tutorial spiegheremo come installare e configurare un server DNS.
Se non conosci il DNS, dovresti prima comprendere i fondamenti del DNS e come funziona.
1. Informazioni sulla rete
In questo tutorial, configureremo un server DNS locale per la rete mostrata nel diagramma seguente.
Useremo il dominio "thegeekstuff.net" come esempio per questa installazione DNS. "mail", "web", "ns" sono gli host che risiedono all'interno di questo dominio.
È possibile configurare un unico sistema che funga da server dei nomi di cache, primario/master e secondario/slave. Configurare questo DNS come server DNS primario/master e cache.
Installeremo il server DNS su "10.42.0.83".

2. Installa Bind
Installa il pacchetto bind9 utilizzando le utilità di gestione dei pacchetti appropriate per le tue distribuzioni Linux.
Nelle versioni Debian/Ubuntu, procedi come segue:
$ sudo apt-get install bind9
Nelle versioni Redhat/CentOS/Fedora, procedi come segue:
# yum install bind9
Tutte le configurazioni DNS sono memorizzate nella directory /etc/bind. La configurazione principale è /etc/bind/named.conf che includerà altri file necessari. Il file denominato /etc/bind/db.root descrive i server dei nomi radice nel mondo.
3. Configura il server dei nomi della cache
Il compito di un server di cache DNS è interrogare altri server DNS e memorizzare nella cache la risposta. La prossima volta che viene data la stessa query, fornirà la risposta dalla cache. La cache verrà aggiornata periodicamente.
Tieni presente che, anche se puoi configurare bind per funzionare come server primario e come server di memorizzazione nella cache, non è consigliabile farlo per motivi di sicurezza. È consigliabile disporre di un server di cache separato.
Tutto ciò che dobbiamo fare per configurare un Cache NameServer è aggiungere il server DNS del tuo ISP (Internet Service Provider) o qualsiasi server OpenDNS al file /etc/bind/named.conf.options. Ad esempio, utilizzeremo i server DNS pubblici di Google, 8.8.8.8 e 8.8.4.4.
Decommenta e modifica la seguente riga come mostrato di seguito nel file /etc/bind/named.conf.options.
forwarders { 8.8.8.8; 8.8.4.4; };
Dopo la modifica di cui sopra, riavvia il server DNS.
$ sudo service bind9 restart
4. Testare il server dei nomi della cache
È possibile utilizzare il comando dig per testare i servizi DNS. Gli esempi di comando DIG spiegano di più su come eseguire ricerche DNS.
$ dig ubuntu.com ;; Query time: 1323 msec
Ora, la seconda volta che esegui lo scavo, dovrebbe esserci un miglioramento nel tempo della query. Come puoi vedere di seguito, la seconda volta ci sono voluti solo 3 msec, poiché riceve le informazioni dal nostro server DNS di memorizzazione nella cache.
$ dig ubuntu.com ;; Query time: 3 msec
5. Configura il server dei nomi principale/principale
Successivamente, configureremo bind9 come principale/principale per il dominio/zona "thegeekstuff.net".
Come primo passo nella configurazione del nostro server dei nomi primario/principale, dovremmo aggiungere la risoluzione Forward e Reverse a bind9.
Per aggiungere una risoluzione DNS Forward e Reverse a bind9, modifica /etc/bind9/named.conf.local.
zone "thegeekstuff.net" { type master; file "/etc/bind/db.thegeekstuff.net"; }; zone "0.42.10.in-addr.arpa" { type master; notify no; file "/etc/bind/db.10"; };
Ora il file /etc/bind/db.thegeekstuff.net conterrà i dettagli per risolvere il nome host in indirizzo IP per questo dominio/zona e il file /etc/bind/db.10 avrà i dettagli per risolvere l'indirizzo IP in nome host .
6. Crea la risoluzione diretta per il server dei nomi primario/principale
Ora aggiungeremo i dettagli necessari per la risoluzione in avanti in /etc/bind/db.thegeekstuff.net.
Per prima cosa, copia /etc/bind/db.local in /etc/bind/db.thegeekstuff.net
$ sudo cp /etc/bind/db.local /etc/bind/db.thegeekstuff.net
Quindi, modifica /etc/bind/db.thegeekstuff.net e sostituisci quanto segue.
- Nella riga che ha SOA:localhost. – Questo è l'FQDN del server responsabile per questo dominio. Ho installato bind9 in 10.42.0.83, il cui nome host è "ns". Quindi sostituisci "localhost". con "ns.thegeekstuff.net.". Assicurati che finisca con un punto (.).
- Nella riga che ha SOA:root.localhost. – Questo è l'indirizzo e-mail della persona responsabile di questo server. Usa punto(.) invece di @. Ho sostituito con lak.localhost.
- Nella riga che ha NS:localhost. – Si tratta della definizione del server dei nomi per il dominio (NS). Dobbiamo cambiarlo nel nome di dominio completo del server dei nomi. Cambialo in "ns.thegeekstuff.net.". Assicurati di avere un "." alla fine.
Quindi, definisci il record A e il record MX per il dominio. Un record è quello che associa il nome host all'indirizzo IP e il record MX indicherà al server di posta di utilizzare per questo dominio.
Una volta apportate le modifiche, il file /etc/bind/db.thegeekstuff.net sarà simile al seguente:
$TTL 604800 @ IN SOA ns.thegeekstuff.net. lak.localhost. ( 1024 ; Serial 604800 ; Refresh 86400 ; Retry 2419200 ; Expire 604800 ) ; Negative Cache TTL ; @ IN NS ns.thegeekstuff.net. thegeekstuff.net. IN MX 10 mail.thegeekstuff.net. ns IN A 10.42.0.83 web IN A 10.42.0.80 mail IN A 10.42.0.70
6. Crea la risoluzione inversa per il server dei nomi primario/principale
Aggiungeremo i dettagli necessari per la risoluzione inversa al file /etc/bind/db.10. Copia il file /etc/bind/db.127 in /etc/bind/db.10
$ sudo cp /etc/bind/db.127 /etc/bind/db.10
Quindi, modifica il file /etc/bind/db.10 e sostanzialmente modificando le stesse opzioni di /etc/bind/db.thegeekstuff.net
$TTL 604800 @ IN SOA ns.thegeekstuff.net. root.localhost. ( 20 ; Serial 604800 ; Refresh 86400 ; Retry 2419200 ; Expire 604800 ) ; Negative Cache TTL ; @ IN NS ns.
Quindi, per ogni record A in /etc/bind/db.thegeekstuff.net, aggiungi un record PTR.
$TTL 604800 @ IN SOA ns.thegeekstuff.net. root.thegeekstuff.net. ( 20 ; Serial 604800 ; Refresh 86400 ; Retry 2419200 ; Expire 604800 ) ; Negative Cache TTL ; @ IN NS ns. 83 IN PTR ns.thegeekstuff.net. 70 IN PTR mail.thegeekstuff.net. 80 IN PTR web.thegeekstuff.net.
Ogni volta che si modificano i file db.thegeekstuff.net e db.10, è necessario incrementare anche il numero “Serial”. In genere l'amministratore utilizza GGMMAASS per i numeri di serie e quando modifica, cambia il numero di serie in modo appropriato.
Infine, riavvia il servizio bind9:
$ sudo service bind9 restart
7. Testare il server DNS
Ora abbiamo configurato il server DNS per il nostro dominio. Testeremo il nostro server DNS eseguendo il ping di mail.thegeekstuff.net da web.thegeekstuff.net.
Se il ping ha esito positivo, abbiamo configurato correttamente il DNS.
Puoi anche utilizzare nslookup e dig per testare i server DNS.
Sul server web.thegeekstuff.net, aggiungi quanto segue a /etc/resolv.conf
nameserver 10.42.0.83
Ora esegui il ping, mail.thegeekstuff.net, che dovrebbe risolvere l'indirizzo in modo appropriato dal server DNS che abbiamo appena configurato.
$ ping mail.thegeekstuff.net PING mail.thegeekstuff.net (10.42.0.70) 56(84) bytes of data. 64 bytes from mail.thegeekstuff.net (10.42.0.70): icmp_req=1 ttl=64 time=0.482 ms 64 bytes from mail.thegeekstuff.net (10.42.0.70): icmp_req=2 ttl=64 time=0.532 ms