Menu Chiudi

Pillola #52: DNSMASQ – gestire aggiornamento record DNS esterni (es. Bind / M$)

Dnsmasq viene utilizzato sia come DHCP per tutte le reti comunali che come DNS perimetrale.

Dnsmasq viene utilizzato sia come DHCP per tutte le reti comunali che come DNS perimetrale.

NB. Dnsmasq NON è sufficientemente evoluto per poter essere utilizzato come server DNS in alternativa al DNS di AD, è comunque possibile utilizzarlo come server DHCP e gestire l’aggiornamento dinamico dei record DNS di AD.

Si è scelto di utilizzare tale metodo per gestire in modo centralizzato un unico server DHCP installato direttamente sui gateway comunali.

Sui gw comunali (sede centrale e servizio tecnico):
– è stato configurato dnsmasq per l’esecuzione di uno script esterno che viene eseguito da dnsmasq ad ogni aggiunta/modifica/cancellazione di un record dhcp

Da notare che dnsmasq gira con un proprio utente “dnsmasq” e di conseguenza devono essere gestiti i relativi permessi, eseguire un copia e incolla per preparare l’ambiente:

echo "
# zona del dominio predefinita in cui posizionare i record dns 
\$ZONA = 'esterna.dominio.locale';
# server DNS M$
\$SERVER1 = '192.168.1.1';
" > /etc/default/updatedns.cfg

chown dnsmasq /etc/default/updatedns.cfg
mkdir /var/lib/updatens || true
mkdir /var/lib/updatens/delete || true
mkdir /var/lib/updatens/update || true
chown -R dnsmasq /var/lib/updatens

chown dnsmasq /opt/localbin/updatedns.pl
chmod 550 updatedns.pl

touch /var/lib/updatens/updatedns.txt
chown dnsmasq /var/lib/updatens/updatedns.txt

apt-get install dnsutils

comandi utili per verificare il corretto funzionamento di updatedns.pl

aggiunta di un nuovo record
/opt/localbin/updatedns.pl add 00:00:00:00:00:00:00:00 192.168.132.50 test

rimozione di record esistente
/opt/localbin/updatedns.pl del 00:00:00:00:00:00:00:00 192.168.132.50 test

configurazione di /etc/dnsmasq.conf

# questo script viene eseguito ogni volta che viene aggiunto rimosso o modificato un lease
dhcp-script=/opt/localbin/updatedns.pl

configurare il contenuto del file /etc/default/updatedns.cfg in questo modo

# zona del dominio predefinita in cui posizionare i record dns 
$ZONA = 'esterna.dominio.locale';
# server DNS M$
$SERVER1 = '192.168.1.1';

dnsmasq, in fase di esecuzione dello script imposta alcune variabili d’ambiente, di seguito riporto un esempio di cosa viene impostato durante un rilascio di dhcp:

DNSMASQ_DOMAIN=esterna.dominio.locale
DNSMASQ_TIME_REMAINING=64800
DNSMASQ_CLIENT_ID=01:16:e5:b1:ff:53:8d
DNSMASQ_LEASE_EXPIRES=1375925620
DNSMASQ_SUPPLIED_HOSTNAME=winxp-proxmox
DNSMASQ_TAGS=eth9
DNSMASQ_INTERFACE=eth9
DNSMASQ_VENDOR_CLASS=MSFT 5.0
WordPress Appliance - Powered by TurnKey Linux