% <#>-----------------------------------------------------------------------<#>
\section{Netzwerk}%
\label{sec:network}

% #>------------------------------------------------------------------------<#
\subsection{Netzwerkkonfiguration}%
\label{sec:netzwerk.konfiguration}

Bei der Installation des Basis-Systems (Fedora Server Edition) wird das Paket
\textbf{network-manager} installiert. Dieses Paket ist für die einfache und
weitgehend automatische Netzwerk-Konfiguration auf Endbenutzer-Systemen
entwickelt worden. Daher ist es auf Serversystemen, bei denen eine statische
Adressvergabe oder es zu komplexen Netzwerkstrukturen kommen kann,
kontraproduktiv.

\begin{itemize}[label={},itemsep=0pt]
  \item \textbf{Aufgabe 1a:} Stellen Sie mit dem Befehl \textit{yum list
  installed} fest, ob das Paket mit dem Namensbestandteil
  \textbf{network-manager} installiert ist.
  \item \textbf{Aufgabe 1b:} Falls Sie hierbei fündig geworden sind, stoppen und
  deaktivieren Sie den Dienst \textit{NetworkManager} per \textit{systemctl} und
  \dots
  \item \textbf{Aufgabe 1c:} überprüfen Sie mithilfe von \textit{systemctl}, ob
  der Dienst \textit{NetworkManager} gestoppt und deaktiviert ist.
\end{itemize}

Nachdem Sie den Dienst \textit{NetworkManager} entfernt haben, stellen Sie
mithilfe von \textit{systemd} die Netzwerkkonfiguration ein und erstellen ggfl.
notwendige virtuelle Netzwerkkarten. \textit{systemd} unterteilt die
Netzwerkkonfiguration in drei unterschiedliche Dienste:

\begin{itemize}[label={},itemsep=0pt]
  \item \textit{systemd-networkd:} Erstellt virtuelle Netzwerkkarten und richtet
  diese als auch physische ein. Dadurch ist die Zuweisung einer dynamischen per
  \acrshort{acr:dhcp} oder statischen IP-Adresse möglich.
  \item \textit{systemd-resolved:} Kümmert sich um die Namensauflösung per
  \acrshort{acr:dns}.
  \item \textit{systemd-timesyncd:} Richtet die Uhrzeit mithilfe des
  \acrfull{acr:ntp} auf dem System ein.
\end{itemize}

Die Dienste \textit{systemd-resolved} und \textit{systemd-timesyncd} rufen
notwendige Informationen von anderen Diensten auf dem System ab. Ein anpassen
des Standardverhaltens ist hier nicht notwendig.

\begin{itemize}[label={},itemsep=0pt]
  \item \textbf{Aufgabe 1d:} Starten und aktivieren Sie die beiden Dienste
  mithilfe des Befehls \textit{systemctl}.
  \item \textbf{Aufgabe 1e:} Überprüfen Sie, ob die Dienste als \textit{active
  (running)} markiert sind.
  \item \textbf{Aufgabe 1f:} Zusätzlich überprüfen Sie, ob die Dienste auch als
  \textit{enabled} markiert sind, sodass diese bei einem erneusten Systemstart
  ausgeführt werden.
\end{itemize}

Die Netzwerkkonfiguration per \textit{systemd} wird über die unterschiedlichen
Dateiendungen \textit{.netdev} und \textit{.network} im Verzeichnis
\textit{/etc/systemd/network} geregelt.

\begin{itemize}[label={},itemsep=0pt]
  \item \textbf{Aufgabe 1g:} Rufen Sie die Dokumentation von
  \href{https://www.freedesktop.org/software/systemd/man/systemd.network.html}{systemd.network}
  und
  \href{https://www.freedesktop.org/software/systemd/man/systemd.netdev.html}{systemd.netdev}
  auf und erklären Sie den Unterschied der beiden Konfigurationsdateien
  \textit{.netdev} und \textit{.network}.
\end{itemize}

Mit dem Befehl \textit{ip link show} werden alle Netzwerkkarten, welches Ihr
System kennt ausgegeben.

\begin{bashcode}
$ ip link show
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1000
  link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
2: enp1s0: <BROADCAST,MULTICAST> mtu 1500 qdisc fq_codel state DOWN mode DEFAULT group default qlen 1000
  link/ether 52:54:00:b3:95:e4 brd ff:ff:ff:ff:ff:ff
\end{bashcode}

Das System, auf dem der Befehl ausgeführt wurde, kennt zwei Netzwerkadapter. Mit
dem Index 1 ist das \textit{loopback device} \textbf{lo} aufgeführt. Über das
\textit{loopback device} können Dienste, welche auf dem lokalen System
ausgeführt werden, per Netzwerk sich selbst oder andere Dienste adressieren bzw.
zugreifen. Dies ist durch die IP-Adresse \textit{127.0.0.1} oder den DNS-Namen
\textit{localhost} möglich.

Vorteil des \textit{loopback device} ist es, dass die Netzwerkpakete nicht den
Rechner verlassen. Dadurch wird unnötiger Netzwerkverkehr, welcher über das
physische Netzwerk geleitet wird, vermieden.

Mit dem Index 2 wird der Netzwerkadapter \textbf{enp1s0} geführt. Dieser besitzt
die MAC-Adresse \textit{52:54:00:b3:95:e4}. Der Netzwerkadapter ist als inaktiv
bzw. ausgeschaltet markiert. Dies kann durch die Information \textit{state DOWN}
entnommen werden. Dieser ist nicht konfiguriert und besitzt auch keine
IP-Adresse.

\begin{itemize}[label={},itemsep=0pt]
  \item \textbf{Aufgabe 1h:} Ermitteln Sie ihren Netzwerkadapter, welcher nicht
  konfiguriert wurde. Überprüfen Sie mit dem Befehl \textit{ip address show}, ob
  ihr Netzwerkadapter eine IP-Adresse zugewiesen wurde.
  \item \textbf{Aufgabe 1i:} Schauen Sie sich in der Dokumentation zu
  \href{https://www.freedesktop.org/software/systemd/man/systemd.network.html}{systemd.network}
  die Beispielkonfigurationen an und erstellen Sie für ihren Netzwerkadapter
  eine passende Konfiguration.

  Falls Sie die Konfiguration ihres lokalen Netzwerks nicht kennen, um ihrem
  System eine statische IP-Adresse zu zuweisen, verwenden Sie
  \acrshort{acr:dhcp}.
  \item \textbf{Aufgabe 1j:} Starten und aktivieren Sie den Dienst
  \textit{systemd-networkd} mithilfe von \textit{systemctl}.
  \item \textbf{Aufgabe 1k:} Überprüfen Sie, ob der Dienst als \textit{active
  (running)} markiert ist und \dots
  \item \textbf{Aufgabe 1l:} ob dieser als \textit{enabled} markiert ist.
\end{itemize}

% #>------------------------------------------------------------------------<#
\subsection{Routing}%
\label{sec:netzwerk.routing}

Das \acrfull{acr:ip} ist auf Schicht 3 des OSI-Modells angesiedelt. Es dient der
Strukturierung von großen Netzwerken, d.h der Aufteilung dieser Netze in
übersichtliche Teilnetze und der Verbindung dieser Teilnetze. \acrshort{acr:ip}
ist für die Vermittlung eines Weges, einer Route, zwischen zwei
Kommunikationspartnern zuständig. Diese Route muss auch über mehrere Teilnetze
hinweg gefunden werden. Die Verbindungspunkte zwischen Netzen werden als Router
oder Gateway bezeichnet.

Jeder Rechner, auch solche, die keine Routingfunktion haben, muss Informationen
zur Wegefindung im Netz speichern. Dies geschieht bei jedem
\acrshort{acr:ip}-fähigen Betriebssystem in einer Routingtabelle, die statisch
oder dynamisch verwaltet werden kann. In einem Maschennetz wie dem Internet ist
eine dynamische Verwaltung sinnvoll, da so die Wegewahl der aktuellen
Belastungssituation auf den verschiedenen Wegen angepasst werden kann. Auch bei
Ausfall einer Verbindung kann so automatisch eine Ersatzroute konfiguriert
werden. Bei einfachen Netzverbünden ohne Maschenstruktur wird statisches Routing
verwendet, was auch ohne Zusatzsoftware von den üblichen Betriebssystemen
geleistet werden kann.

% >---------------------------------------------------------------------------<
\subsubsection{Einfache Netze}%
\label{sec:netzwerk.routing.einfache-netze}

Selbst in \acrshort{acr:ip}-Netzen ohne Anbindung an andere Netze besitzt jeder
Rechner eine statische Routingtabelle in minimaler Größe. Die Tabelle enthält
mehrere Informationen, die wichtigsten sind in den ersten Spalten festgehalten.
Darunter wird das Zielnetzwerk, die verwendete Schnittstelle und das verwendete
Gateway aufgeführt. In diesem einfachsten Fall bleibt die Spalte für das Gateway
leer und es gibt nur einen Eintrag in jeder Tabelle. Diese minimale
Routingtabelle wird bei allen Betriebssystem mit der normalen
Netzwerkkonfiguration automatisch erstellt.

\begin{table}[H]
  \footnotesize
  \centering
  \begin{tabularx}{17cm}{p{2.6cm}|p{2.6cm}|p{1.9cm}||p{2.6cm}|p{2.6cm}|p{1.9cm}}
    \multicolumn{3}{c||}{\textbf{PC}}                     & \multicolumn{3}{c}{\textbf{Laptop}}                   \\
    \hline
    Zielnetz            & Netzwerkadapter & Gateway       & Zielnetz            & Netzwerkadapter & Gateway       \\
    \hline\hline
    192.168.178.0/24    & enp1s0          & -             & 192.168.178.0/24    & wlp5s1          & -             \\
  \end{tabularx}
\end{table}

\begin{table}[H]
  \footnotesize
  \centering
  \begin{tabularx}{8.5cm}{p{2.6cm}|p{2.6cm}|p{1.9cm}}
    \multicolumn{3}{c}{\textbf{Server A}}                 \\
    \hline
    Zielnetz            & Netzwerkadapter & Gateway       \\
    \hline\hline
    192.168.178.0/24    & eth0            & -             \\
  \end{tabularx}
\end{table}

\begin{figure}[H]
  \centering
  \includegraphics[width=0.65\textwidth]{img/einfache-netze.png}
\end{figure}

% >---------------------------------------------------------------------------<
\subsubsection{Einfache Netze mit Internetanbindung}%
\label{sec:netzwerk.routing.einfache-netze-mit-internetanbindung}

Hat ein Netzwerk genau eine Anbindung an die anderen Netzwerke, erhält die
Routingtabelle auf jedem Rechner eine zusätzliche Zeile, in der angegeben wird,
auf welchem Weg die anderen Netzwerke erreicht werden können. Da alle Netzwerke
über den gleichen ersten Router erreicht werden, wird diese Zeile der
Routingtabelle als Standard- bzw. Default-Route bezeichnet. Dieses
Standard-Gateway muss bei allen Betriebssystemen gesondert konfiguriert werden.

\begin{table}[H]
  \footnotesize
  \centering
  \begin{tabularx}{17cm}{p{2.6cm}|p{2.6cm}|p{1.9cm}||p{2.6cm}|p{2.6cm}|p{1.9cm}}
    \multicolumn{3}{c||}{\textbf{PC}}                     & \multicolumn{3}{c}{\textbf{Laptop}}                   \\
    \hline
    Zielnetz            & Netzwerkadapter & Gateway       & Zielnetz            & Netzwerkadapter & Gateway       \\
    \hline\hline
    192.168.178.0/24    & enp1s0          & -             & 192.168.178.0/24    & wlp5s1          & -             \\
    0.0.0.0/0           & enp1s0          & 192.168.178.1 & 0.0.0.0/0           & wlp5s1          & 192.168.178.1 \\
  \end{tabularx}
\end{table}

\begin{table}[H]
  \footnotesize
  \centering
  \begin{tabularx}{8.5cm}{p{2.6cm}|p{2.6cm}|p{1.9cm}}
    \multicolumn{3}{c}{\textbf{Server A}}                 \\
    \hline
    Zielnetz            & Netzwerkadapter & Gateway       \\
    \hline\hline
    192.168.178.0/24    & eth0            & -             \\
    189.10.55.47/32     & ppoe1           & -             \\
    0.0.0.0/0           & ppoe1           & 189.10.55.47  \\
  \end{tabularx}
\end{table}

\begin{figure}[H]
  \centering
  \includegraphics[width=1\textwidth]{img/einfache-netze-mit-internetanbindung.png}
\end{figure}

% >---------------------------------------------------------------------------<
\subsubsection{Zwei Netze mit Internetanbindung}%
\label{sec:netzwerk.routing.zwei-netze-mit-internetanbindung}

\begin{table}[H]
  \footnotesize
  \centering
  \begin{tabularx}{17cm}{p{2.6cm}|p{2.6cm}|p{1.9cm}||p{2.6cm}|p{2.6cm}|p{1.9cm}}
    \multicolumn{3}{c||}{\textbf{PC}}                     & \multicolumn{3}{c}{\textbf{Laptop}}                   \\
    \hline
    Zielnetz            & Netzwerkadapter & Gateway       & Zielnetz            & Netzwerkadapter & Gateway       \\
    \hline\hline
    192.168.178.0/24    & enp1s0          & -             & 192.168.178.0/24    & wlp5s1          & -             \\
    0.0.0.0/0           & enp1s0          & 192.168.178.1 & 0.0.0.0/0           & wlp5s1          & 192.168.178.1 \\
    \multicolumn{6}{c}{} \\
    \multicolumn{3}{c||}{\textbf{Server A}}               & \multicolumn{3}{c}{\textbf{Server B}}                 \\
    \hline
    Zielnetz            & Netzwerkadapter & Gateway       & Zielnetz            & Netzwerkadapter & Gateway       \\
    \hline\hline
    192.168.178.0/24    & eth0            & -             & 192.168.178.0/24    & eth0            & 192.168.179.1 \\
    192.168.179.0/24    & eth0            & 192.168.178.4 & 192.168.179.0/24    & eth1            & -             \\
    189.10.55.47/32     & ppoe1           & -             & 0.0.0.0/0           & eth0            & 192.168.178.1 \\
    0.0.0.0/0           & ppoe1           & 189.10.55.47  \\
    \multicolumn{6}{c}{} \\
    \multicolumn{3}{c||}{\textbf{Tablet}}                 & \multicolumn{3}{c}{\textbf{Smartphone}}               \\
    \hline
    Zielnetz            & Netzwerkadapter & Gateway       & Zielnetz            & Netzwerkadapter & Gateway       \\
    \hline\hline
    192.168.179.0/24    & wlp7s3          & -             & 192.168.179.0/24    & wlp3s8          & -             \\
    0.0.0.0/0           & wlp7s3          & 192.168.179.1 & 0.0.0.0/0           & wlp3s8          & 192.168.179.1 \\
  \end{tabularx}
\end{table}

\begin{figure}[H]
  \centering
  \includegraphics[width=1\textwidth]{img/zwei-netze-mit-internetanbindung.png}
\end{figure}

\newpage

\begin{itemize}[label={},itemsep=0pt]
  \item \textbf{Aufgabe 2b:} Ermitteln Sie mithilfe des Befehls \textit{ip} Ihr
  Gateway.
  \item \textbf{Aufgabe 2c:} Erstellen Sie anhand des folgenden
  Netzwerkdiagramms die Routingtabellen für alle abgebildeten Netzwerkgeräte.
\end{itemize}

\begin{figure}[H]
  \centering
  \includegraphics[width=1\textwidth]{img/aufgabe-netze-mit-internetanbindung.png}
\end{figure}
