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.

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