Verder Terug Inhoud

10. Dynamische updates met ISC DHCPd v3.x

Bind kan omgaan met zogenaamde dynamische updates. Hierbij wordt er contact gemaakt met de server en kunnen dynamisch resource records worden toegevoegd, veranderd en verwijderd. Het is niet nodig om direct te schrijven in de zonefile en de server te reloaden.

Dynamische updates zijn erg handig in combinatie met DHCP: de namen en adressen van de uitgegeven leases worden automatisch opgenomen in de DNS-server.

Het gebruik van dynamische updates in een zone heeft wel een nadeel: zodra een zone dynamisch is geworden, zijn handmatige aanpassingen in principe niet meer mogelijk. Omdat het gebruik van de tool nsupdate soms wat lastig is, beschrijf ik een manier om handmatig updates te doen in een dynamische zone. Die is echter "niet netjes".

Gezien het op zijn minst onverstandig is om DHCP te gebruiken op een netwerksegment waar ook web-, name- en mailservers staan, ga ik hier er vanuit dat DHCP draait op het netwerksegment van office.example.com.

10.1 Veilige updates met TSIG

Om een dynamische update veilig uit te kunnen voeren maken we gebruik van een zogenaamde transaction signature oftewel TSIG. Dat is een pseudo-RR waarmee transacties te ondertekenen zijn op basis van een gedeeld wachtwoord (shared secret).

TSIG is onderdeel van de zeer complexe DNS Security Extensions (dnssec). Op dnssec zal ik verder niet ingaan hier.

Aanmaken van de key

Voor het gebruik van dnssec heb je een key nodig. Die is te genereren op de volgende manier:


dexter:~ # dnssec-keygen -a HMAC-MD5 -b 128 -n ENTITY dhcp-key
Kdhcp-key.+157+38469

Dit levert twee bestanden op: Kdhcp-key.+157+38469.key en Kdhcp-key.+157+38469.private. De getallen zullen elke keer anders zijn overigens.

In beide bestanden staat in essentie dezelfde informatie. Het enige wat voor ons van belang is, is de key zelf, die op de regel beginnend met "Key" staat in Kdhcp-key.+157+38469.private:


Private-key-format: v1.2
Algorithm: 157 (HMAC_MD5)
Key: qvRUwdlVvJ9vLGgNqtl46Q==

Gebruik overigens niet de key uit het voorbeeld, maar genereer een eigen key. Je bent gewaarschuwd.

Deze key moeten we bekend maken aan bind en dhcpd.

10.2 Configuratie van bind

De net gegenereerde key kunnen we nu gaan opnemen in named.conf, op de volgende manier:


key "dhcp-key" {
        algorithm HMAC-MD5;
        secret "qvRUwdlVvJ9vLGgNqtl46Q==";
};

Plaats dat blok onder het options blok. Mocht named.conf leesbaar zijn voor iedereen op het systeem, dan kun je bovenstaande fragment in een apart bestand plaatsen en met include "<naam>"; inlezen.

Hierna moet nog worden aangegeven welke zones dynamische updates mogen ontvangen die ondertekend zijn met deze key. DHCPd kan updates doen in de normale en in de reverse zone, dus die gaan we beide toestaan:


zone "office.example.com" {
        type master;
        file "db.office.example.com";

        allow-update {
                key "dhcp-key";
        };
};

zone "1.0.10.in-addr.arpa" {
        type master;
        file "db.10.0.1";

        allow-update {
                key "dhcp-key";
        };
};

Na de reload zal bind klaar staan om dynamische updates te ontvangen.

10.3 Configuratie van DHCPd

Aangezien dit een handleiding is voor bind en niet voor DHCPd, ga ik er vanuit dat je al een goed draaiende DHCPd hebt. Voor dynamische updates is wel ISC DHCPd v3.x nodig.

Ik zal volstaan met het geven van de regels die moeten worden toegevoegd of aangepast in dhcpd.conf:


option domain-name "example.com";  # kan ook in subnet blok worden gegeven

key "dhcp-key" {
        algorithm HMAC-MD5;
        secret "qvRUwdlVvJ9vLGgNqtl46Q==";
};

zone example.com. {
        primary 10.0.1.1;
        key "dhcp-key";
};

zone 1.0.10.in-addr.arpa. {
        primary 10.0.1.1;
        key "dhcp-key";
};

Ook hier kun je de key weer via een include-statement inladen.

10.4 Aanpassingen met nsupdate in een dynamische zone

De tool nsupdate kan worden gebruikt om handmatig dynamische updates uit te voeren in een server. In dit geval roep je hem aan met:


nsupdate -k Kdhcp-key.+157+38469.private

Het gaat te ver om hier in te gaan op het verdere gebruik van nsupdate. In de appendix staan een paar voorbeelden.

10.5 Handmatige aanpassingen in een dynamische zone

Mocht het gebruik van nsupdate wat te lastig zijn, dan zijn handmatige aanpassingen in de zonefile nog wel mogelijk.

Om een zonefile weer (tijdelijk) statisch te maken, kun je het volgende doen:


Verder Terug Inhoud