Skip to main content

DHCP-Auftrag

Aufgabenstellung

Erstellung eines Netzwerklabors

1. Vorbereitung der Geräte:
  • Ein Debian Linux-Server wird aufgesetzt, um als DHCP-Server zu fungieren.
  • Ein Router wird ausgesetzt der die zwei Subnetze verbindet und zur gleichen Zeit als Gateway ins Internet dient.
  • Zwei Windows-PCs werden vorbereitet, um als DHCP-Client zu dienen (Einer im gleichen Subnetz und der andere im DHCP-Relay Subnetz).
2. Netzwerksetup:
  • Auf dem Router werden drei Netzwerk-Interfaces eingerichtet: eines für das interne Netzwerk (intnet) mit der Subnetzmaske 192.168.1.0/26, eines für das interne Netzwerk (DHCP-Relay) und eines für die Internetverbindung (externe DHCP-Zuweisung).

Einrichtungen und Konfiguration des DHCP-Servers

1. Server-Setup auf Debian:
  • Der ISC DHCP Server wird auf dem Debian-System installiert.
2. Server-Konfiguration:
  • Der DHCP-Server wird so konfiguriert, dass er dem Windows-Client basierend auf dessen MAC-Adresse eine feste IP-Adresse zuweist. Dem Windows-Client wird eine feste IP im intnet-Netzwerk zugewiesen (z.B. 192.168.1.9/26).
3. Überprüfung:
  • Der DHCP-Server wird gestartet, um zu überprüfen, ob der Client eine IP-Adresse erhält.
  • Mithilfe von Wireshark wird der DHCP-Kommunikationsprozess zwischen Server und Client aufgezeichnet und analysiert. Also es wird mit der Wikipedia Grafik abgeglichen.

Erweiterte Konfiguration und Analyse

1. DHCP-Relay:
  • Es wird mit der Einrichtung eines DHCP-Relays auf Linux oder in einer simulierten Umgebung wie Packet Tracer experimentiert, um den Prozess der Weiterleitung von DHCP-Anfragen über verschiedene Netzwerke hinweg zu verstehen.
2. Vergleich von DHCP-Implementierungen:
  • Die Unterschiede zwischen verschiedenen DHCP-Server-Implementierungen, wie udhcpd und isc-dhcp-server, werden durch praktische Tests und Vergleiche ermittelt.
3. Fortgeschrittene Server-Optionen:
  • Fortgeschrittene Konfigurationsmöglichkeiten des isc-dhcp-Servers, wie die Gruppierung von Geräten basierend auf Hersteller-spezifischen Informationen, werden erkundet und umgesetzt.

image.png

DHCP Auftrag.excalidraw

Theorie

Grundlagen zu DHCP

Das Dynamic Host Configuration Protocol (DHCP) ist ein Netzwerkprotokoll, das in IP-Netzwerken eingesetzt wird, um Computern und anderen Geräten automatisch IP-Adressen und weitere notwendige Netzwerkinformationen zuzuweisen. Dieser Prozess erleichtert die Netzwerkverwaltung erheblich, da die manuelle Konfiguration von Netzwerkgeräten in großen und dynamischen Netzwerken umständlich und fehleranfällig wäre.

DHCP-Discover und DHCP-Offer

Der DHCP-Vorgang beginnt mit einem DHCP-Discover-Paket, das ein Client ins Netzwerk sendet, um einen DHCP-Server zu finden. Dieses Paket wird als Broadcast gesendet, da der Client zu diesem Zeitpunkt noch keine IP-Adresse hat. DHCP-Server im Netzwerk antworten darauf mit einem DHCP-Offer-Paket, das dem Client eine IP-Adresse und eventuell weitere Konfigurationsparameter wie Subnetzmaske, DNS-Server und Standardgateway anbietet.

DHCP-Request und DHCP-Acknowledgment

Nachdem der Client ein oder mehrere Angebote erhalten hat, wählt er eines aus und sendet einen DHCP-Request zurück an den Server, um das Angebot anzunehmen. Der DHCP-Server bestätigt die Zuteilung der IP-Adresse und der Netzwerkeinstellungen mit einem DHCP-Acknowledgment. Erst nach diesem Schritt ist der Client vollständig im Netzwerk konfiguriert und kommunikationsfähig.

DHCP-Relay

In größeren Netzwerken oder Netzwerken mit mehreren Subnetzen ist es oft notwendig, DHCP-Anfragen über Router hinweg weiterzuleiten, da Broadcasts nicht durch Router weitergeleitet werden. Hier kommt das DHCP-Relay ins Spiel. Ein DHCP-Relay-Agent leitet DHCP-Pakete zwischen Clients und Servern über verschiedene Netzwerksegmente hinweg. So können Clients in einem Subnetz IP-Konfigurationen von einem DHCP-Server in einem anderen Subnetz erhalten.

DHCP-Optionen

DHCP ermöglicht die Verwendung verschiedener Optionen, um eine Vielzahl von Konfigurationsparametern zu übermitteln. Zu den gängigen Optionen gehören Router (Standardgateway), DNS-Server, NTP-Server und viele andere. Diese Optionen erlauben eine flexible und detaillierte Konfiguration der Client-Geräte und unterstützen spezifische Netzwerkanforderungen.

Aufbau der Labor Umgebung

vogelsrv42001 - Router (VYOS)

image.png

Grundkonfiguration

Permanente konfiguration aktivieren

Nachdem wir uns mit den Zugangsdaten (Benutzername: vyos, Passwort: vyos) eingeloggt haben, ging es darum, VyOS dauerhaft auf der Festplatte zu installieren. Dafür haben wir einfach den Anweisungen des Installationsassistenten gefolgt. So bleibt unsere Konfiguration auch nach dem Neustart erhalten.

install image
Netzwerkschnittstellen einrichten

Mit der Installation im Rücken haben wir uns an die Konfiguration der Netzwerkschnittstellen, Routing-Protokolle und NAT-Regeln gemacht:

1. Wir haben den Konfigurationsmodus gestartet.

configure

2. Die Netzwerkschnittstellen haben wir mit festen IP-Adressen oder über DHCP konfiguriert und ihnen passende Beschreibungen gegeben.

set interfaces ethernet eth0 address dhcp
set interfaces ethernet eth0 description 'OUTSIDE'
set interfaces ethernet eth1 address 192.168.1.1/26
set interfaces ethernet eth1 description 'VOGEL_INTNET'
set interfaces ethernet eth2 address 192.168.1.65/26
set interfaces ethernet eth2 description 'VOGEL_DHCP_RELAY'

3. Eine statische Route für den Internetzugang wurde eingerichtet, indem wir <Your_Gateway_IP> durch die IP unseres Gateways ersetzt haben.

set protocols static route 0.0.0.0/0 next-hop <Your_Gateway_IP>

4. NAT-Regeln wurden so eingerichtet, dass unsere internen Netzwerke auf das Internet zugreifen können.

set nat source rule 100 outbound-interface name eth0
set nat source rule 100 source address 192.168.1.0/26
set nat source rule 100 translation address masquerade
set nat source rule 101 outbound-interface name eth0
set nat source rule 101 source address 192.168.1.64/26
set nat source rule 101 translation address masquerade

5. Zum Schluss haben wir die Konfiguration angewendet und gespeichert.

commit
save
Konfiguration überprüfen

Nach dem Speichern der Konfiguration haben wir alles noch einmal überprüft, um sicherzustellen, dass alles korrekt eingerichtet wurde:

1. Die Schnittstellenkonfiguration haben wir mit einem Befehl überprüft, der uns alle Konfigurationen der Schnittstellen, inklusive der zugewiesenen IP-Adressen und Beschreibungen, aufgelistet hat.

show interfaces

image.png

2. Die Konnektivität und die Routing-Einstellungen haben wir getestet, indem wir erfolgreich zur IP-Adresse 8.8.8.8 (Google DNS) gepingt haben. Das bestätigte, dass unsere statische Route und die Internetverbindung korrekt funktionieren.

ping 8.8.8.8

image.png

3. Die NAT-Regeln haben wir ebenfalls überprüft. Der entsprechende Befehl zeigte uns die konfigurierten NAT-Regeln und ihre Details auf, was bestätigte, dass das NAT richtig eingerichtet wurde.

show nat source rules

image.png

vogelsrv42002 - Ubuntu-Server (ISC-DHCP)

image.png

Grundkonfiguration

Überprüfen der aktuellen Netzwerkkonfiguration (Normalerweise nicht nötig):

Öffnen Sie ein Terminal auf Ihrem Debian- oder Ubuntu-Server und führen Sie den Befehl ip a aus, um die aktuellen Netzwerkeinstellungen und -schnittstellen anzuzeigen. Sie sollten eine Liste der Netzwerkschnittstellen sehen.

ip a

image.png

Netzwerkschnittstelle ens33 konfigurieren

Wir wollten die Schnittstelle ens33 mit einer statischen IP-Adresse einrichten. Dafür haben wir die Netplan-Konfigurationsdatei in einem Texteditor, zum Beispiel nano, bearbeitet.

nano /etc/netplan/00-installer-config.yaml

In die Datei haben wir einen bestimmten Abschnitt hinzugefügt oder die vorhandene Konfiguration aktualisiert. Dabei haben wir ens33 eine statische IP-Adresse zugewiesen.

# This is the network config written by 'subiquity'
network:
  ethernets:
    ens33:
      dhcp4: no
      addresses: [192.168.1.2/26]
      routes:
        - to: default
          via: 192.168.1.1
      nameservers:
        addresses: [1.1.1.1, 1.0.0.1]
  version: 2
Netzwerkkonfiguration anwenden

Nachdem wir den entsprechenden Befehl ausgeführt hatten, war ens33 mit der statischen IP-Adresse konfiguriert, die wir in der Netplan-Konfigurationsdatei festgelegt hatte.

sudo netplan apply

Einrichten und Konfigurieren eines DHCP-Servers

ISC-DHCP-Server Installation

Zuerst haben wir den ISC-DHCP-Server installiert, indem wir ein Terminal geöffnet und den entsprechenden Installationsbefehl eingegeben haben.

sudo apt install isc-dhcp-server
DHCP-Server konfigurieren

Danach haben wir die Hauptkonfigurationsdatei dhcpd.conf mit einem Texteditor wie nano bearbeitet, um den DHCP-Server zu konfigurieren.

nano /etc/dhcp/dhcpd.conf

Wir haben eine Basis-Konfiguration eingefügt, die eine Standard-Lease-Zeit von 600 Sekunden und eine maximale Lease-Zeit von 7200 Sekunden festlegt. Außerdem haben wir ein Subnetz definiert, das einen IP-Bereich für die DHCP-Clients bereitstellt.

# minimal sample /etc/dhcp/dhcpd.conf
default-lease-time 600;
max-lease-time 7200;

subnet 192.168.1.0 netmask 255.255.255.192 {
 range 192.168.1.10 192.168.1.50;
 option routers 192.168.1.1;
 option domain-name-servers 1.1.1.1;
}
Netzwerkschnittstelle für DHCP festlegen

Anschließend haben wir die Netzwerkschnittstelle konfiguriert, die der DHCP-Server für die Verteilung der IP-Adressen nutzen soll. Dazu haben wir die isc-dhcp-server-Konfigurationsdatei bearbeitet und die INTERFACES-Variable auf die entsprechende Schnittstelle gesetzt, in unserem Fall war das ens33.

nano /etc/default/isc-dhcp-server

image.png

DHCP-Server neu starten

Um die vorgenommenen Änderungen anzuwenden, haben wir den DHCP-Server neu gestartet.

sudo systemctl restart isc-dhcp-server.service
Überprüfung und Analyse

Um sicherzustellen, dass der DHCP-Server korrekt arbeitet, haben wir einen Client im selben Netzwerk getestet.

image.png

Konfiguration des DHCP-Servers mit Reservation

Wir haben den DHCP-Server weiter konfiguriert, indem wir erneut die Hauptkonfigurationsdatei dhcpd.conf bearbeitet haben.

nano /etc/dhcp/dhcpd.conf
# minimal sample /etc/dhcp/dhcpd.conf
default-lease-time 600;
max-lease-time 7200;

subnet 192.168.1.0 netmask 255.255.255.192 {
 range 192.168.1.10 192.168.1.50;
 option routers 192.168.1.1;
 option domain-name-servers 1.1.1.1;
}

host vogelsrv42010 {
 hardware ethernet 00:50:56:9e:c7:d7;
 fixed-address 192.168.1.9;
}

Hier haben wir eine spezielle Konfiguration hinzugefügt, die einem Gerät mit der MAC-Adresse 00:50:56:9e:c7:d7 immer die IP-Adresse 192.168.1.9 zuweist, wenn es eine DHCP-Anfrage stellt.

Nachdem wir diese Einstellung vorgenommen hatten, haben wir den DHCP-Server neu gestartet, um die Änderungen zu übernehmen.

sudo systemctl restart isc-dhcp-server.service

image.png

vogelsrv42010 / vogelsrv42011 - Windows-Server

image.png

image.png

Erweiterte Konfiguration und Analyse

Einrichtung eines DHCP-Relays

Um ein DHCP-Relay auf einem Router, zum Beispiel VyOS, einzurichten, haben wir folgende Schritte durchgeführt. Diese Konfiguration erlaubt es dem Router, DHCP-Anfragen von einem Netzwerksegment (dem "Listen-Interface") an einen DHCP-Server in einem anderen Netzwerksegment (dem "Server") weiterzuleiten, der über das "Upstream-Interface" erreichbar ist.

1.Wir begannen mit der Konfiguration.

configure

2. Dann haben wir den DHCP-Relay-Service konfiguriert, um Anfragen von eth2 zu sammeln und diese über eth1 an den DHCP-Server mit der Adresse 192.168.1.2 weiterzuleiten.

set service dhcp-relay server 192.168.1.2
set service dhcp-relay upstream-interface eth1
set service dhcp-relay listen-interface eth2
commit
save
Erstellung neuer DHCP-Subnets

Für die Erstellung neuer DHCP-Subnets auf unserem DHCP-Server haben wir die DHCP-Konfigurationsdatei bearbeitet:

1. Zuerst öffneten wir die Datei `dhcpd.conf` mit einem Texteditor.

nano /etc/dhcp/dhcpd.conf

2. Dann fügten wir die Konfiguration für die neuen Subnets hinzu.

# minimal sample /etc/dhcp/dhcpd.conf
default-lease-time 600;
max-lease-time 7200;

subnet 192.168.1.0 netmask 255.255.255.192 {
 range 192.168.1.10 192.168.1.50;
 option routers 192.168.1.1;
 option domain-name-servers 1.1.1.1;
}

subnet 192.168.1.64 netmask 255.255.255.192 {
 range 192.168.1.70 192.168.1.110;
 option routers 192.168.1.65;
 option domain-name-servers 1.1.1.1;
}

3. Nachdem wir die Datei gespeichert und geschlossen hatten, starteten wir den DHCP-Server neu, um die Änderungen zu übernehmen.

sudo systemctl restart isc-dhcp-server
Testen des DHCP-Relays

Um das DHCP-Relay zu testen, haben wir einen neuen Windows-Server in das Netzwerk eingefügt, das durch das DHCP-Relay versorgt wird, und überprüft, ob der Server eine korrekte IP-Konfiguration vom DHCP-Server erhält:

1. Eine neue Windows-VM wurde im Netzwerk eingerichtet, das von eth2 bedient wird.

2. Nach dem Hochfahren der VM überprüften wir, ob sie eine IP-Adresse aus dem entsprechenden DHCP-Bereich erhielt (z.B. 192.168.1.70 bis 192.168.1.110 für das Subnet 192.168.1.64/26).

3. Auf dem Windows-Server führten wir in der Befehlszeile (CMD) den Befehl `ipconfig /all` aus, um die erhaltene IP-Konfiguration zu überprüfen. Es bestätigte sich, dass die VM korrekt eine IP-Adresse, Subnetzmaske, den Standardgateway und die DNS-Serverinformationen vom DHCP-Server zugewiesen bekam.

image.png

Einrichtung und Konfiguration eines DHCP-Servers mit udhcpd

Wichtig ist, dass DHCP-Relay von udhcpd nicht unterstützt wird und daher nur eine einfache DHCP-Konfiguration verwendet wurde.

udhcpd Installation:

Zuerst haben wir udhcpd installiert, indem wir ein Terminal geöffnet und den entsprechenden Installationsbefehl eingegeben haben:

sudo apt install udhcpd
DHCP-Server konfigurieren:

Danach haben wir die Hauptkonfigurationsdatei /etc/udhcpd.conf mit einem Texteditor wie nano bearbeitet, um den DHCP-Server zu konfigurieren:

sudo nano /etc/udhcpd.conf

Hier haben wir eine Basis-Konfiguration eingefügt, die eine Standard-Lease-Zeit von 600 Sekunden und eine maximale Lease-Zeit von 7200 Sekunden festlegt. Außerdem haben wir ein Subnetz definiert, das einen IP-Bereich für die DHCP-Clients bereitstellt:

start 192.168.1.10    # Start des IP-Bereichs
end 192.168.1.50     # Ende des IP-Bereichs
option subnet 255.255.255.192
option router 192.168.1.1
option dns 1.1.1.1
option lease 600    # Standard-Lease-Zeit in Sekunden
interface ens33
lease_file /var/lib/misc/udhcpd.leases
static_lease 00:50:56:9e:c7:d7 192.168.1.9
udhcpd aktivieren und starten:

Um udhcpd zu aktivieren und zu starten, haben wir zunächst überprüft, ob es nicht durch eine Einstellung in /etc/default/udhcpd deaktiviert ist. Anschließend haben wir den DHCP-Server neu gestartet, um die vorgenommenen Änderungen anzuwenden:

sed -i '/DHCPD_ENABLED/ s/no/yes/' /etc/default/udhcpd
touch /var/lib/misc/udhcpd.leases
update-rc.d udhcpd defaults
sudo service udhcpd restart
udhcpd testen:

image.png

Unterschieden zwischen udhcpd und dem ISC DHCP Server
  1. Komplexität und Ressourcenverbrauch:

    • udhcpd ist für kleinere Netzwerke oder Embedded-Systeme konzipiert und zeichnet sich durch einen geringeren Ressourcenverbrauch und eine einfachere Konfiguration aus.
    • ISC DHCP bietet umfangreichere Konfigurationsmöglichkeiten und ist besser für größere Netzwerke geeignet, kann aber mehr Systemressourcen verbrauchen.
  2. Konfigurationsdatei:

    • udhcpd verwendet eine einzige Konfigurationsdatei (/etc/udhcpd.conf), die tendenziell einfacher und geradliniger ist.
    • ISC DHCP nutzt die Datei /etc/dhcp/dhcpd.conf für die Konfiguration und unterstützt komplexere Konfigurationsszenarien, einschließlich dynamischer DNS-Updates, Failover-Konfigurationen und Gruppierungen von Einstellungen.
  3. Benutzerfreundlichkeit:

    • udhcpd wird oft für seine Einfachheit gelobt, insbesondere in Szenarien, in denen nur grundlegende DHCP-Funktionen benötigt werden.
    • ISC DHCP erfordert eine tiefere Einarbeitung in die Konfigurationsmöglichkeiten, bietet aber eine weitreichende Flexibilität für komplexe Netzwerkumgebungen.
  4. Funktionsumfang:

    • udhcpd konzentriert sich auf Kern-DHCP-Funktionen und ist daher für Umgebungen geeignet, in denen nur DHCP-Service ohne erweiterte Funktionen benötigt wird.
    • ISC DHCP umfasst erweiterte Funktionen wie dynamisches DNS, IPv6-Unterstützung und detaillierte Zugriffskontrollen, was ihn für komplexe Netzwerkdesigns und -anforderungen prädestiniert.

Einrichten eines ISC DHCP-Servers auf BSD

ISC DHCP-Server Installation:

Zuerst haben wir nachgeschaut welche Version vom DHCP Client man herunterladen muss.

pkg search isc-dhcp

image.png

Danach haben wir den ISC DHCP-Server installiert. Dafür haben wir das Terminal geöffnet und folgenden Befehl eingegeben:

sudo pkg install isc-dhcp44-server-4.4.3P1
DHCP-Server konfigurieren:

Anschließend haben wir die Hauptkonfigurationsdatei /usr/local/etc/dhcpd.conf mit einem Texteditor wie nano bearbeitet, um unseren DHCP-Server zu konfigurieren:

sudo nano /usr/local/etc/dhcpd.conf

Hier haben wir eine Grundkonfiguration hinzugefügt, die unter anderem eine Standard-Lease-Zeit und eine maximale Lease-Zeit festlegt. Wir haben auch ein Subnetz definiert, das einen IP-Bereich für DHCP-Clients bereitstellt:

default-lease-time 600;
max-lease-time 7200;

subnet 192.168.1.0 netmask 255.255.255.192 {
 range 192.168.1.10 192.168.1.50;
 option routers 192.168.1.1;
 option domain-name-servers 1.1.1.1;
}
DHCP-Server aktivieren und starten:

Um unseren DHCP-Server zu aktivieren und beim Systemstart automatisch zu starten, haben wir die Datei /etc/rc.conf bearbeitet und folgende Zeile hinzugefügt:

dhcpd_enable="YES"

Dann haben wir den DHCP-Server gestartet, um sicherzustellen, dass unsere Konfigurationen angewandt werden:

sudo service isc-dhcpd start
FreeBSD DHCP testen:

Der Windows Server bekommt die Antwort vom DHCP also scheint alles zu funktionieren.

image.png

Wireshark Analyse

Schließlich wurde der Ablauf einer `ipconfig /renew` Anfrage in Wireshark aufgezeichnet und bestätigte die Übereinstimmung mit der Struktur, wie sie auch auf Wikipedia beschrieben ist.

image.png

Packet Tracer - DHCP Relay

DHCP-Auftrag.pkt

Overview

Folgend ist der Packet Tracer Aufbau zu sehen um DHCP Relay zu testen.

image.png

vogelsrv42001

GigabitEthernet0/0

Konfiguration vom Router Interface zum VOGEL_INTNET Switch

image.png

GigabitEthernet1/0

Konfiguration vom Router Interface zum VOGEL_DHCP_RELAY Switch

image.png

DHCP-Relay konfiguration

Die Folgende konfiguration muss man noch extra auf dem Router machen damit der DHCP Relay funktioniert.

conf t
interface GigabitEthernet1/0
ip helper-address 192.168.1.2
exit
wr

vogelsrv42002

Server Netzwerkkonfiguration

Netzwerkkonfiguration des DHCP Servers im VOGEL_INTNET

image.png

DHCP VOGEL_INTNET Konfiguration

DHCP Konfiguration von VOGEL_INTNET. Der Name darf nicht geändert werden, da der Packet Tracer sonst einen neuen erstellt, was zu Problemen führen kann.

image.png

DHCP VOGEL_DHCP_RELAY Konfiguration

DHCP Konfiguration von VOGEL_DHCP_RELAY.

image.png

vogelsrv42010

DHCP Konfiguration

Prüfen, ob der Client eine DHCP IP im VOGEL_INTNET erhält.

image.png

vogelsrv42011

DHCP Konfiguration

Prüfen, ob der Client eine DHCP IP im VOGEL_DHCP_RELAY erhält.

image.png

Ergebnis