Hanno detto:
Davanti ad un problema il matematico cerca di ricondurlo ad una formula matematica, il fisico cerca di risalire al fenomeno fisico che lo ha prodotto, l'informatico spegne e riaccende.
Argomenti nel blog
DNS dinamico & DHCP (3)
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 :)
