DHCP-Server unter Debian

Datum: 21.12.2020

PROJEKT: DHCP-Server und Clients

ZIEL: Installation und Konfiguration eines DHCP-Servers auf unserem NAT-Router

Installation

Die Software ist auf Debian-basierten Systemen schnell installiert:

root# apt-get update
root# apt-get install isc-dhcp-server

Konfiguration

Nach der Installation des Servers konfigurieren wir zuerst einmal die Startoption, die das Listening-Interface betrifft:

root# vi /etc/default/isc-dhcp-server

Dabei setzen wir als Wert ‚enp0s8‘ ein (= die zum ‚intnet‘ hin gerichtete Schnittstelle, wo der Server auf Clientanfragen lauschen soll). Das Ergebnis sieht dann so aus:

INTERFACES="enp0s8"

Danach ist die Hauptkonfigurationsdatei dran:

root# vi /etc/dhcp/dhcpd.conf

Hierbei müssen zwei Dinge eingerichtet werden:

  1. Zu übermittelnde DNS-Server als globale Serveroption

Hierbei wollen wir an die DHCP-Clients mittels ‚option domain-name-servers‘ die IP-Adressen von 2 ausgewählten Nameservern senden:

  • 194.25.2.129 (dns.isp.t-ipnet.de.)

  • 8.8.8.8 (dns.google.)

  1. Zu übermittelnde Adressinformationen über das physische Netzsegment

Hier geht es um speziell um unser isoliertes Netzwerk namens ‚intnet‘, in dem ja die MAC-Adressen umherschwirren:

  • Deklaration von Netzwerkpräfix und Pool für Adresszuweisungen (mit ‚subnet‘ und ‚range‘)

  • Übermittlung des Standard-Routers als lokale Bereichsoption (mit ‚option routers‘)

Die betreffenden Abschnitte sollten nach dem Editieren dann in etwa wie folgt aussehen:

# Bei Zeile 20
option domain-name-servers 194.25.2.129, 8.8.8.8;

# Bei Zeile 35
subnet 10.10.10.0 netmask 255.255.255.0 {
   range 10.10.10.50 10.10.10.100;
   option routers 10.10.10.1;
}

Inbetriebnahme

Jetzt sollte sich gleich der dhcp-Daemon ohne größere Fehlermeldungen starten lassen. Ob das aber tatsächlich der Fall ist und um später dem Ausliefern der Informationen an die Clients beiwohnen zu können, starten wir vorher in einem zweiten Terminal (natürlich als root) diesen Log-Monitor:

root# tail -f /var/log/syslog

Für den ersten Start verwenden wir am besten gleich ‚restart‘:

root# /etc/init.d/isc-dhcp-server restart

Testing

Nun können sich DHCP-Clients, die sich im ‚intnet‘ befinden, Adressinformationen holen.

Auf einem typischen Ubuntu-System könnte sich das manuelle Testen so gestalten:

$ sudo -i
$ systemctl stop NetworkManager
$ dhclient -r
$ dhclient
$ less /var/lib/dhcp/dhclient.leases

Neben ‚dhclient‘ gibt es weitere DHCP-Clienttools wie ‚dhcpcd‘, ‚udhcpc‘ (bei Slitaz) und ‚pump‘ (veraltet).