% <#>-----------------------------------------------------------------------<#> \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}