Raspberry Pi als DHCP-Server

Mein Ziel, ein kleiner, stromsparender, lautloser DHCP-Server. Nachdem ich noch zwei alte Raspberry Pi Model B+ herumliegen habe und somit ohne Funktion, lag es nahe einen der beiden zu verwenden.

Als Distribution habe ich mich für das Raspberry Pi typische Raspbian entschieden, in der Version Jessie (Kernel 4.4, 2017-03-02). Dazu habe ich die Partitionen meiner alten SD-Karte unter Windows mit diskpart gelöscht und mit dem sDFormatter die SD-Karte formatiert. Danach das Image mit dem Programm Etcher auf die SD-Karte gespielt. Die Anleitung dazu findest Du HIER.

SD-Karte in den Raspberry Pi und das System starten. Es dauert nicht lange, bis es zum Login kommt. Der Standard Username von Raspbian ist pi, das Passwort raspberry (Achtung, US-Keybaoard, daher ist das Y auf der Taste Z).

Keyboard Layout auf Deutsch ändern

Dazu musst Du in der Datei /etc/default/keyboard den Wert de setzen:

sudo nano /etc/default/keyboard

XKBMODEL=“pc105“
XKBLAYOUT=“de“

Mit Strg+X speichern, mit Y bestätigen, danach auf die Eingabetaste drücken um den Namen der Datei zu bestätigen.

Nach einem Reboot ist das Tastatur Layout auf Deutsch umgestellt:

sudo reboot

Passwort ändern

Jetzt fängt die eigentliche Arbeit an. Erst einmal ist das ändern des Passwortes zu empfehlen, das kann mit dem Befehl passwd gemacht werden. Danach wird man aufgefordert das aktuelle Passwort einzugeben und darauf zwei Mal das neue Passwort. Das Sudo Passwort kann man getrennt ändern, mit sudo passwd.

Statische IP-Adresse für den DHCP-Server

Für den DHCP-Server, ist eine statische IP-Adresse von Nöten. Diese wollen wir nun hier konfigurieren.

sudo service dhcpcd status

Wird ein installiert rückgemeldet, kann der Service wie folgt gestartet werden:

sudo service dhcpcd start

sudo systemctl enable dhcpcd

Nun wollen wir die IP-Adresse eintragen, dazu müssen wir die dhcpcd.conf bearbeiten:

sudo nano /etc/dhcpcd.conf

Danach Folgendes einfügen und natürlich an das eigene Netzwerk anpassen:

Interface eth0
static ip_address=192.168.1.20/24
static routers=192.168.1.1
static domain_name_server=192.168.1.1

Mit einem sudo reboot das System neu starten. Beim Starten des Systems ist die IP-Adresse schon abzulesen.

Hostname ändern

Als Nächstes empfiehlt es sich den Hostnamen zu ändern, vor allem dann, wenn man mehr als einen Raspberry Pi im Netzwerk hat. Dafür sind folgende Schritte nötig.

Um zu überprüfen welcher der aktuelle Hostname ist, folgendes eingeben:

hostname

Den Hostnamen merken und mit dem folgenden Befehl wird der Hostname geändert (anstatt DHCP einfach den Namen nehmen, den der Server haben soll):

sudo hostname -b DHCP

Mit hostname nochmal überprüfen ob sich der Hostname geändert hat:

hostname

Nun müssen die Konfigurationsdateien mit dem neuen Namen ersetzt werden. Um zu sehen, welche Dateien auf dem Server vorhanden sind, folgenden Befehl ausführen:

sudo grep -lr „ALTERSERVERNAME“ /etc/*

Danach in den Dateien den alten Hostnamen auf den neuen Hostnamen ändern:

sudo nano /etc/hosts

sudo nano /etc/hostname

Wieder den Server rebooten:

sudo reboot

SSH-Schlüssel neu erstellen

Nun müssen die SSH-Schlüssel neu erstellt werden. Dazu gibt es zwei Wege.

Einfach und schnell:
sudo apt-get purge openssh-server && sudo apt-get install openssh

Damit wird der OpenSSH-Server gelöscht und neu installiert. Bei der Installation werden neue Schlüssel generiert.

Oder die alten Schlüssel erst löschen:

sudo rm /etc/ssh/ssh_host_*

Danach den Server rekonfigurieren:

sudo dkpg-reconfigure openssh-server

Und dann den SSH-Server neu starten:

sudo service ssh restart

Für den Fall das kein SSH-Server installiert ist, dieser kann mit folgenden Befehl installiert werden:

sudo apt-get install openssh-server

DHCP-Server installieren

Nun geht es an die Installation des DHCP-Servers.

sudo apt-get install isc-dhcp-server

Die Date isc-dhcp-server bearbeiten:

sudo nano /etc/default/isc-dhcp-server

Bei Interfaces den Wert auf eth0 setzen:

INTERFACES=“eth0“

Die Default-Konfigurationsdatei sichern und eine neue erstellen:

sudo mv /etc/dhcp/dhcpd.conf /etc/dhcp/dhcpd.conf_old

sudo nano /etc/dhcp/dhcpd.conf

Folgendes in die Konfigurationsdatei eintragen, natürlich wieder an das eigene Netzwerk anpassen:

authoritative;
default-lease-time 86000;
max-lease-time 86000;

subnet 192.168.1.0 netmask 255.255.255.0 {
range 192.168.1.100 192.168.1.254;
option routers 192.168.1.1;
option domain-name-servers 192.168.1.1, 8.8.8.8;
option domain-name „example.local“

}

Den DHCP-Server starten:

sudo systemctl start isc-dhcp-server

Wenn der Start mit einem Fehler abgebrochen wurde, kann man mit folgendem Befehl der Ursache genauer auf den Grund gehen. Vielleicht hat man sich auch nur einfach verschrieben im Config-File (wie es mir passiert ist):

sudo systemctl status isc-dhcp-server

Mit dem darunter aufgeführten Befehl kann man sich die Leases anschauen:

cat /var/lib/dhcp/dhcpd.leases

 

Es kann natürlich vorkommen, dass man statische IP-Adressen vergeben möchte. Diese werden ebenfalls in der dhcpd.conf-Datei eingetragen. Dazu ist Folgendes zu tun:

sudo nano /etc/dhcp/dhcpd.conf

Und folgendes Eintragen:

Host HOSTNAME {
hardware ethernet MACADRESSE;
fixed-address IPADRESS;
}

Beispiel mit dem Host Obelix:

Host obelix {
hardware ethernet 45:12:e4:12:e4:45;
fixed-address 192.168.1.40;
}

Speichern und den Server noch einmal rebooten (sudo reboot).