DNS Server

Da Wiki-itsos.

Situazione iniziale

Setup di un server DNS su Ubuntu 12.04

Premessa: Cosa è e a cosa serve un DNS?

Situazione di partenza: vogliamo pingare client 2 senza conoscere l'ip

2015-05-19 11 18 46-DNS.png


Impostazioni iniziali

Suggerisco di lavorare in modo che client 1, client 2, server DNS siano tre macchine virtuali.

2015-05-19 11 23 24-DNS.png

Le impostazioni della scheda di rete per client 1 sono:

Salvate e chiudete il file. Cio' vale per i SO senza network manager. Per i SO con network manager, le modifiche relative ai DNS, vanno fatte via network manager grafico

configurazione di rete per client 2: simile a client 1.


Configurazione del server DNS

Installazione dell'applicativo DNS

Per Ubuntu, è disponibile l'applicativo bind9 che offre il servizio DNS. Lo si può installare tramite apt-get:

     sudo apt-get install -y bind9
     ( il parametro “-y” evita la conferma dell'installazione da parte di apt). E' chiaro che in una macchina virtuale la rete deve esser visibile.

Configurazione del servizio DNS

  • Prima di poter iniziare la configurazione, è bene specificare che esistono 2 tipologie di DNS:
  1. caching: questa tipologia di server DNS non ha in se' la lista dei nomi e degli IP dei host da verificare, ma si affida a server DNS esterni per effettuare la risoluzione. Una volta effettuata la risoluzione, i nomi e gli IP vengono salvati nella cache del server in modo da poter fornire i dati con maggiore velocità in caso di richieste simili.
  2. autoritario: questa tipologia di server DNS ha configurato in se tutti gli abbinamenti indirizzo---IP e quindi non necessita di utilizzare server DNS esterni per la risoluzione dei nomi.

Il server che provvederemo a configurare è di tipo autoritario.

  • Una volta installato bind9, possiamo trovare i file di configurazione in /etc/bind/

→I files che ci interessano sono:

  1. named.conf.local : in questo file vengono definite le “zone” del dns (ovvero i domini per i quali il DNS deve offrire il servizio di risoluzione).
  2. named.conf.options: in questo file vi sono le opzioni del server DNS. In questo file è possibile definire i forwarders, che sarebbero gli IP dei server DNS da contattare nel caso l'host da risolvere non sia specificato in nessuna zona.

→Per configurare i forwarders, bisogna decommentare la parte:


     // forwarders {           			forwarders{ 
// 0.0.0.0; → 0.0.0.0;
// }; }

Sostituire 0.0.0.0 con l'IP del server DNS; se ne possono aggiungere anche più di uno, l'importante è che ogni riga termini col ; Quindi in named.conf.local definiamo la/e zona di cui si occupa il server dns. Per esempio la zona: lab121.local . Mentre in un secondo file, /etc/bind/db.lab121.local definiamo la coppia nome pc-ip, per esempio : pc1 – 10.200.7.1, pc2 -10.200.7.2 ecc.


Configurazione delle zone

ATTENZIONE: Prima di passare alla configurazione delle zone, segnarsi l'indizzo IP interno della macchina server.

Con un editor di testo (io userò nano), aprire il file /etc/bind/named.conf.local

Il file si presenta in questo modo:

2015-05-19 11 59 12-DNS.png

    zone “serverdns.local”{
    type master;
    file “/etc/bind/db.serverdns.local”;
    };

Spiegazione: il testo sopra definisce una “zona” del server DNS identificata dal dominio “serverdns.local” (che potete sostituire con il nome che volete), di tipo master (principale) e con file di configurazione /etc/bind/db.serverdns.local Per chiarezza, zone 'master', specifica che il server DNS ha fra i suoi file di configurazione la specifica delle coppie ip-nome dominio. Il server, quindi, non chiederà in rete tali informazioni. E' importante sottolineare che se modificate il dominio, anche il nome del file di configurazione deve variare.

Ora bisogna passare alla definizione della zona del reverse dns: il reverse dns permette di identificare un dominio partendo dall'indirizzo IP. Per poter configurare questa parte è necessario prendere il proprio indirizzo IP precedentemente segnato. Per configurare il reverse DNS bisogna creare una zona con questo nome:

 → (indirizzo ip AL CONTRARIO, tralasciando l'ultimo ottetto).in-addr.arpa

Quindi, se il vostro IP locale è 192.168.10.100, la zona si chiamerà 10.168.192.in-addr.arpa

Nel mio caso ( il mio IP interno è 192.168.1.103), la zona reverse è così configurata:

  zone “1.168.192.in-addr.arpa”{
  type master;
  file “/etc/bind/db.192”;  ← NOTARE: il nome è db.(primo ottetto del vostro IP “normale”, non ribaltato)
  };

Ecco la configurazione completa:

2015-05-20 10 12 37-DNS.png


Una volta terminata la configurazione, salviamo e chiudiamo il file.

Ora è necessario creare i file “/etc/bind/db.serverdns.local” e “/etc/bind/db.192” che conterranno le informazioni che permetteranno al DNS di risolvere gli hostname in IP. Nella cartella di configurazione di bind ci sono dei file già pronti che possiamo copiare modificare per semplificare il lavoro.

/etc/bind/db.serverdns.local

Dare questo comando: sudo cp /etc/bind/db.local /etc/bind/db.serverdns.local

Aprire con un editor di testo come superutente /etc/bind/db.serverdns.local

2015-05-20 10 18 11-DNS.png

Le prime righe definiscono parametri del DNS master; per una spiegazione esaustiva dei numeri riportati fra parentesi: http://knowledgelayer.softlayer.com/faq/what-does-serial-refresh-retry-expire-minimum-and-ttl-mean

Le righe da modificare sono:

  • @ IN SOA localhost. root.localhost.
localhost. :  è il dominio utilizzato. Sostituire con quello della zona (nel mio caso serverdns.local.) ATTENZIONE: bisogna sempre inserire il . alla fine               
root.localhost. : è la mail dell'amministratore. Potete lasciarla o modificarla (in questo caso la @ è sostituita dal . ) Anche qui porre attenzione al punto finale
  • @ IN NS localhost. → sostituire localhost. con il nome del dominio

Una volta terminate queste modifiche, recarsi in fondo al file per inserire i dati di risoluzione del DNS.

La sintassi è la seguente:

<nome record>	 IN 	<tipologia record>	<dati>

Se si vuole assegnare ad un nome l'indirizzo IP (che è il nostro scopo) bisogna utilizzare la tipologia record A.

Quindi, se per esempio vogliamo che la macchina con l'IP 192.168.1.10 sia raggiungibile tramite macchina10.serverdns.local bisogna inserire i dati in questo modo:

macchina10		IN	A	192.168.1.10

e cosi via.

Ecco il file configurato nel mio caso:

2015-05-20 10 26 44-DNS.png

Una volta terminata la configurazione dei nomi desiderata, salvare e chiudere il file.

/etc/bind/db.192

Dare il seguente comando: sudo cp /etc/bind/db.127 /etc/bind/db.192

Aprire con un editor di testo come superutente /etc/bind/db.192

2015-05-20 10 30 23-DNS.png

In questo file bisogna effettuare le stesse modifiche alle linee

@	IN	SOA	localhost.	root.localhost.
@	IN	NS	localhost.

Ora, tutti i dati che vanno inseriti in questo file devono seguire questa sintassi:

 <ultimo ottetto della macchina di destinazione>	IN	PTR	
 <indirizzo completo con la zona della macchina con un . Finale>

Per maggiore chiarezza, riprendo l'ultimo esempio fatto:

Quindi, se per esempio vogliamo che la macchina con l'IP 192.168.1.10 sia raggiungibile tramite macchina10.serverdns.local bisogna inserire i dati in questo modo:

macchina10		IN	A	192.168.1.10

Costruiamo la stringa su questo esempio:

  • La macchina di destinazione ha come ultimo ottetto dell'IP 10
  • L'indirizzo completo della macchina è macchina10.serverdns.local

La risultante sarà:

10	IN	PTR	macchina10.serverdns.local.

Effettuare l'operazione per tutte le entry inserite nel documento precedente.

2015-05-20 10 35 17-DNS.png


Riavvio del servizio e configurazione della macchina

Ora che il setup del server DNS è completo, è necessario riavviare bind9:

sudo service bind9 restart

Dovresti avere un output simile a questo (il pid varierà di sicuro):

2015-05-20 10 40 29-DNS.png

Potete verificare il funzionamento del server dns dando

dig -x 127.0.0.1

Se ottenete una risposta, vuol dire che il server DNS funziona!

Ora provate ad effettuare un ping verso un indirizzo configurato(oppure usate dig <nome host>) e vedete se risponde.

Fonti

  1. http://mixeduperic.com/ubuntu/seven-easy-steps-to-setting-up-an-interal-dns-server-on-ubuntu.html
  2. http://wiki.ubuntu-it.org/Server/Dns