Was du unbedingt beim Einrichten eines Raspberry Netzwerks Wissen musst

von Sergej Kukshaus vor einem jahr

Du bist eine Nummer! Eine Nummer im System.

Nein wirklich. Selbst schon kurz nach der Geburt bekommst du heutzutage eine Nummer. Die Steueridentifikationsnummer.

Diese Nummer behältst du dein ganzes Leben lang. Später kommen noch weitere Nummern dazu. Sozialversicherungsnummer, Personalausweisnummer, Personalnummer, Kundennummer, etc.pp.

Neulich musste ich selbst beim Arzt eine Nummer ziehen und warten bis ich dran war. Ich war die Nummer 341.

Warum erzähle ich das eigentlich?

Im Netzwerk bist du ebenfalls eine Nummer. Eine Nummer in Form einer IP-Adresse. Wobei IP tatsächlich für Internetprotokoll steht.

Ein typisches Beispiel für solch eine IP-Adresse ist: 192.168.0.100.

Warum ist die typisch? Weil es der Auslieferungszustand der meisten Router ist 🙂

Wie ist eine IP-Adresse aufgebaut?

Im Grunde genommen besteht die IP aus genau drei Werten.

  • Netzmaske
  • Netzwerkadresse
  • Client-Adresse

Gehen wir mal auf die einzelnen Werte ein wenig ein.

Was ist eine Netzwerkmaske?

Eine typische Netzwerkmaske sieht beispielsweise so aus: 255.255.255.0

Kann sich aber natürlich auch ändern. So ist die Maske 255.255.0.0 ebenfalls gültig.

Nehmen wir jetzt noch die obere IP hinzu. Abhängig der gewählten Maske kann es eine komplett andere IP sein.

Zu einer IP-Adresse gehört zwingend eine Netzwerkmaske!

Die Netzwerkmaske ist immer gleich aufgebaut. In der binären Schreibweise (es besteht halt doch alles aus Nullen und Einsen) sieht man die Maske ein wenig besser:

11111111.11111111.11111111.00000000

Dabei wurde festgelegt, dass nach einer Null keine Eins mehr kommen darf.

Um jetzt nicht immer diese blöde Maske Aussprechen zu müssen (zweihundertfünfundfünfzig punkt zweihundertfünfundfünfzig punkt zweihundertfünfundfünfzig punkt null) hat man sich darauf geeinigt, die Anzahl der Einsen als Maske zu nennen. Somit ist die obere Maske auch als 24-er Maske bekannt 🙂

Und damit man das auch nicht schreiben muss, sieht dann eine vollständige IP so aus:

192.168.0.1 /24

Was ist eine Netzwerkadresse?

Ich habe eben ja bereits erwähnt, dass sich die IP abhängig von der Maske unterscheiden kann.

Du kannst dir das so vorstellen, wie die Straßen einer Stadt. Versuch mal in Großraum Berlin ein Brief an die „Berliner Straße 42“ zu versenden. Ohne die Ortsangabe kommst du hier nicht weit!

Die Netzwerkadresse ist also der Ort. Zu finden ist er, wenn du die aktuelle IP und die Netzwerkmaske logisch „verundest“. Also da, wo die Maske eine 1 hat, wird übernommen, bei einer 0 nicht.

Unsere obere IP gehört also zum Netzwerk mit der Adresse:

192.168.0.0 /24

Was ist eine Client-Adresse?

Wenn bei der Netzwerkadresse die IP und die Maske „verundet“ werden, was wird dann bei der Client-Adresse gemacht?

Richtig! Nicht-Und 🙂

Also wird alles übernommen, wo eine 0 steht.

0.0.0.1 /24

Glücklicherweise gibt man beide Adresse kaum bis gar nicht an.

Welche IP-Adressen gibt es überhaupt?

Nach dem RFC1918 gibt es genau 3 IP-Adressenbereiche für den privaten gebraucht. Mit Privat meint man in diesem Fall das Intranet. Egal welcher Größe. Egal ob Firmen- oder Heimnetzwerk.

(A) 10.0.0.0 – 10.255.255.255 /8
(B) 172.16.0.0 – 172.31.255.255 /12
(C) 192.168.0.0 – 192.168.255.255 /16

Ähm, hatten wir nicht gerade gesagt die IP 192.168.0.1 hätte die Maske 24?

Und jetzt kommen wir zum springenden Punkt:

Die Anzahl der Einsen kann erhöht werden, jedoch nicht verringert!

Mit anderen Worten: Es gibt theoretisch 14 verschiedene Adressen mit der IP 192.168.0.1.

Warum 14 und nicht 16? Weil es keine Maske 31 und 32 geben kann. Jedes Netzwerk hat nämlich noch einen Namen (in der Client-Adresse sind nur Nullen) und ein Broadcast (in der Client-Adresse sind nur Einsen).

Somit wäre das es im 32er Netz ohne Namen und das 31er Netz hätte kein Platz mehr für Clients.

Welches Netzwerk ich schlussendlich gewählt habe.

Für das Heimnetzwerk wird meistens Klasse C verwendet.

In Firmennetzwerken verwenden die meisten Administratoren Klasse A.

Dabei Frage ich mich immer noch warum immer Klasse A Adressen verwendet werden. Entweder sind die Admins nur faul bequem oder sie möchten sich die Möglichkeit offen lassen alle Rechner auf der Welt in das eigene Netzwerk hereinzulassen.

Na OK, für so viele wird es doch nicht reichen. Aber theoretisch können in dem 10.0.0.0/8 Netz genau 16.777.214 gleichzeitig vorhanden sein.

Und ganz ehrlich. Ich habe noch kein Administrator gesehen, der ein Netzwerk mit so vielen Clients pflegen musste.

Meistens werden die bereits viel früher nach Funktionen aufgeteilt.

Genauso wie ich auch. Ich bin nämlich faul 🙂 und wähle das A-Netz.

Auch meine Netzmaske wähle ich ziemlich einfach. Alles so, dass ich auf den ersten Blick sofort sehen kann, welcher Client wohin gehört.

Meine Wahl fällt auf folgende IPs:

eth0: 192.168.99.?? /24 (dynamisch)
eth1: 10.10.1.1 /24 (statisch)
wlan0: 10.20.0.1 /24 (statisch)
wlan1: 10.20.1.1 /24 (statisch)

WS steht bei mir für Workstation, TC für einen temporären Klienten und SP für Smartphone.

Was es mit diesen temporären Klienten auf sich hat, erkläre ich später noch 🙂

Solch eine Planung ist bereits die halbe Miete bei der weiteren Einrichtung des Netzwerks 🙂

Gleichzeitig verwende ich noch ein zweites WLAN-Netzwerk. Zum einen als Fallback, zum anderen, weil ich so ein netter Junge bin und ein WLAN-Hotspot für meine Gäste aufbauen möchte.

Hierfür verwende ich folgenden Adapter:

Dieser Adapter wird auch mein Haupt WLAN-Netzwerk, da es mehr Power hat als das integrierte WLAN aus dem Raspberry.

IP-Adressen auf dem Raspberry ändern

Spätestens jetzt benötigst du eine externe Netzwerkkarte. Ich verwende beispielsweise diese hier:

Im Initialzustand ist der Raspberry per DHCP konfiguriert. Das ist jedoch für ein Server (ja, ein Router ist ein Server) ziemlich suboptimal. Deswegen bekommt der PI zunächst eine statische IP.

Da der PI an der Schnittstelle eth0 an den Router bzw. Modem angeschlossen ist, bekommt der eine IP aus dem „alten“ Netzwerk. Mit eth1 hängt der PI dann in dem „neuen“ Netzwerk drin.

Jedenfalls in der Theorie.

Netzwerkschnittstellen umbenennen – falls nötig

Ich weiß zwar nicht auf diese Schnapsidee gekommen ist, aber seit neuesten gibt es keine Netzwerkschnittstellen wie eth0 etc.

Der Befehl ifconfig gibt mir sowas hier aus:

Danke schön „liebes“ Debian-Team dafür 🙁

Netzwerk-Schnittstellen wiederherstellen

Na gut, irgendwie müssen wir das wieder gerade biegen. Ich habe nämlich relativ wenig Lust immer diese komischen Begriffe einzugeben. Du etwa?

Wir legen die folgende Datei an:

$ sudo nano /etc/udev/rules.d/70-persistent-net.rules

Und füttern diese mit dem folgenden Inhalt

# eth0 --> integriert
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="b8:27:eb:ae:3b:eb", ATTR{dev_id}=="0x0", ATTR{type}=="1", KERNEL=="eth*", NAME="eth0"

# wlan0 --> integriert
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="b8:27:eb:fb:6e:be", ATTR{dev_id}=="0x0", ATTR{type}=="1", KERNEL=="wlan*", NAME="wlan0"

# eth1 --> extern
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="00:0e:c6:f9:0d:4a", ATTR{dev_id}=="0x0", ATTR{type}=="1", KERNEL=="eth*", NAME="eth1"

# wlan1 --> extern
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="24:05:0f:aa:ab:47", ATTR{dev_id}=="0x0", ATTR{type}=="1", KERNEL=="wlan*", NAME="wlan1"

Damit können wir die Netzwerkschnittstellen wieder in den „gewohnten“ Ursprungszustand versetzen.

Bitte achte darauf, dass du die richtigen MAC Adressen einsetzt und nicht einfach meine übernimmst 🙂

Die MAC-Adressen kannst du mit dem ifconfig Befehl rausfinden und übertragen. Schau da einfach nach, was hinter dem Parameter ether steht.

Statische IPs festlegen

Wir benötigen 3 statische Adressen.

Ich habe das so gemacht, dass ich eine Konfigurationsdatei pro Verbindungsart erstellt habe.

Also eine für die Kabelgebundenen Schnittstellen und eine für das WLAN:

$ sudo nano /etc/network/interfaces.d/eth
auto eth1
iface eth1 inet static
        address 10.10.1.1
        netmask 255.255.255.0

So, und jetzt das gleiche noch einmal für das WLAN:

$ sudo nano /etc/network/interfaces.d/wlan
auto wlan0
iface wlan0 inet static
        address 10.20.0.1
        netmask 255.255.255.0

auto wlan1
iface wlan1 inet static
        address 10.20.1.1
        netmask 255.255.255.0

Sobald das erledigt ist, kannst du den RPi einmal neu starten

$ sudo reboot

Nachdem rein System wieder da ist, kannst du mit ifconfig wieder prüfen ob soweit alles funktioniert hat.

Das Ergebnis sollte dann etwa so aussehen:


Fazit

In diesem Arbeitsschritt haben wir …

  • … uns Gedanken über die vorhandene Netzwerkstruktur gemacht.
  • … uns für einen Netzwerkstandard entschieden.
  • … IP-Adressenbereiche festgelegt.
  • … Netzwerkschnittstellen-Bezeichner wiederhergestellt.
  • … internen Schnittstellen eine statische IP-Adresse vergeben.

Als nächstes, kümmern wir uns darum, dass unser kleine Raspberry allen Clients im Netzwerk mittels DHCP eine vernünftige IP vergibt und die Anfragen direkt an das Internet weiterleitet.

7 Kommentare
Marcus_s
30. Dezember 2019 11:48

Deine website hat mich angefixt, es auch mal zu probieren.
Die sehr einfache und super verständliche Art, wie Du Deine Vorgehensweise beschreibst, hat mich dazu bewegt, es mit einem Raspi 4 zu versuchen. Es klappt auch ohne Probleme.
Die krummen Netzwerknamen hab ich mit einer Zeile wieder hinbiegen können.
sudo ln -s /dev/null /etc/systemd/network/99-default.link
und Neustart!
Einige Fragen dazu hab ich aber noch. Verzichtest Du komplett auf die Fritzbox? Oder dient Dir die Fritzbox weiterhin als Modem. Dann bin ich in einer Zwichkühle Die Mesh-Funktion brauche ich, da ich viel Beton und zwei Stockwerke zu überbrücken habe. Könnte man das auch mit einem zweiten Raspi machen?
Gruß
Marcus

8. Januar 2020 20:06

Hallo Marcus,

theoretisch kannst du ja beliebig viele Router hintereinander schalten wie du möchtest. Inwieweit dies sinnvoll wäre, steht auf einem anderen Blatt Papier.
Für eine Verbindung ins Internet benötigst du noch zusätzlich ein ADSL-Router und die Zugangsdaten vom Provider.

Und tatsächlich habe ich meinen Provider-Router hier noch stehen. Der wird aber lediglich nur noch als reines Modem verwendet. Alles, was mit dem Router zusammenhängt, wurde auf den PI ausgelagert.

Liebe Grüße
Sergej

Dirk S
20. Januar 2020 22:19

Deine Seite ist für mich als Einstieg in die ganze Thematik Raspberry als Router sehr hilfreich und interessant. Bis jetzt habe ich alle beschriebenen Schritte nachvollziehen können und verstanden. Ich habe im Augenblick nur ein Problem. Die wlan0-Schnittstelle, also das im Raspberry integrierte WLAN, nimmt dicht die von mir vorgegebene IP-Adresse. Ich habe die rules-Datei hinsichtlich der MAC-Adresse meiner integrierten WLAN-Schnittstelle kontrolliert, alles o.k. Hast du vielleicht eine Idee woran es noch liegen kann.

27. Januar 2020 21:18

Hallo Dirk,

wie sah die Ausgabe von ifconfig aus, bevor du die rules-Datei überschrieben hast? Mir kommt es so vor, als ob dieser „Fehler“ nicht immer Auftritt und die Schnittstellen sonst i.O. sind.

Ansonsten sollte es ausreichen, die entsprechenden Daten (wie oben beschrieben) einzutragen und ggf. das System neuzustarten.

Liebe Grüße
Sergej

Michael Joos
2. März 2020 14:00

Hallo ByteBee,
wirklich ein sehr schönes und sauberes Manual zur Einrichtung eines
Pi-Routers.
Nach Deiner Anleitung habe ich mir einen solchen konfiguriert und muss sagen, dass das Ding großartig funktioniert!
Insbesondere die Unterschiede bei den Netzwerkgeschwindigkeiten sind im Vergleich zu einer ConnectBox von Unitymedia deutlich zu erkennen => man ist im „Pi-Netzwerk“ trotz Pi-Version 3B+ mit 100 MBit-Schnittstelle gefühlt um einiges zügiger unterwegs.
Ist ja aber allseits bekannt, dass dieses Gerät von UM alles andere als zufriedenstellend seinen Dienst verrichtet 😉
Die Firewall-Rules musste ich nur bedingt abändern, auch hier hast Du eine super Basis geliefert mit der man durchaus starten und diese nach und nach für seine eigenen Bedürfnisse erweitern kann. Auch hier, ein großes Lob!
Was mir allerdings hinsichtlich der Netzwerkkonfiguration noch aufgefallen ist, ist ein (bei meiner Konstellation) unbedingt notwendiger Eintrag in die /etc/network/interfaces:
Wie bereits vorab erwähnt, erfolgt mein Zugriff ins Internet über eine ConnectBox von Unitymedia, die nach Umstellung nun im „Bridge Mode“ werkelt.
D.h. die ConnectBox bekommt vom ISP eine WAN-IP und muss diese per internem DHCP an den an eth0 angeschlossenen Pi-Router weitergeben können.
Um dies stets sicherzustellen ist allerdings unbedingt darauf zu achten,
dass in der /etc/network/interfaces des Pi-Routers die eth0-Schnittstelle für den Erhalt einer IP via DHCP konfiguriert werden muss, also
auto eth0
iface eth0 inet dhcp
Lässt man den Eintrag weg, war nach ca. 1h kein Internet mehr möglich.
Ein kurzer check über route -n brachte dann die Erkenntnis, da die Route zum Gateway der ConnectBox verschwunden war.
Das Interessante daran: ohne den o.g. zusätzlichen Eintrag für eth0, ist direkt nach dem Verbinden des Pi-Routers zur ConnectBox die Gateway-Route auf dem Pi zwar vorhanden, diese allerdings für lediglich ca. 1h.
Nach ungefähr dieser Zeit wird die Route zum ConnectBox-Gateway gelöscht und ein Zugang ins Internet ist somit nicht mehr möglich.
Ein erneutes Aus- und Wiedereinstecken von ConnectBox zum Pi-Router an eth0 führte nach einer kurzen Wartezeit erneut dazu, dass in der Routing-Tabelle wieder eine Route zum Gateway der ConnectBox existierte,
und somit eine Internetverbindung für eine weitere Stunde(!) möglich war.
Sicherlich kein haltbarer Zustand, ständig etwas aus- und wieder einstecken zu müssen ;-), somit hilft der o.g. Eintrag, um die Route dauerhaft in der Routing-Tabelle zu setzen.
Vielleicht ging es dem einen oder anderen der hier versammelten Leser und Bastler bereits auch so…?
Daher mein Kommentar, um dem Rest von Euch aus der „Patsche“ zu helfen, für den Fall, dass Ihr dasselbe Problem habt bzw. über diese Thematik stolpert.
Ansonsten nochmals ein dickes Lob und Dankeschön an ByteBee
und Grüße an alle
Michl

2. März 2020 20:09

Hallo Michl,

danke für dein dickes Lob. Freut mich wirklich, dass dir mein kleines Projekt so gut gefällt 🙂

Eigentlich sollte das seit Stretch automatisch funktionieren. Aber irgendwie scheint es nicht ganz zuverlässig zu sein.

Ursprünglich hatte ich das mal so konfiguriert, wie du es beschrieben hast. Dazu kommt noch, dass es alles in der Hauptdatei war. Ich ändere das mal so um, damit es in jedem Fall funktioniert. Lieber direkt angeben dafür aber zuverlässig 🙂

Liebe Grüße
Sergej

Julian
11. Mai 2020 13:29

Ich frage mich, ob dieses Projekt für meine Anforderungen passt.
Ich würde gerne alte Windows Rechner nicht in das große Netzwerk lassen und so einen Raspberry mit USB-Lan Adapter zwischen schalten. Die Windows Rechner sollen dabei nur auf ein Paar Fileserver, deren Anmeldung über Kerberos, läuft zugreifen können.

Ich würde nun dieser Anleitung folgen und im sqid Proxy nur die Adressen meiner benötigten Server zulassen (Fileserver, Krb, …) ist das realistisch ? oder schon ein overkill.
Dazu muss ich sagen, dass ich eher neu in der Netzwerktechnik bin. Das ganze ist ein studentisches Projekt und soll natürlich sicher werden.

... und was meinst du dazu?
Deine E-Mail-Adresse wird nicht veröffentlicht.