User Tools

Site Tools


doc:appunti:linux:sa:dhcp

This is an old revision of the document!


Dynamic DNS con DHCP

La presente configurazione funziona su una Debian Squeeze con isc-dhcp-server 4.1.1.

In /etc/dhcp/dhcpd.conf, sezione principale, si aggiunge tutto il necessario riguardo al DDNS:

ddns-updates         on;
ddns-update-style    interim;
ddns-domainname      "my.rigacci.org";
update-static-leases on;
update-optimization  false;

Nel caso specifico si vuole annunciare al DNS anche gli host che hanno un indirizzo IP fisso (update-static-leases). Il parametro update-optimization - se impostato a true - evita che venga chiesto un aggiornamento della zona per ogni rinnovo del lease DHCP.

Nella sezione subnet dello stesso file - oltre alle normali configurazioni - si aggiunge il necessario per comunicare con il server DNS. La password è una stringa codificata in base64.

subnet 192.168.3.0 netmask 255.255.255.0 {
    key rndc-key {
        algorithm hmac-md5;
        secret "TXlWZXJ5U2VjcmV0Cg==";
    };
    zone my.rigacci.org. {
        primary 192.168.2.2;
        key rndc-key;
    }
    zone 3.168.192.in-addr.arpa. {
        primary 192.168.2.2;
        key rndc-key; }
}

Infine nella sezione group si dichiara quale nome registrare al momento del lease. Questo è un esempio per un host con IP fisso:

group {
    host squeeze {
        hardware ethernet 52:54:00:00:03:70;
        fixed-address 192.168.3.70;
        ddns-hostname "squeeze";
    }
}

NOTA: Togliere dai file di zona eventuali record inseriti manualmente che devono invece essere gestiti dinamicamente.

Configurazione del server DNS

Il server DNS (bind9) deve essere configurato per accettare le modifiche alla zona tramite chiave di autenticazione TSIG. Anzitutto si crea una chiave TSIG dandole il nome della zona (il nome serve solo a identificare successivamente la chiave):

tsig-keygen -a hmac-md5 lan.rigacci.org > /etc/bind/lan.rigacci.org.key
chmod 640 /etc/bind/lan.rigacci.org.key

La chiave avrà un contenuto random codificato base64:

key "lan.rigacci.org" {
        algorithm hmac-md5;
        secret "ZJu34t3AgaWXfmRSkjpqhA==";
};

Il file con la chiave deve essere incluso nella configurazione di bind e nella sezione relativa alla zona si dichiara che sono consentite le modifiche a chi è in possesso della chiave:

include "/etc/bind/lan.rigacci.org.key";

zone "lan.rigacci.org" {
    type master;
    file "lan.rigacci.org";
    allow-transfer { 192.168.3.1; };
    allow-update { key "lan.rigacci.org"; };
    max-journal-size 150k;
};

Modificare manualmente il file di zona

:!: ATTENZIONE: Non si deve modificare manualmente un file di zona mentre è soggetto ad aggiornamenti dinamici.

Prima si deve bloccare gli aggiornamenti con il comando rndc freeze. In questo esempio private è il nome della view in cui si trova la zona:

rndc freeze my.rigacci.org IN private

Dopo aver modificato manualmente il file (e aggiornato il numero seriale), non è necessario fare il reload di BIND, basta “scongelare” la zona:

rndc unfreeze my.rigacci.org IN private

Test modifica dinamica

Con il comando nsupdate è possibile inviare una richiesta di aggiornamento:

nsupdate
> server 192.168.3.1
> key rndc-key ZJu34t3AgaWXfmRSkjpqhA==
> zone lan.rigacci.org
> update add test.lan.rigacci.org. 3600 a 192.168.3.123
> send
doc/appunti/linux/sa/dhcp.1716883288.txt.gz · Last modified: 2024/05/28 10:01 by niccolo