[Pluto-help] DNS HOW-TO by (R)ex

Manuel (R)ex Sanna st991465 a educ.di.unito.it
Ven 15 Feb 2002 16:34:55 CET


Cari amici,
dato che non e' la prima volta che leggo messaggi che hanno bisogno di
chiarimenti riguardo la gestione di server DNS, ho pensato che sarebbe
stato utile pubblicare questo HOW-TO creato per i colleghi del
dipartimento di Informatica di Torino.

Dato che non sono un guru, e' possibile che ci siano degli errori e/o
imperfezioni, me ne scuso, e vi invito a farmi notare tutto quello che non
va tramite mails.

Vi ringrazio per l'attenzione e ...
Buon divertimento!!!!



--------------------------------------------------------------------------------------------------
 NOTA BENE:
--------------------------------------------------------------------------------------------------

I files utilizzati per la descrizione della zona, sono presi da speedy,
un server che appartiene alla zona educ.di.unito.it

Dato che l'universita' e' un qualcosa che dovrebbe dare informazioni ossia
cultura, queste righe non sono un attacco alle macchine etc, ma solo un
modo per distribuire quello che in Dipartimento viene considerato

		 	- DIDATTICO -

Queste informazioni sono state reperite da un server dipartimentale.
Se non avessi accesso a queste informazioni, probabilmente non avrei
scritto questo testo.

-- Il sapere appartiene all'uomo      	[Socrate]
[Solo che questo e' senza censura ...]



--------------------------------------------------------------------------------------------------
--------------------------------------------------------------------------------------------------







--------------------------------------------------------------------------------------------------
Chiavi di Lettura:
--------------------------------------------------------------------------------------------------
//	<- Commento di (R)ex
# 	<- Commento tecnico (tecnici a educ.di.unito.it)
--------------------------------------------------------------------------------------------------






















Allora :

Ci sono 3 files da controllare:
In ognuno di essi e' possibile reperire informazioni utili su tutta la
zona che intendi definire. Ricorda che essere il MASTER di una zona,
influisce sulla stessa in modo irreversibile. Il che significa che se non
hai la possibilita' di gestire le macchine tu, non lo fara' nessun altro
per te.


L'ultima frase entra in contraddizione se consideri il fatto che esistono
due tipi di gestione di zona. Il primo e' quello MASTER e il secondo e'
quello SLAVE.



Quello che segue e' come configurare una zona su un MASTER.
Per la configurazione di un server SLAVE vi consiglio di mandarmi una
mail, oppure di leggere la documantazione reperibile on-line su TUTTI I
SISTEMI UNIX [e quindi anche LINUX...] .



















--------------------------------------------------------------------------------------------------
UN POCO DI STORIA:
--------------------------------------------------------------------------------------------------
Una volta le macchine erano poche.

Ad ogni indirizzo IP si poteva riferire in modo univoco ad un HOST.
Quindi, per esempio, 192.168.0.1 si riferiva al nostro server principale,
mentre 192.168.0.12 si riferiva al nostro server di posta.
192.168.0.25 invece e' il nostro server NFS, mentre 192.168.1.12 si dedica
al backup di tutte le nostre homes che risiedono fisicamente su
192.168.2.23

Capito?
Bene.

- Dove sta il nostro server di backup?



Questo era il problema.
Come fare per non doversi segnare TUTTI gli indirizzi IP di TUTTE le
macchine che compongono la rete???
Ecco che entra in gioco il DNS [Domain Name System] che risponde alle
nostre richieste di nomi con IP ...




Ad esempio chiedendogli :
"chi e' l'host che si chiama mail?"
lui ci rispondera' semplicemente il suo indirizzo IP con informazioni
aggiuntive...




[Se non mi credete provate questo:


# rex a speedy : > nslookup mail
#
# -- come risposta potrete ottenere qualcosa di simile.
# -- [provate anche con qualche altra macchina, tipo altavista.com o
# -- quello che vi viene in mente ...]
#
# Server:  bagheera.educ.di.unito.it
# Address:  130.192.241.8
#
# Name:    speedy.educ.di.unito.it
# Address:  130.192.241.1
# Aliases:  mail.educ.di.unito.it




Come e' possibile capire, la richiesta e' stata fatta a bagheera [nostro
server DNS] che ha risposto con il nome di speedy [alias] e con il suo
indirizzo IP [130.192.241.1]
Facile, no?







Adesso che hai capito il gioco, non ci resta che poter modificare
proprio questi nomi e tutti gli abbinamenti.


Per poter configurare questo tipo di servizio abbiamo bisogno di
modificare 3 files che risiedono nella nostra macchina, e installare
ben 2 pacchetti.

I pacchetti sono i seguenti:

	bind
	caching-nameserver


[Consiglio le versioni aggiornate. Con bind5 per esempio, era possibile
spaccare la vostra macchina da remoto ... E non e' bello ...]


Fatto?
Perfetto....

Ecco come editare i files ....





============================================================================================
1) /etc/named.conf
============================================================================================



#
#
# Named.conf - Bind configuration file
#
#


// # Questo file ci permette di configurare il primo dei servizi.
// # Bind ci consente di fare quello che abbiamo intenzione di fare.
// # Vediamo come ...




# Access Control List

// definiamo piu' ACL che ci servono per poter avere un log maggiore
// ma soprattutto un cotrollo su tutto quello che avviene
// sulle conversioni dei nomi macchina ...

acl "lanUnix" { 130.192.241.0/24; };

acl "lanNT" { 172.16.1.0/24; 172.16.2.0/24; };

acl "blackhole" { 0.0.0.0/8;
		 1.0.0.0/8;
		 2.0.0.0/8;
		 192.0.2.0/24;
		 224.0.0.0/3;
		 10.0.0.0/8;
		 192.168.0.0/16;
		 };

// una black hole ...   [o]








# General Options
// opzioni che passiamo al demone ...

options {


 	directory	"/opt/bind/Maps";
	// dove reperire i files che descrivono le nostre zone?
	// Se definiamo piu' in la un file del tipo 'banana'
	// esso verra' cercato come /opt/bin/Maps/banana ...
	//
	// ma per comodita' scrivo solo il nome del file, no?


	pid-file	"/opt/bind/var/named.pid";
	// ecco come settare una Process ID al nostro demone


	allow-query	{ any; };
	// da chi possiamo ricevere richieste ?


	auth-nxdomain	no;
	// abbiamo un dominio autoritativo?



	allow-recursion { "lanUnix"; "lanNT"; };
	// in quale delle ACL possiamo fare una richiesta ricorsiva?


	blackhole	{ "blackhole"; };
	// il buco nero che mangia tutti !!!

};






logging {
     category "default" { "default_syslog"; "default_debug"; };
};

// il loggin e' importante per il controllo di spoofing su tutte le zone
// che ospitiamo sulla nostra macchina. Nel nostro caso, abbiamo due
// zone importanti da controllare. La nostra area UNIX e l'area NT.





# Standard Zone Configuration
zone "." in {
	type hint;
	file "named.root";
};

// Questa zona e' la nostra cache.
// Nel caso non riuscissimo a risolvere una richiesta tra le zone
// da noi controllate, usciamo dalla nostra macchina e andiamo a
// chiedere a tutti coloro sono su questa "lista" il nome macchina,
// nella speranza di poterlo convertire in un IP  ...









//
// Poiche' le macchine [come tutti sanno] hanno bisogno di un minimo
// di rete, non ci resta che definire la nostra "zona" localhost.
//
// Provate a pingare localhost.
// Staccate il cavo.
// Riprovate.
// Cosa e' cambiato?


// Appunto ...


zone "localhost" IN {			// nome zona
	type master;			// tipo zona
	file "localhost";		// file di descrizione
	notify no;			// notifica in caso di cambiamento

};


// cosi' come abbiamo definito la conversione NAME --> IP
// ci serve definire anche come fare il processo inverso
// [RARP : Reverse Address Resolution Protocol] per la zona che
// fa indirizzo 127.0.0

// Cosa significa?
// Provate a utilizzare 'nslookup' con il vostro indirizzo privato :


// ------------------------------------------
// rex a speedy : > nslookup 127.0.0.1

// #
// # Server:  bagheera.educ.di.unito.it
// # Address:  130.192.241.8
// #
// # Name:    localhost
// # Address:  127.0.0.1
// #

zone "0.0.127.in-addr.arpa" in {		// nome zona
	type master;				// tipo zona
	file "localhost.rev";			// file di configurazione
	notify no;		// notifica in caso di cambiamento
};










#
# -- educ.di.unito.it
#

// Ecco la nostra zona...
// In essa zono custodite le macchine dipartimantali, e come vedete,
// ci sono delle informazioni aggiuntive che per la zona localhost
// non erano indispensabili ....

zone "educ.di.unito.it" in {
	type master;
	file "educ.di.unito.it.zone";


	// Ricordate il fatto di definire servers SLAVE che ci tengano
	// su le informazioni nel caso buttassimo giu' la macchina?
	// ecco come fare per dire a BIND di consentire il download
	// delle informazioni ....
	//
	// Le seguenti macchine ottengono TUTTE le informazioni di zona
	// in maniera speculare.

        allow-transfer { 130.192.239.30; 	// amleto.di.unito.it
                         130.192.239.1;		// pianeta.di.unito.it
                         130.192.119.1;		// albert.di.unito.it
                         130.192.3.24;		// giove.polito.it
                         130.192.3.21;};	// leonardo.polito.it
};


// Cosi' come abbiamo fatto per 'localhost' definiamo anche i nomi
// inversi, IP --> NAME
//
// Per indicare la zona ARPA bisogna indicare i primi tre ottetti
// della nostra zona in ordine inverso ...
//
// Esempio : 123.456.678.x diventa ===>  678.456.123

zone "241.192.130.in-addr.arpa" in {		// nome zona ARPA

	type master;				// tipo zona

	file "130.192.241.rev";			// file di conf.

        allow-transfer { 130.192.239.30; 	// macchine SLAVE
                         130.192.239.1;
                         130.192.119.1;
                         130.192.3.24;
                         130.192.3.21;};
};








// Perfetto.
// Adesso che abbiamo descritto il comportamento di BIND,
// abbiamo bisogno di raccontare un poco di piu' sulle zone che abbiamo
// creato, ed in particolare dobbiamo editare il contenuto dei files che
// abbiamo indicato nella descrizione delle zone.

// Escludendo la zona LOCALHOST che sono sicuro esiste in tutte le vostre
// macchine, andiamo ad analizzare in modo diretto come il Dipartimento di
// Informatica indica le proprie macchine. Analizziamo prima la versione
// NAME --> IP

=============================================================================================
2) /var/named/educ.di.unito.it.zone
[Ossia : /opt/bind/Maps/educ.di.unito.it]
=============================================================================================
;
; Data file of hostnames in this zone.
;
; Formato del Serial AAAAMMDDS
; AAAA = anno
; MM   = mese
; DD   = giorno
; S    = seriale del giorno
;
;


// @ rappresenta il nome della nostra zone.
// Dobbiamo dare informazioni particolari di essa, per esempio
// quale macchina ha l'autorita' su questa zona e il responsabile fisico
// del tutto ...


@ 43200	IN	SOA	speedy.educ.di.unito.it. postmaster.speedy.educ.di.unito.it. (

// Questa riga la leggiamo cosi :
// "educ.di.unito.it ha 43200 secondi di vita attiva [TIME TO LEAVE]
// e in INternet, la sua autorita' e' gestita da 'speedy.educ.di.unito.it'
// Ha come responsabile il signor postmaster a speedy.educ.di.unito.it "

// NB: Definiamo l'indirizzo del responsabile in maniera univoca,
// utilizzando il punto [ . ] al posto della at [ @ ] in maniera
// da non incorrere incomprensioni con la at che si riferisce alla nostra
// zona ...



// Informazioni supplementari ma indispensabili ...

	999999999	; Serial	// numero seriale

	86400	; Refresh - 1 day	// tempo di refresh

	3600	; Retry - 1 hour	// ogni quanto controlliamo?

	604800	; Expire - 1 weeks	// dopo quanto rileggiamo le
					// informazioni?

	43200 )	; Minimum - 12 hours	// tempo minimo






// Chiudiamo con la parentesi tonda finale la nostra autorita'.



@	IN	NS	speedy.educ.di.unito.it.
// Quale macchina risolve i nomi per la nostra zona [educ.di.unito.it] ?
// In questo caso e' inserito solo speedy, ma se avete intenzione di
// creare un dominio internet, avete bisogno PER FORZA di una seconda
// macchina slave...









// Adesso iniziamo a descrivere quello che contiene la nostra zona.
// Le macchine!!!!



// Abbiamo bisogno anche qui di definire degli standard...

// Allora:
// - Se dichiariamo una macchina, non ci mettiamo tutto il nome completo
// in quanto esso viene completato dal nome della nostra zona.

// - Se non definiamo un nuovo nome macchina, tutto quello aggiungiamo,
// viene riferito all'ultima macchina dichiarata.

// - Se una delle macchine che definiamo e' solo un 'sinonimo'
// per una macchina esistente e gia' dichiarata, questa macchina
// apparira' con l'attributo CNAME, mentre se essa e' la macchina che
// dobbiamo dichiarare, essa dovra' presentare l'attributo
// A [autoritativo] e successivamente il suo indirizzo IP.

// - Possiamo riferirci alle macchine di dominio senza inserire tutto
// il nome esteso della stessa, ma se dobbiamo riferirci ad una macchina
// che non appartiene al nostro dominio, essa dovra' contenere TUTTO
// il suo nome [compreso di dominio] e terminato con un punto [ . ]

// - TUTTI devono portare subito dopo il proprio nome l'indicazione
// che essa e' una macchina che appartiene alla rete con IN [internet
// name]

// ---------------------------------------------------------------------
// Sommario:
// IN 		= internet name
// A		= autoritativo / ossia il suo indirizzo
// CNAME	= alias [il nome e' solo un altro modo di chiamare ...]
// ---------------------------------------------------------------------



// Iniziamo ....
// Definiamo innanzi tutto le macchine che abbiamo ...

speedy		IN 	A	130.192.241.1
cicladi		IN	A	130.192.241.2
bagheera	IN	A	130.192.241.8

davide		IN	A	130.192.241.199
gigante		IN	A	130.192.241.198
morgana		IN	A	130.192.241.28

www		IN	A	130.192.239.147


[continuerebbe per tanto a lungo, ve lo risparmio ....]





// Adesso definiamo tutti i sinonimi per le nostra zona.
// Per esempio il server di posta per noi e' speedy ...
// e cosi' pure il nostro gateway e' bagheera ...


gateway		IN	CNAME	bagheera

smtp		IN	CNAME	speedy
pop		IN	CNAME	speedy
imap		IN	CNAME	speedy
mail		IN	CNAME	speedy
pop3		IN	CNAME	speedy
smtp		IN	CNAME	speedy
mailhost	IN	CNAME 	speedy

test		IN	CNAME	obelix
news		IN	CNAME 	gigante

// Per correttezza, e per completezza, aggiungiamo la
// macchina PLUTO [grazie ragazzi]
pluto 		IN CNAME	130.192.0.69

	// e' possibile aggiungere informazioni perticolari
	// su ogni singola macchina. Ad esempio possiamo dire
	// che questa macchina e' stata creata da (R)ex ...
	IN TXT	"Macchina creata per il pluto"
	IN TXT 	"Questa macchina non esiste, ma esiste il PLUTO!!!"


	// Oppure possiamo definire caratteristiche HW della stessa
	IN HINFO "Linux System!!!"


	// Per i piu' smanettoni, 'dovremmo' definire anche la
	// macchina che riceve la posta per noi.
	// In priorita' 10 definiamo che il nostro server di mail
	// sia 'mail' .

	// Non fraintendete, pero'.
	// Questo significa che tutte le mail che per esempio sono
	// intestate in questo modo "rex a pluto.educ.di.unito.it"
	// semplicemente sono date a 'mail' per esser gestite
	// e non vengono controllate da noi ....
	IN	MX	10	mail

---------------------------------------------------------------------------------------------------
<EOF>
---------------------------------------------------------------------------------------------------










// E poi la conversione IP --> NAME
============================================================================================
3) /var/named/241.192.130.in-addr.arpa
[Ossia : /opt/bind/Maps/educ.di.unito.it]
============================================================================================
// Ecco la zona inversa.


;
; Data file of hostnames in this zone.
;
; Formato del Serial AAAAMMDDS
; AAAA = anno
; MM   = mese
; DD   = giorno
; S    = seriale del giorno
;
;


// solita sbobba ...
@ 43200   IN      SOA     speedy.educ.di.unito.it. postmaster.speedy.educ.di.unito.it. (
                        999999999       ; Serial
                        86400   ; Refresh - 1 day
                        3600    ; Retry - 1 hour
                        604800  ; Expire - 1 weeks
                        43200 ) ; Minimum - 12 hours

// Il nostro server dei nomi
@        IN      NS      speedy.educ.di.unito.it.




// Ecco come definire le macchine con indirizzo iniziale
// il nostro indirizzo di zona : 130.192.241.x
//
// I numeri iniziali, sono quelli che completano il nostro ottetto...


1    IN    PTR   speedy.educ.di.unito.it.

// Questo si legge :
// 130.192.241.1 e' in INternet il PunTatoRe a speedy.educ.di.unito.it.
// Il punto finale e' indispensabile, in quanto la nostra zona
// e'  '241.192.130' e non 'educ.di.unito.it'


8    IN    PTR   bagheera.educ.di.unito.it.
// e questo e' bagheera .....


69   IN    PTR  pluto.educ.di.unito.it
// vi ricordate di pluto???







---------------------------------------------------------------------------------------------------
<EOF>
---------------------------------------------------------------------------------------------------

ULTIMA COSA:
	Una macchina LINUX definisce i nomi dei server a cui fare
	queste interrogazioni nel file /etc/resolv.conf che sarebbe da
	configurare in una maniera simile :


	----------------------------------------------------------------------
		domain <il-nome-del-vostro-dominio>
		nameserver 127.0.0.1			// localhost
		nameserver <indirizzo-ip-del-DNS>	// eventuali altri
							// [MAX 3]
	----------------------------------------------------------------------


===================================================================================================
Questo e'quanto.
Avete solo da leggere e modificare in funzione della vostra zone.
Per qualsiasi problema la mail di (R)ex e' nota a tutta la ML,
Lui e' spesso e volentieri on-line.


mail : st991465 a educ.di.unito.it

Buon divertimento ragazzi, ci vediamo in rete ....
===================================================================================================
Per test vari, vi consiglio di utilizzare una macchina che non sia
collagata alla rete, in quanto vi risultarebbe impossibile capire gli
errori che fate. Provate anche a modificare quello che avete scritto,
magari semplicemente eliminando un punto alla fine delle dichiarazioni di
hosts, o cose simili.
===================================================================================================









Che sonno.
Andiamo a fumare una sigaretta, magari va meglio...


SCIAO BELLI!!!!!!

(R)ex



-- 


# ===================================================================
# Manuel (R)ex Sanna
# [Studente al Dipartimento di Informatica di Torino]
#--------------------------------------------------------------------
# I computer non servono a nulla. Danno solo risposte
#                                                 -- Pablo Picasso --
# ===================================================================










More information about the pluto-help mailing list