Come installare e configurare un server DNS

Il servizio DNS (Domain Name System) e' uno dei sistemi piu' importanti per il funzionamento di Internet stessa. Tutte le macchine che fanno parte della rete sono connesse tra di loro e sono in grado di comunicare poiche' ad ognuna di essa e' associato un indirizzo IP univoco. Questi indirizzi sono del tipo 212.25.170.148 ed immaginate quanto sarebbe difficile ricordare il nome di un sito in questo modo, tralasciando il fatto che poi ogni dominio puo' aver associato piu' di un indirizzo IP. www.google.it e' 209.85.229.103, ma anche 209.85.229.104, 209.85.229.105, 209.85.229.106 e 209.85.229.147. Il DNS consente di poter utilizzare nomi mnemonici (di gran lunga piu' facili da gestire) occupandosi quindi della conversione da nome macchina ad indirizzo IP. Per incrementare la visibilita' (in caso quindi in cui un dns non funzionasse correttamente) ogni sito puo' disporre di 3,4, o piu' DNS distinti ognuno situato in localita' geografiche differenti. Ogni sito deve avere almeno 2 DNS. La classica configurazione e' quella che prevede l'utilizzo di un DNS Master (primario) ed un DNS Slave (secondario). I termini "Master/primario" e "Slave/secondario" non stanno ad indicare la priorita' con il quale vengono interrogati, entrambi forniscono risposte autorevoli ed accettano le richieste con ordine casuale. Il dns master ha le informazioni relative ad un dominio scritte su file locali ed aggiorna quelle degli slave ogni qualvolta viene effettuata una modifica (ad esempio se viene creato un terzo livello del tipo segreteria.lucaercoli.it) oppure quando scade il tempo di vita (chiamato TTL) della zona. Possono coesistere piu' master ma ogni volta che viene editata una zona (ad esempio per modificare l'indirizzo ip del record www di un sito), dovra' essere modificata manualmente anche la zona presente sugli altri master (gli slave di aggiorneranno automaticamente). Possono esserci comunque molte configurazioni difatti i DNS possono essere di 5 tipi:

- Master;

- Slave;

- Caching (Ottengono informazioni dai DNS autorevoli, quindi master e slave, memorizzando le informazioni localmente fino allo scadere del TTL. Nel frattempo se ricevono altre query per uno stesso sito, in risposta vengono comunicati i dati presenti in cache);

-Forwarding (Sistemi che "smistano" le query ad un altro DNS, mantenendo in cache i risultati);

- Stealth (Particolari name server il cui nome non viene visualizzato pubblicamente, utilizzati ad esempio per risolvere i nomi delle macchine interne di una societa' ed evitare che possano essere comunicati all'esterno);

Vediamo adesso come installare e configurare il due server DNS BIND, uno master e l'altro slave. Nell'esempio verranno utilizzate le distribuzioni linux debian e centos:

Debian Linux

Tutti i comandi (se non diversamente specificato) dovranno essere processati sia sul server master che sullo slave.

Installiamo il servizio con

apt-get install bind9 bind9-host dnsutils

N.B. Basterebbe installare bind9 e bind9-host ma in dnsutils ci sono una serie di pacchetti che ci serviranno per fare dei test post installazione

Aggiungere la direttiva

recursion no;

nel gruppo "options" presente nel file /etc/bind/named.conf.options
Creiamo la directory che conterra tutte le zone per cui il nostro dns sara' autorevole

mkdir /var/named

Configurazione per il Master

in /etc/bind/named.conf.local

zone "lucaercoli.it" {

type master;

file "/var/named/lucaercoli.it.named";

allow-transfer {212.25.170.147;};

allow-update {212.25.170.147;};

};

N.B. Assegniate alla zona e al persorso del "file" quello del vostro sito e cambiate l'indirizzo ip 212.25.170.147 con quello del vostro server slave per consentire l'aggiornamento della zona quando viene modificata quella sul master

in /var/named/lucaercoli.it.named

$TTL    30m
@  IN SOA dns.lucaercoli.it. dns2.lucaercoli.it. (
2009100200               ;Serial
86400            ;refresh
7200             ;retry
2592000          ;expire
86400 )          ;minimum

IN NS   dns.lucaercoli.it.
IN NS   dns2.lucaercoli.it.

IN MX   10 mail

;in house subnet
www             IN A 212.25.170.148
ftp             IN CNAME www
mail            IN A 212.25.170.148

dns        IN A 212.25.170.146
dns2        IN A 212.25.170.147

N.B. Modificate l'indirizzo ip impostando quello del vostro sito e cambiando ovviamente il nome/ip dei due dns. Fate attenzione ad indentare corrattamente il file. Gli spazi sono importanti difatti bind potrebbe non leggere correttamente la zona. Dare quindi almeno uno spazio ad inizio riga di "IN NS"

Riavviare il servizio

/etc/init.d/bind9 restart

Configurazione per il server Slave:

in /etc/bind/named.conf.local

zone "lucaercoli.it" {
type slave;
file "/var/named/lucaercoli.it.named";
masters {
212.25.170.146;
};
};

N.B. Cambiate l'indirizzo ip 212.25.170.146 con quello del vostro server master e assegnate sia al nome della zona che al "file" quella associata al vostro sito

Riavviare il servizio

/etc/init.d/bind9 restart

CentOS GNU/Linux

Tutti i comandi (se non diversamente specificato) dovranno essere processati sia sul server master che sullo slave.

Installiamo il servizio con

yum install bind bind-libs bind-chroot bind-utils

Creiamo il file /var/named/chroot/etc/named.conf con questo contenuto

options {
directory "/var/named";
pid-file "/var/run/named/named.pid";

recursion no;

listen-on {
127.0.0.1;
212.25.170.148;
};

};

N.B. In "listen-on" impostate l'indirizzo ip su cui il dns deve rispondere.

Configurazione per il Master

in /var/named/chroot/etc/named.conf aggiungere

zone "lucaercoli.it" IN {
type master;
file "data/lucaercoli.it.named";

allow-transfer {212.25.170.147;};
allow-update {212.25.170.147;};};

N.B. Assegniate alla zona e al persorso del “file” quello del vostro sito e cambiate  l'indirizzo ip 212.25.170.147 con quello del vostro server slave per consentire l'aggiornamento della zona quando viene modificata quella sul master

in /var/named/chroot/var/named/data/lucaercoli.it.named

$TTL    30m
@  IN SOA dns.lucaercoli.it. dns2.lucaercoli.it. (
2009100200               ;Serial
86400            ;refresh
7200             ;retry
2592000          ;expire
86400 )          ;minimum

IN NS   dns.lucaercoli.it.
IN NS   dns2.lucaercoli.it.

IN MX   10 mail

;in house subnet
www             IN A 212.25.170.148
ftp             IN CNAME www
mail            IN A 212.25.170.148

dns        IN A 212.25.170.146
dns2        IN A 212.25.170.147

N.B. Modificate l’indirizzo ip impostando quello del vostro sito e cambiando ovviamente il nome/ip dei due dns. Fate attenzione ad indentare corrattamente il file. Gli spazi sono importanti difatti bind potrebbe non leggere correttamente la zona. Dare quindi almeno uno spazio ad inizio riga di "IN NS"

Riavviare il servizio

/etc/init.d/named restart

Configurazione per lo Slave

in /var/named/chroot/etc/named.conf aggiungere

zone “lucaercoli.it” {
type slave;
file "data/lucaercoli.it.named";
masters {
212.25.170.146;
};
};

N.B. Cambiate l’indirizzo ip 212.25.170.146 con quello del vostro server master e assegnate sia al nome della zona che al “file” quella associata al vostro sito

Riavviare il servizio

/etc/init.d/named restart