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.
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)
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
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
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
vogelsrv42002 - Ubuntu-Server (ISC-DHCP)
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
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
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.
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
vogelsrv42010 / vogelsrv42011 - Windows-Server
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.
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:
Unterschieden zwischen udhcpd und dem ISC DHCP Server
-
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.
-
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.
- udhcpd verwendet eine einzige Konfigurationsdatei (
-
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.
-
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
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.
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.
Packet Tracer - DHCP Relay
Overview
Folgend ist der Packet Tracer Aufbau zu sehen um DHCP Relay zu testen.
vogelsrv42001
GigabitEthernet0/0
Konfiguration vom Router Interface zum VOGEL_INTNET Switch
GigabitEthernet1/0
Konfiguration vom Router Interface zum VOGEL_DHCP_RELAY Switch
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
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.
DHCP VOGEL_DHCP_RELAY Konfiguration
DHCP Konfiguration von VOGEL_DHCP_RELAY.
vogelsrv42010
DHCP Konfiguration
Prüfen, ob der Client eine DHCP IP im VOGEL_INTNET erhält.
vogelsrv42011
DHCP Konfiguration
Prüfen, ob der Client eine DHCP IP im VOGEL_DHCP_RELAY erhält.