Der Begriff IP-Weiterleitung beschreibt das Senden eines Netzwerkpakets von einer Netzwerkschnittstelle zu einer anderen auf demselben Gerät. Es sollte aktiviert werden, wenn Ihr System als Router fungieren soll, der IP-Pakete von einem Netzwerk in ein anderes überträgt.
Auf einem Linux-System hat der Linux-Kernel eine Variable namens 'ip_forward', die diesen Wert behält. Es ist über die Datei '/proc/sys/net/ipv4/ip_forward' zugänglich. Der Standardwert ist 0, was keine IP-Weiterleitung bedeutet, da ein normaler Benutzer, der einen einzelnen Computer ohne weitere Komponenten betreibt, dies normalerweise nicht benötigt. Bei Routern, Gateways und VPN-Servern hingegen ist es ein ganz wesentliches Feature.
Als nächstes erklären wir Ihnen, wie Sie IP-Forwarding temporär und dauerhaft aktivieren.
IP-Weiterleitung als Übergangslösung
Um diesen Kernel-Parameter im laufenden Betrieb zu aktivieren, haben Sie zwei Möglichkeiten. Option 1 speichert einfach den Wert 1 in der Variablen von oben wie folgt:
# echo 1 > /proc/sys/net/ipv4/ip_forwardOption 2 verwendet den 'sysctl'-Befehl, mit dem Sie auch verschiedene Kernel-Parameter zur Laufzeit anpassen können [2]. Führen Sie als Administrator den folgenden Befehl aus:
# sysctl -w net.IPv4.ip_forward=1Denken Sie daran, dass diese Einstellung sofort geändert wird. Außerdem bleibt das Ergebnis nach einem Neustart des Systems nicht erhalten.
Sie können den gespeicherten Wert wie folgt abfragen:
# cat /proc/sys/net/ipv4/ip_forwardDieser Befehl gibt einen Wert von 0 für keine IP-Weiterleitung und einen Wert von 1 für aktivierte IP-Weiterleitung zurück. Alternativ zeigt Ihnen die Verwendung von 'sysctl' auch den aktuellen Status an:
# sysctl-Netz.IPv4.ip_forwardNetz.IPv4.ip_forward = 0
#
IP-Weiterleitung dauerhaft aktivieren
Um dies zu erreichen, müssen noch einige andere Schritte durchgeführt werden. Bearbeiten Sie zuerst die Datei '/etc/sysctl.conf'. Suchen Sie nach einer Zeile mit dem Eintrag „#net.IPv4.ip_forward=1“ und entfernen Sie das # am Anfang der Zeile.
Speichern Sie dann die Datei und führen Sie den Befehl 'sysctl' aus, um die angepassten Einstellungen zu aktivieren:
# sysctl -p /etc/sysctl.confDie Option '-p' ist die Abkürzung für '-load' und erfordert einen Namen für die zu befolgende Konfigurationsdatei.
Starten Sie als Nächstes das proc-Dateisystem, das Informationen zum Status des Linux-Kernels bereitstellt, mit dem folgenden Befehl neu:
# /etc/init.d/procps NeustartEtwa 2015 wurde der Dateiname von 'procps . gekürzt.sch' zu 'procps'. Auf älteren Debian-Systemen heißt das Skript, das Sie aufrufen müssen, also 'procps .sch', stattdessen.
Umgang mit Systemd
Die nächste Hürde kam mit der Veröffentlichung von Systemd Version 221. Die IP-Weiterleitung ist standardmäßig deaktiviert und für die Aktivierung muss eine zusätzliche Datei vorhanden sein. Wenn es noch nicht da ist, einfach hinzufügen. Der Dateiname besteht aus dem Namen der Netzwerkschnittstelle gefolgt von der Endung '.Netzwerk', zum Beispiel 'eth0.network' für die Netzwerkschnittstelle '/dev/eth0'. Wie in der Dokumentation [4] angegeben, werden andere Erweiterungen ignoriert.
Der folgende Codeausschnitt zeigt das Setup für die Netzwerkschnittstelle '/dev/tun0'. Es besteht aus zwei Abschnitten - "Match" und "Network". Definieren Sie im Abschnitt Übereinstimmung den Namen der Netzwerkschnittstelle und aktivieren Sie im Abschnitt Netzwerk die IP-Weiterleitung.
# cat /etc/systemd/network/tun0.Netzwerk[Spiel]
Name=tun0
[Netzwerk]
IPForward=ipv4
Fazit
Die Aktivierung der IP-Weiterleitung für IPv4 ist kein Geheimnis. Nur ein paar Schritte und du bist da. Viel Spaß beim Hacken!
Links und Referenzen
* [1] Einrichten von Systemd-Networkd, Debian-Wiki
* [2] Jürgen Haas: Lerne den Linux-Befehl sysctl
* [3] Systemd News für Version 221
* [4] Dokumentation für Systemd