Mai fidarsi di un computer che non è possibile gettare dalla finestra.

— Steve Wozniak

DNS dinamico & DHCP (3)

http://www.stenoweb.it/files/blog/ddns.png Questa parte conclusiva mostra come configurare il servizio DHCP e come fare in modo che venga automaticamente aggiornato il DNS quando viene assegnato un nuovo indirizzo IP. Prima di continuare dobbiamo seguire i due post precedenti sull'argomento per configurare in modo corretto il nostro DNS con Bind9.

DHCPD

Iniziamo naturalmente dal servizio DHCP con la sua installazione:

sudo apt-get install dhcp3-server

ad installazione terminata riceviamo un messaggio di errore perchè non abbiamo naturalmente ancora configurato il servizio. Poniamo rimedio, configurando, per il momento, un servizio basilare:
sudo nano /etc/dhcp3/dhcpd.conf

Mettiamoci questo (ricordo che è un esempio, le possibilità sono varie). Per vedere tutte varie opzioni disponibili possiamo dare una occhiata qui:
ddns-update-style none;

## opzioni comuni a tutti le reti, vengono “assegnate” a tutti
option domain-name "stenoit.com";
option domain-name-servers 192.168.1.1;
option netbios-node-type 8;
option nntp-server 192.168.1.1;
option pop-server mail.stenoit.com;
option smtp-server mail.stenoit.com;

default-lease-time 600;
max-lease-time 7200;

## Il DHCP server è quello ufficiale della notra rete
authoritative;

## Dichiarazione di sottorete con range di indirizzi
## da assegnare e opzioni specifiche
subnet 192.168.1.0 netmask 255.255.255.0 {
range 192.168.1.100 192.168.1.200;
# Default gateway
option routers 192.168.1.1;
option subnet-mask 255.255.255.0;
}

## All' host wrk01 con MAC address specifico viene assegnato questo indirizzo
## IP fisso
host wrk01 {
hardware ethernet 08:00:6F:82:92:5A;
fixed-address 192.168.1.10;
}


Bene, Ora non ci resta che avviare il servizio:
sudo /etc/init.d/dhcp3-server start

DNS dinamico

E veniamo alla parte conclusiva e fondamentale: l'aggiornamento automatico delle tabelle DNS da parte del DHCP.

Spostare i files delle zone

Per prima cosa dobbiamo spostare i file delle zone che abbiamo creato. Ubuntu Hardy Heron viene installato con la suite di sicurezza AppArmor, i cui profili standard permettono la sola lettura in /etc/bind/zones. La directory predisposta al DNS dinamico e /var/lib/bind.
Possiamo, volendo, anche modificare il comportamento standard modificando il file:

sudo nano /etc/apparmor.d/usr.sbin.named

ma io ho preferito seguire i consigli del maintainer spostando i files.
sudo mv /etc/bind/zones/* /var/lib/bind/

fatto questo assegniamo a “bind” la proprietà dei file:
sudo chown bind.bind /var/lib/bind/*

Chiave condivisa

Per fare in modo che il server DHCP sia autorizzato a modificare le tabelle DNS abbiamo bisogno di una chiave “segreta” condivisa tra loro. Generiamola:

sudo dnssec-keygen -r /dev/urandom -a HMAC-MD5 -b 128 -n USER DHCP_UPDATER

Visualizziamo la chiave:
sudo cat Kdhcp_updater.*.private|grep Key

Appuntiamocela e proseguiamo con il DNS.

DNS

Procediamo con la configurazione di Bind. Editiamo il file:

sudo nano /etc/bind/named.conf.local

Aggiungendo la chiave appena generata e variando il percorso del file nella definizione delle zone:
key DHCP_UPDATER {
algorithm HMAC-MD5.SIG-ALG.REG.INT;

# Questa è la chiave segreta.
secret "z7OptACxEqHH8Rw9jt1CLA==";
};

zone “stenoit.com” IN {
type master;
# Cambia il percorso del file
file “/var/lib/bind/stenoit.com.db”;
# DHCP_UPDATER key.
allow-update { key DHCP_UPDATER; };
};

zone "1.168.192.in-addr.arpa" {
type master;

# Cambia il percorso del file
file "/var/lib/bind/1.168.192.in-addr.arpa";

# DHCP_UPDATER key.
allow-update { key DHCP_UPDATER; };
};

DHCP

Istruiamo il servizio DHCP ad aggiornare le nostre tabelle DNS.

sudo nano /etc/dhcp3/dhcpd.conf

Ecco il file risultante. Possiamo notare le prime quattro righe con i parametri relativi al ddns, la definizione della chiave e le parti relative alle zone:
ddns-update-style interim;
ignore client-updates;
ddns-domainname "stenoit.com.";
ddns-rev-domainname "in-addr.arpa.";

## opzioni comuni a tutti le reti, vengono “assegnate” a tutti
option domain-name "stenoit.com";
option domain-name-servers 192.168.1.1;
option netbios-node-type 8;
option nntp-server 192.168.1.1;
option pop-server mail.stenoit.com;
option smtp-server mail.stenoit.com;
default-lease-time 600;
max-lease-time 7200;
##Il DHCP server è quello ufficiale della notra rete
authoritative;
key DHCP_UPDATER {
algorithm HMAC-MD5.SIG-ALG.REG.INT;
## La chiave condivisa
secret "z7OptACxEqHH8Rw9jt1CLA==";
};
zone stenoit.com. {
primary 127.0.0.1;
key DHCP_UPDATER;
}


zone 1.168.192.in-addr.arpa. {
primary 127.0.0.1;
key DHCP_UPDATER;
}

## Dichiarazione di sottorete con range di indirizzi
## da assegnare e opzioni specifiche
subnet 192.168.1.0 netmask 255.255.255.0 {
range 192.168.1.100 192.168.1.200;
#Default gateway
option routers 192.168.1.1;
option subnet-mask 255.255.255.0;
}

## All' host wrk01 con MAC address specifico viene assegnato questo indirizzo
## IP fisso
host wrk01 {
hardware ethernet 08:00:6F:82:92:5A;
fixed-address 192.168.1.10;
}


I nostri files di configurazione contengono la chiave segreta generata. Cambiamo i permessi in modo che non sia leggibile da altri ed eliminiamo il file che la contiene:
sudo chmod o-r /etc/bind/named.conf.local
sudo chmod o-r /etc/dhcp3/dhcpd.conf
sudo rm Kdhcp_updater.*

Per finire riavviamo i servizi:
sudo /etc/init.d/bind9 restart
sudo /etc/init.d/dhcp3-server restart

Modifica manuale ai files

Ora che i file vengono modificati in modo dinamico devo prestare attenzione se ho la necessità di aggiungere o modificare manualmente dei records sulle tabelle DNS: Bind mantiene dei file di journaling (*.jnl) con le modifiche apportate dinamicamente che non vengono automaticamente sincronizzate con i file statici. Questo fa si che le mie modifiche vengano allegramente ignorate se non presto attenzione. In passato bisognava fermare il servizio, ora basta porre in “freeze” la zona interessata, apportare le modifiche e fare un “unfreeze” con il comando rndc. Ecco un piccolo script chiamato “dnsedit” che ci aiuta a capire meglio.

Creiamo il file:

sudo nano /usr/bin/dnsedit

e mettiamoci questo:
#!/bin/bash
echo Edit DNS Dinamico
echo ""
rndc freeze stenoit.com
rndc freeze 1.168.192.in-addr.arpa
nano /var/lib/bind/stenoit.com.db /var/lib/bind/1.168.192.in-addr.arpa
rndc unfreeze stenoit.com
rndc unfreeze 1.168.192.in-addr.arpa
echo ""
echo Modifica DNS terminata

Et voilà! Ora basta digitare:
sudo dnsedit

Aumentare il seriale (importante!) e apportare le modifiche opportune con l'editor.

Cotto e mangiato :)

I was very happy to uncover this great site. I want to to thank you for ones time for this wonderful read!!
I definitely savored every little bit of it and i also have you saved as a
favorite to see new stuff on your site.

è da 6 ore che cerco ᥱ questo sito è la sola cosa
apprezzаbile che leggo. Effеttivamente pregevole.
Ѕе tutte le persone cche creano pagine web Ьadassserо a fornire mateeriale avvincente come il
tuo internet sarebbe di sicuro molto più facilе dda leggere.
Continua così