Skip to content
On this page

Routing im LAN mit Ethernet

Ziel dieses Versuches ist es Ethernet Netzwerkinterfaces in einem LAN zu konfigurieren.

Setup

OS-Anpassungen

Raspberry Pi Imager wird nach Anpassungen des Betriebssystems fragen. Sie können an der Stelle bereits SSH aktivieren und einen username mit passwort definieren. Die folgenden Schritte mit userconfig.txt und erstellen des ssh files sind damit nicht mehr notwending.

Verbinden Sie sich ins Lokale WiFi mit wlan0. Achten Sie, dass Sie für wlan0 via dhcp eine IP Adresse beziehen. Dazu kann auch z.B. raspi-config verwendet werden.

Stellen Sie sicher, dass Sie via USB UART und Putty mit dem Raspi Verbunden sind, da Sie die IP Adresse von eth0 jeweils ändern und deshalb nicht im gleichen Netz wie das Hostsystem sind.

arping

Installieren Sie das Paket arping und tshark mit dem command sudo apt install arping tshark auf Ihrem Targetsystem. Falls nötig, verbinden Sie sich hierzu ins Internet via WLAN mit dem Accesspoint dnet (falls nicht Verfügbar, verwenden Sie einen Hotspot).

Falls der networking Service Problemen bereitet (check systemctl status networking) können Sie den Inhalt im File /etc/network/interfaces löschen und das Target neu starten. Verwenden Sie nach dem Reboot UART und sudo raspi-config um sich mit dem dnet Accesspoint (oder alternativ eigenem Hotspot) zu verbinden.

File backupen und leeren

Manchmal macht es Sinn ein File als Backup zu sichern, bevor man es editiert. In Linux können Sie das File im Terminal an einen anderen Ort kopieren (z.B. ins Homeverzeichnis)

bash
sudo cp /etc/network/interfaces ~/interfaces.bak

# verifizieren

cat ~/interfaces.bak


# file "leeren"

echo "" | sudo tee /etc/network/interfaces

Letzteren Command verwenden wir, mit sudo tee um den Inhalt von der Pipe | in das File /etc/network/interfaces umzuleiten, ähnlich, wie wir das sonst mit > machen.

Mit arping können wir einen ARP request vom Target her auslösen. Hiermit können wir feststellen, welche MAC Adresse einem Host zugeordnet ist. Auch lässt sich so feststellen, ob eine IP bereits vergeben ist.

ARP funktioniert auf Layer 2 (Ethernet in unserem Fall), kann also ohne IP Config verwendet werden.

ARP Traffic sniffen

Verwenden Sie tshark um ARP Traffic auf dem Ethernetinterface Netzwerkweit zu sniffen. Schauen Sie sich die man Page von tshark hierzu an und insbesondere die Optionen -i und -Y.

Was für Parameter verwenden Sie hier um nur ARP Traffic auf dem eth0 Interface anzuzeigen?

eth0

eth0 ist das Interface, welches wir für das LAN manuell konfigurieren. Löschen Sie jegliche Einträge in /etc/network/interfaces hierzu. Verbinden Sie eth0 mit dem interface eines Switches im Unterricht.

Der ip Command

Für diese Versuche verwenden wir den ip Command, welcher detailliertere Konfigurationen als ifconfig vornehmen kann. Zum Beispiel ist es mit ip möglich, mehrere IP-Adressen pro Interface zuzuweisen.

Commands

Folgende Commands werden für die Szenarien gebraucht. Mit ip help <subcommand> kann jeweils eine Hilfeseite zu dem ip untercommand aufgerufen werden.

command
ip addrIP Adresse aller interfaces auflisten
ip linkAlle interfaces (L2) anzeigen
ip link set up dev eth0eth0 einschalten
ip link set down dev eth0eth0 ausschalten
ip link set dev eth0 address AA:BB:CC:DD:EE:FFMAC Adresse für interface setzen
ip addr show dev eth0IP Adressen von eth0 auflisten
ip addr add 192.168.51.1/24 dev eth0IP Adresse hinzufügen
ip addr del 192.168.51.1/24 dev eth0IP Adresse löschen
ip addr flush dev eth0Alle IP Adressen auf dem interface eth0 löschen
ip routeZeigt die Routing table an

Vollständig vernetzes Ethernet

Für die folgenden Szenarien verwenden wir ein vollständig vernetzes LAN auf Layer 2. Alle Hosts sind also am gleichen, geswitchten Ethernet Netzwerk verbunden.

Die Subnetze werden wir auf Layer 3 anpassen.

Szenario 1 - Einfaches Netz ohne Routing

Stellen Sie sicher, dass Sie arping installiert haben. Mit arping kann festgestellt werden, ob eine Adresse bereits vergeben worden ist.

Netz

Wir verwenden das Netz 10.118.0.0/24. Löschen Sie alle Adressen, welche Sie auf dem Interface eth0 konfiguriert haben (ggf. mit ip addr del oder ip addr flush entfernen).

Öffnen Sie die man Page zu ip address und suchen Sie den flush Command. Wozu dient dieser?

Suchen Sie sich eine freie IP Adresse im Netz 10.118.0.0/24. Konsultieren Sie die man page von arping um herauszufinden, welche Parameter notwendig sind um festzustellen, ob die gewünschte IP Adresse frei ist.

TIP

Welche Parameter sind notwendig um den ARP request zu versenden?

Verwenden Sie ip addr add um die IP dem Interface hinzuzufügen. Verifizieren Sie mit ip addr show dev eth0, dass die IP Adressen richtig konfiguriert worden sind. Falls die IP Adresse fehlt, schauen Sie mit ip link, ob das Interface überhaupt eingeschaltet ist.

Pingen Sie Ihren Nachbarn um zu verifizieren, dass die Konfiguration geklappt hat.

Routing Table

Zeigen Sie die Routing Table an. Welche Einträge finden Sie in der Routing table? Nach welcher Regel sind die Einträge wohl erstellt worden?

Szenario 2 - Eigenes Subnetz mit Routing

In diesem Szenario arbeiten Sie in einer Zweiergruppe. Ziel ist es einen Router zu Konfigurieren, welcher Zugang zu einem Netz bereitstellt und Packets auf Layer 3 entsprechend forwarded.

NameAufgabeIP Adressen
Host 1Router1x in Netz 10.118.0.0/24, 1x in Netz 10.222.x.y/24
Host 2Host1x in Netz 10.222.x.y/24

Zweites Netz wählen

Wählen Sie ein /24 Subnetz aus 10.222.0.0/16. Idealerweise stellen Sie sicher, dass niemand anderes das gleiche Netz verwendet. Markieren Sie das Netz rot, welches Sie verwenden möchten in folgendem Sheet: https://docs.google.com/spreadsheets/d/1eZQJvxVeE1FlwEh4iWNV5J66im47HU_URKnahP-nU1g/edit?usp=sharing

Host (Host 2)

Host 2 soll im gewählten Netz für eth0 genau eine IP beziehen. Entfernen Sie bei Host 2 alle IP Adressen auf dem eth0 Interface und wählen Sie eine IP Adresse in dem von Ihnen gewählte Subnetz.

Router (Host 1)

Lassen Sie die Konfiguration wie in Szenario 1 beschrieben stehen. Verifizieren Sie, dass Sie andere Hosts im Netz 10.118.0.0/24 pingen können.

Ziel ist es, dass Sie ihr eth0 Interface mit zwei IP Adressen konfigurieren und es Host 2 erlauben, ins 10.118.0.0/24 Netz zu kommunizieren, ohne, dass Host 2 im Netz 10.118.0.0/24 drin ist. Diesen Prozess nennt man genau "Routing" (das Verbinden von Netzen auf Layer 3).

Vergeben Sie eine weitere IP Adresse an Ihr eth0 Interface im Subnetz, welches Sie gewählt haben.

Pingen Sie sich nun Gegenseitig, klappt das? Wird bereits geroutet?

Versuchen Sie von Host 2 her die IP von Host 1 im Netz 10.118.0.0/24 zu pingen. Klappt das?

Routes einrichten

Als nächstes richtne wir auf beiden Hosts eine entsprechende Route ein, mit dem Ziel, dass Host 2 ins Netz 10.118.0.0/24 kommunizieren kann. Schauen Sie sich die Routing Table auf Host 1 an. Gibt es bereits eine Route ins Netz 10.118.0.0/24? Gibt es eine Route in Ihr gewähltes Netz 10.222.x.y/24 ?

Route auf Host 2

Schauen Sie sich die Routing Table auf Host 2 an. Finden Sie einen eintrag für das Zielnetz 10.118.0.0/24?

Wie sollte eine Route aussehen für das Destinationsnetz?

RouteParameter
Destinationsnetz mit Netmask
Netzwerkinterface
Gateway IP (via)

Schauen Sie sich unter "Examples" bei man ip route ein paar Beispiele an. Passt eines der Beispiele für unser Setup?

Fügen Sie die Route via ip route dem Routing Table hinzu und verifizieren Sie.

Was passiert nun, wenn Sie versuchen einen Host im Netz 10.118.0.0/24 zu pingen? Hat sich etwas an der Fehlermeldung geändert?

IP Forwarding aktivieren

Host 1 (der Router) letet Packets aus Sicherheitsgründen noch nicht weiter. Im SysFS File /proc/sys/net/ipv4/ip_forward ist konfiguriert, ob IPv4 Packets geforwarded werden. Der Wert sollte 1 sein. Schreiben Sie den Wert 1 ins File rein.

Als root user ein File schreiben

Versuchen Sie mit sudo echo den Wert 1 ins File zu schreiben, erhalten Sie wahrscheinlich den Fehler bash: /proc/sys/net/ipv4/ip_forward: Permission denied .

Das Problem ist, dass das echo zwar mit Superuserrechten ausgeführt wird - das Schreiben ins File allerdings nicht. Es gibt zwei alternativen:

  1. mit sudo su auf eine Root Shell wechseln (Vorsicht geboten, hier können Sie ohne Errors und Warnings das System beschädigen) ...
  2. ... eleganter: Den Command tee via Pipe mit sudo verwenden um ins File zu schreiben (schauen Sie sich die Manpage zum Command an man tee).

Nachdem Sie nun IP Forwarding aktiviert haben, versuchen Sie nochmals das äussere IP von Host 1 im Netz 10.118.0.0/24 zu pingen.

Szenario 3

Tragen Sie nun die IP des Routers im 10.118.0.0/24 Netz im Sheet https://docs.google.com/spreadsheets/d/1eZQJvxVeE1FlwEh4iWNV5J66im47HU_URKnahP-nU1g/edit?usp=sharing unter der Spalte via ein. Ergänzen Sie auch die IP von Host 1 und Host 2 in Ihrem bezogenen Subnetz.

Fügen Sie bestehende via Einträge in den Routing Table des Routers ein. Versuchen Sie andere Hosts zu erreichen:

  • vom Router her
  • vom Host her

Kommt es zu Timeouts? Starten Sie tshark (installieren, falls nicht vorhanden) um nachvollziehen zu können, ob IP Packets geroutet werden.