TesinaDDNS
Assegnata a: Altobelli Gianni
RISOLUZIONE DEI NOMI IN AREA LOCALE E AGGIORNAMENTO AUTOMATICO DEGLI INDIRIZZI IP
1 Introduzione
Questa tesina ha lo scopo principale di illustrare come devono essere configurati sia il server DHCP che quello DNS per la risoluzione dei nomi di vari PC connessi all'interno di una rete locale, come nel caso del laboratorio presente a Cisterna di Latina dove si sono svolte le lezioni del corso. In questo modo, infatti i PC connessi in una Lan possono essere identificati tramite il proprio nome (per esempio Labsoftel12), invece che dal proprio indirizzo IP, portanto, quindi numerosi vantaggi. Il programma utilizzato per il server DNS è BIND, scaricabile tramite synaptic, mentre per il server dhcp andremmo a modificare il file dhcp.conf, già presente all'interno delle distribuzioni linux.
2 Un Esempio pratico
Vediamo attraverso i diagrammi temporali come funziona il sistema; parto dal presupposto che il computer LabsoftelYY abbia già ottenuto l'indirizzo IP dal DHCP:
All'inizio il computer che vuole avere l'indirizzo IP ( labsoftelXX ) cerca il server DHCP sulla rete locale e attraveso il ben noto protocollo del DHCP ottiene l'indirizzo. Succesivamente, il server DHCP tramite un connessione al server DNS ( che in questo esempio abbiamo supposto sia un altro PC, ma in generale i due server possono risiedere sulla stessa macchina ) comunica il nuovo indirizzo della macchina LabsoftelXX, in modo da aggiornare il record A corrispondente. Se LabsoftelYY vuole sapere l'indirizzo IP di LabsoftelXX, per esempio per effettuare una connessione di chat con i programmi visti nel primo trimestre del corso, esso effettua una connessione al DNS di zona che conosce tutti gli indirizzi dei computer della rete locale. Così dopo la risposta del server DNS, LabsoftelYY può comunicare con LabsoftelXX, perchè adesso conosce l'indirizzo IP di quest'ultimo.
3 DHCP: Configurazione del file dhcp.conf
Il server DHCP che si trova di solito nelle distribuzioni GNU è quello la cui produzione è finanziata da Internet Software Consortium. Questo software si compone del demone dhcpd, il quale si avvale della configurazione contenuta nel file dhcpd.conf (/etc/dhcpd.conf, /etc/dhcp*/dhcpd.conf o simile), inoltre utilizza il file dhcpd.leases (che potrebbe essere collocato nella directory /var/lib/dhcp*/) per annotare gli indirizzi concessi ai vari clienti, finché questi restano validi. Questo ultimo file, dhcpd.leases, deve esistere (vuoto) prima che il demone possa essere avviato la prima volta. Ecco le istruzioni che dobbiamo aggiungere all'interno del file dhcp.conf:
#01 authoritative; #02 subnet 192.168.1.0 netmask 255.255.255.0{ #03 range 192.168.1.2 192.168.1.100; #04 } #05 option domain-name-servers 192.168.1.1 #06 option domain-name cisterna.unirm1; #07 key DHCP_UPDATER { #08 algorithm HMAC-MD5; #09 secret "Yj95beDnn=34fghSN"; #10 }; #11 zone cisterna.unirm1. { #12 primary 127.0.0.1; #13 key DHCP_UPDATER; #14 }; #15 ddns-update-style interim; #16 group { #17 option domain-name "cisterna.unirm1"; #18 default-lease-time 21600; #19 max-lease-time 86400; #20 use-host-decl-names on; #21 #22 host labsoftel1 {hardware ethernet **:**:**:**:**:**;} #23 ... #24 ... #25 };
Vediamo a cosa servono tali istruzioni:
Passiamo ora alla parte relativa all'aggiornamento dinamico dei nomi, ossia in quale modo il server DHCP segnala al server DNS qualè è l'attuale indirizzo IP dei vari client presenti sulla rete locale.
Per avviare il server dhcp basterà inviare da shell la seguente riga di comando:
sudo /etc/init.d/dhcp start
mentre se si desidera stopparlo, basterà digiatare:
sudo /etc/init.d/dhcp stop
Fatto ciò, abbiamo configurato il server DHCP e per cui si passa alla parte relativa al server DNS.
4 BIND: Installazione e configurazione
Una volta installato il programma Bind tramite apt-get (synaptic o adept) passiamo alla configurazione del server DNS. Per far ciò dobbiamo modificare alcuni file. Per prima cosa dobbiamo configurare Named. Esso è infatti il demone che compie in pratica il servizio di risoluzione dei nomi del pacchetto BIND. Si avvale di un file di avvio (o di configurazione) che in passato è stato /etc/named.boot e attualmente è invece /etc/named.conf, oppure /etc/bind/named.conf, ed esso è il primo file che andimo a modificate. Inseriamo all'interno di esso le seguenti istruzioni:
#01 key DHCP_UPDATER { #02 algorithm HMAC-MD5; #03 secret "Yj95beDnn=34fghSN"; #04 }; #05 controls { #06 inet 127.0.0.1 port 953 #07 allow { 127.0.0.1; } keys { "DHCP_UPDATER"; }; #08 }; #09 zone "." { #10 type hint; #11 file "named.root"; #12 }; #13 zone "cisterna.unirm1" { #14 type master; #15 file "zone/cisterna.unirm1"; #16 allow-update { key DHCP_UPDATER; }; #17 };
5 File di zona: Cisterna.unirm1
Tale file deve essere creato nella directory /etc/bind/zone/ con il nome di cisterna.unirm1 e deve contenere alcune informazioni riguardanti:
- Chi è autorevole sulla zona in questione
- quale è il NS (Name server) che gestisce la zona in questione
- l'indirizzo IP del Name server tramite un reconrd di tipo A
Ecco le istruzioni da aggiungere:
@ IN SOA cisterna.unirm1. root.cisterna.unirm1. ( 1998031800 28800 7200 604800 86400 ) IN NS dns.cisterna.unirm1. IN MX 10 dns dns.cisterna.unirm1. IN A 192.168.1.1
Come si può vedere dal file di zona è stato espressamente dichiarato quale è l'indirizzo IP del Name server. Inotre è stato aggiunto in record MX per definire un server di posta elettronica sullo stesso indirizzo del name server (che in questo caso è dns.cisterna.unirm1). Tale file una volta lanciati i server DNS e DHCP sarà continuamente modificato con l'aggiunta di record di tipo A per ciascun Pc delle rete LAN che usufruisce del sistema appena descritto.
A questo punto, per poter lanciare Bind basterà inviare da riga di comando il seguente codice:
/etc/init.d/bind start
A questo punto abbiamo finito di configurare il sistema. Per i più scettici, per controllare che il tutto stia funzionando alla perfezione possono andare a controllare il file resolv.conf situato in /etc/resolv.conf. In esso vengono memorizzate le informazioni principali relative alla risoluzione dei nomi, come il dominio locale e l'IP del nameserver che vengono di solito indicati in fase di installazione o settaggio iniziale della rete. Se tutto è andato a buon fine dovremo leggere su tutti i client (ossia sui computer labsoftelXX) le seguenti istruzioni:
search cisterna.unirm1 nameserver 192.168.1.1
mentre sul pc che fa da server dhcp e dns:
search cisterna.unirm1 nameserver 127.0.0.1
Appendice A: Come generare chiavi con HMAC-MD5
Generare una di queste chiavi è molto semplice, basta digitare da shell il seguente comando (avendo istallato Bind versione 9):
dnssec-keygen -a hmac-md5 -b 128 -n HOST DHCP_UPDATER
La chiave sarà disponibile in un file chiamato KDHCP_UPDATER*.private, in corrispondenza della riga "Key:". Fatto ciò basta copiare la chiave all'interno del file dhcp.conf e più precisamente alla riga 9 e nel file named.conf alla riga 3
6 Riferimenti
- IETF - Secure dynamic DNS howto
- OpenSkills - Configurare named per l'aggiornamento dinamico mediante DHCP
- Configurare dhcp.conf - Server DHCP ISC
- Introduzione al sistema dei DNS
- Resolv.conf
- HOWTO: Dynamic DNS and DHCP dual servers with failover