Eigentlich ist es keine große Sache, einen DHCP Server unter Linux zu betreiben. Allerdings hatte ich neulich ein interessantes Verhalten eines ISC dhcpd.

Ich betreibe bei meinem Arbeitgeber ein Netz für uns Entwickler. In diesem können wir mehr oder weniger machen was wir wollen und benutzen unsere eigene Infrastruktur. Diese umfasst aktuell vier KVM Server, einen eigenen DHCP Server und einen eigenen DNS Server.

Alles wird automatisiert über Ansible verwaltet.

Nun hat unser DHCP Server, welcher ein ISC dhcpd ist, neulich angefangen IP-Adressen doppelt zu vergeben und sich nicht mehr an die Reservierungen in der Konfiguration gehalten.

Konfiguration vom ISC dhcpd

Grob zusammengefasst sah die Konfiguration wie folgt aus:

option domain-name "vm.dev";
option domain-name-servers 192.168.1.5,192.168.1.6;

default-lease-time 600;

subnet 192.168.105.0 netmask 255.255.255.0 {
    range 192.168.105.25 192.168.105.250;
    option broadcast-address 192.168.105.255;
    option subnet-mask 255.255.255.0;
    option routers 192.168.105.254;

}

host checkdhcpstatic {
   hardware ethernet b9:41:d3:88:09:4a;
   fixed-address 192.168.105.30;
}

Der DHCP Server soll also IP-Adressen zwischen 25 und 250 selber verwalten und automatisiert vergeben. Zusätzlich waren diverese Reservierungen gesetze. In dem Beispiel hier die Adresse 192.168.105.30. Diese nutzen wir, um die Reservierung mit openITCOCKPIT zu überwachen.

Migration zu dnsmasq

Bei einer kurzen Fehlersuche konnte ich nicht wirklich den Grund finden, warum der DHCP Server auf einmal IP-Adressen doppelt vergeben hatte. Es waren noch genügend Adressen im Adressraum frei, welche hätten genutzt werden können.

Ich habe mich dann dazu entschlossen, einfach einen neuen DHCP Server zu installieren. Diesmal habe ich dafür dnsmasq genutzt.

Die Konfiguration war schnell übertragen:

dhcp-range=192.168.105.25,192.168.105.250,5m

dhcp-host=192.168.105.30,checkdhcpstatic,b9:41:d3:88:09:4a

dhcp-option=option:router,192.168.105.254

domain-suffix=vm.dev
domain=vm.dev


dhcp-option=6,192.168.1.5,192.168.1.6

Danach haben alle Reservierungen wieder wie gewohnt funktioniert und das Problem mit doppelten IP-Adressen war gelöst.

Nachtrag zum Monitoring

Das Monitoring der statischen IP-Adresse, mache ich mit openITCOCKPIT. Dafür nutze ich das Plugin check_dhcp. openITCOCKPIT - check_dhcp