diff --git a/chapters/05-dhcp.tex b/chapters/05-dhcp.tex new file mode 100644 index 0000000..71f9bf3 --- /dev/null +++ b/chapters/05-dhcp.tex @@ -0,0 +1,131 @@ +% <#>-----------------------------------------------------------------------<#> +\section{DHCP}% +\label{sec:dhcp} + +Das \acrfull{acr:dhcp} ist heute unverzichtbar, denn es dient der automatischen +Konfiguration von Netzwerk-Schnittstellen eines Systems. Neben den üblichen +Parametern einer IP-Schnittstelle (IP-Adresse, Netzwerkmaske und Gateway) können +auch weitere Parameter übergeben werden. Beispielsweise Hostname, +DNS-Server-Adresse, Zeit-Server-Adresse, TFTP-Server-Adresse und Search-Domain. In RFC2132 sind weitere Parameter spezifiziert. + +\subsection{Ablauf}% +\label{sec:dhcp.ablauf} + +\begin{figure}[!h] + \centering + \begin{tikzpicture} + \draw (-3,0) -- (-3,-6) (12,0) -- (12,-6); + \node at (-3,.3) {Client}; + \node at (12,.3) {Server}; + \draw[-{Latex[length=4mm, width=3mm]}] (-3,-1) -- node[midway, above, rotate=-4] {DHCP-DISCOVER} (12,-2); + \draw[{Latex[length=4mm, width=3mm]}-] (-3,-3.5) -- node[midway, above, rotate=4] {DHCP-OFFER} (12,-2.5); + \draw[-{Latex[length=4mm, width=3mm]}] (-3,-4) -- node[midway, above, rotate=-3] {DHCP-REQUEST} (12,-4.5); + \draw[{Latex[length=4mm, width=3mm]}-] (-3,-5.5) -- node[midway, above, rotate=3] {DHCP-ACK} (12,-5); + \end{tikzpicture} + \caption{DHCP-Ablauf}% + \label{figure:dhcp.ablauf} +\end{figure} + +\begin{description}[itemsep=0pt] + \item[DHCP-DISCOVER] \mbox{} \\ + Der Client sucht im Netzwerk nach einen + \acrshort{acr:dhcp}-Server. Dazu verwendet er die Broadcast-Adresse auf + \acrshort{acr:osi}-Schicht 2. + \bigskip + + \item[DHCP-OFFER] \mbox{} \\ + Ein oder mehrere \acrshort{acr:dhcp}-Server werden auf die Anfrage des Clients + regieren und mit einer Konfiguration antworten. + \bigskip + + \item[DHCP-REQUEST] \mbox{} \\ + Der Client wählt einer der angebotenen Konfigurationen aus und fordert diese + beim Server an. + \bigskip + + \item[DHCP-ACK] \mbox{} \\ + Der Server bestätigt die Vergabe der Konfiguration und sendet die + Gültigkeitsdauer (Lease time) der Konfiguration mit. +\end{description} + +Der folgende Ausschnitt aus einer Logdatei des ISC-DHCP-Servers verdeutlicht die +DHCP-Meldungen und den Ablauf zwischen Client und Server. Dabei ist gut zu +erkennen, dass die Kommunikation auf \acrshort{acr:osi}-Schicht 2 stattfindet, +denn der Client besitzt noch keine IP. Es ist nur die \acrshort{acr:mac}-Adresse +bekannt. + +\begin{bashcode} +$ tail -n 4 /var/log/dhcp.log +DHCPDISCOVER from d8:e0:e1:c5:69:6d (android-10) via enp1s0 +DHCPOFFER on 192.168.179.34 to d8:e0:e1:c5:69:6d (android-10) via enp1s0 +DHCPREQUEST for 192.168.179.34 (192.168.179.12) from d8:e0:e1:c5:69:6d (android-10) via enp1s0 +DHCPACK on 192.168.179.34 to d8:e0:e1:c5:69:6d (android-10) via enp1s0 +\end{bashcode} + +\begin{itemize}[label={},itemsep=0pt] + \item \textbf{Aufgabe 1a:} Neben DHCP-DISCOVER, DHCP-OFFER, DHCP-REQUEST und + DHCP-ACK gibt es weitere DHCP-Meldungen. Diese sind im RFC spezifiziert. + Welche weiteren DHCP-Meldungen gibt es und wozu dienen sie? +\end{itemize} + +\subsection{Randbedingungen und Informationen}% +\label{sec:dhcp.randbedingungen} + +Weitere Randbedingungen und Informationen zu \acrshort{acr:dhcp}: + +\begin{enumerate}[itemsep=0pt] + \item Da die Suche nach einer Netzwerkkonfiguration per DHCP-DISCOVER über + Broadcast auf \acrshort{acr:osi}-Schicht 2 stattfindet, kann nur ein Server im + eigenen Subnetz erreicht werden. Soll ein Server in einem anderen Subnetz + erreich werden, muss auf dem Router (Gateway) ein Relay-Agent eingerichtet + werden. + \item Es ist möglich die Vergabe einer IP-Konfiguration statisch an eine + \acrshort{acr:mac}-Adresse zu binden. + \item Per \acrshort{acr:dhcp} lässt sich ein \acrshort{acr:tftp}-Server + definieren, welcher \acrshort{acr:pxe}-Boot ermöglicht - booten eines Systems + über das Netzwerk. + \item Weitere details sind in RFC2131 und RFC2132 spezifiziert. +\end{enumerate} + +\subsection{Dynamic DNS}% +\label{sec:dhcp.dynamic-dns} + +Das \acrfull{acr:ddns} oder auch DynDNS genannt wird verwendet, um +\acrlongpl{acr:rr} im \acrshort{acr:dns} hinzuzufügen, aktualisieren oder zu +entfernen. Grund kann beispielsweise sein, dass vergebene Konfigurationen des +\acrshort{acr:dhcp}-Servers an Clients in einer \acrshort{acr:ddns}-Zone +automatisch gepflegt werden sollen. + +Ein weiteres Beispiel für \acrshort{acr:ddns} ist die Übermittlung der +IP-Adresse des häuslichen Routers, beispielsweise einer FRITZ!Box, an einen +Provider wie \href{https://strato.de}{strato.de}, +\href{https://noip.com}{noip.com} oder \href{https://ionos.de}{ionos.de}, wenn +durch einen IP-Reconnect die IP-Adresse des Routers im Internet sich ändert. +Dadurch wird die IP-Adresse zu einem \acrshort{acr:ddns}-Record synchron +gehalten. + +\subsection{DDNS Ablauf}% +\label{sec:dhcp.dyndns-ablauf} + +Das folgende Sequenzdiagramm beschreibt den Ablauf von \acrshort{acr:ddns} +zwischen einem ISC-DHCP-Server (dhcpd) und ISC-DNS-Server (bind9). Dabei umfasst +die DDNS-UPDATE Meldung folgende \acrshortpl{acr:rr}: A, AAAA, PTR und optional +TXT. + +\begin{figure}[!h] + \centering + \begin{tikzpicture} + \draw (-7,0) -- (-7,-7) (0,0) -- (0,-7) (7,0) -- (7,-7); + \node at (-7,.3) {Client}; + \node at (0,.3) {DHCP}; + \node at (7,.3) {DNS}; + \draw[-{Latex[length=4mm, width=3mm]}] (-7,-1) -- node[midway, above, rotate=-8] {DHCP-DISCOVER} (0,-2); + \draw[{Latex[length=4mm, width=3mm]}-] (-7,-3.5) -- node[midway, above, rotate=8] {DHCP-OFFER} (0,-2.5); + \draw[-{Latex[length=4mm, width=3mm]}] (-7,-4) -- node[midway, above, rotate=-5] {DHCP-REQUEST} (0,-4.5); + \draw[{Latex[length=4mm, width=3mm]}-] (-7,-5.5) -- node[midway, above, rotate=5] {DHCP-ACK} (0,-5); + \draw[-{Latex[length=4mm, width=3mm]}] (0,-5) -- node[midway, above, rotate=-5] {DDNS-UPDATE} (7,-5.5); + \draw[-{Latex[length=4mm, width=3mm]}] (7,-6) -- node[midway, above, rotate=4] {DDNS-RESPONSE} (0,-6.5); + \end{tikzpicture} + \caption{DHCP-Ablauf}% + \label{figure:dhcp.ablauf} +\end{figure} \ No newline at end of file diff --git a/index.tex b/index.tex index f3d6ecb..e9e20ba 100644 --- a/index.tex +++ b/index.tex @@ -339,6 +339,7 @@ % Dokumentation: \usepackage{tikz} \usetikzlibrary{intersections} +\usetikzlibrary{arrows.meta} % Packet: varwidth % Beschreibung: The package defines a varwidth environment (based on minipage) which is an analogue @@ -410,10 +411,11 @@ % Importiere weitere .tex Dokumente % \include{./examples/examples} - \include{./chapters/01-ssh} - \include{./chapters/02-file-permissions} - \include{./chapters/03-network} - \include{./chapters/04-dns} + % \include{./chapters/01-ssh} + % \include{./chapters/02-file-permissions} + % \include{./chapters/03-network} + % \include{./chapters/04-dns} + \include{./chapters/05-dhcp} % \include{./chapters/01-network} % \include{./chapters/02-dns} diff --git a/referenzen/glossar.tex b/referenzen/glossar.tex index 4e2fa26..f4d6690 100644 --- a/referenzen/glossar.tex +++ b/referenzen/glossar.tex @@ -8,6 +8,7 @@ \newacronym{acr:ddl}{DDL}{Data-Definition-Language} \newacronym{acr:dhcp}{DHCP}{Dynamic Host Configuration Protocol} \newacronym{acr:dns}{DNS}{Domain Name System} +\newacronym{acr:ddns}{DDNS}{Dynamic Domain Name System} \newacronym{acr:eCryptfs}{eCryptfs}{Enterprise Cryptographic Filesystem} \newacronym{acr:ext2}{ext2}{Second Extended Filesystem} \newacronym{acr:ext3}{ext3}{Third Extended Filesystem} @@ -17,8 +18,11 @@ \newacronym{acr:icann}{ICANN}{Internet Corporation for Assigned Names and Numbers} \newacronym{acr:ip}{IP}{Internet Protocol} \newacronym{acr:kvm}{KVM}{Kernel-based Virtual Machine} +\newacronym{acr:mac}{MAC}{Media Access Control} \newacronym{acr:ntfs}{NTFS}{New Technology File System} \newacronym{acr:ntp}{NTP}{Network-Time-Protocol} +\newacronym{acr:osi}{OSI}{Open Systems Interconnection} +\newacronym{acr:pxe}{PXE}{Preboot Execution Environment} \newacronym{acr:raid}{RAID}{Redundant Array of Independent Disks} \newacronym{acr:ram}{RAM}{Random-Access-Memory} \newacronym{acr:rdp}{RDP}{Remote-Desktop-Protocol} @@ -30,6 +34,7 @@ \newacronym{acr:ssh}{SSH}{Secure-Shell} \newacronym{acr:uefi}{UEFI}{Unified Extensible Firmware Interface} \newacronym{acr:telnet}{Telnet}{Teletype Network} +\newacronym{acr:tftp}{TFTP}{Trivial File Transfer Protocol} \newacronym{acr:tld}{TLD}{Top-Level-Domain} \newacronym{acr:vnc}{VNC}{Virtual-Network-Computing} diff --git a/solutions/05-dhcp.sh b/solutions/05-dhcp.sh new file mode 100644 index 0000000..07d5f4a --- /dev/null +++ b/solutions/05-dhcp.sh @@ -0,0 +1,18 @@ +#!/bin/bash + +# Aufgabe 1a: + +# DHCP-NAK +# DHCP-Server sieht sein Konfigurationsangebot zurück. + +# DHCP-DECLINE +# Client weißt das Konfigurationsangebot vom Server ab. + +# DHCP-INFORM +# Client informiert sich über weitere Konfigurationsparameter beim Server. + +# DHCP-RELEASE +# Explizite Aufforderung des Clients die Konfiguration wieder freizugeben und +# anderen Clients zur Verfügung zu stellen. + +# https://www.nm.ifi.lmu.de/pub/Diplomarbeiten/demm99/HTML-Version/node52.html \ No newline at end of file