Hier wollen wir beschreiben wie wir ein Netzwerk an unserem Raspberry Pi, den wir als Router aufbauen und verwenden wollen, einrichten.
Aufgrund dessen, dass wir unseren RPi als Router und noch etwas mehr verwenden wollen, ergibt sich aus der verwendeten Hardware, dass wir mehr Netzwerk Zugangsmöglichkeiten haben als wenn wir den RPi "nackt" verwenden würden. Somit ergeben sich bei unserem RPi 3 Möglichkeiten:
- LAN Anschluss des RPi (eth0)
- WLAN des RPi (wlan0) und
- WLAN über den WLAN Adapter (wlan1)
Da wir über das LAN Netzwerk mehr als nur ein Kabelgebundenes Gerät an den Router anschließen und betreiben wollen verwenden wir noch zusätzlich einen so genannten Switch. Der Netzwerkswitch ist ein unmanaged Gigabit Switch mit 5 Schnittstellen. Eine dieser Schnittstellen werden wir mit dem RPi verbinden, so dass alle im LAN angeschlossenen Geräte über den Router ins Internet gehen können.
Um die Sicherheit unseres Netzwerks etwas zu erhöhen wollen wir die Netzwerkadressen nicht nach Standard Netzwerkadressen wie sie z.B. bei Routern von der Stange vorgegeben sind sondern definieren die Netzwerkadressen selbst und zwar mit anderen Adressbereichen als die Standards. Dies bedingt zuerst ein wenig mehr Konfigurationsaufwand jedoch erhöht es die Sicherheit des Netzwerks von Grund auf. Bevor wir nun die Adressbereiche festlegen, müssen wir uns Gedanken dazu machen, wie unser Netzwerk aufgeteilt werden soll.
Hierbei möchte ich:
eth0: LAN (Verbindung zum Switch) mit dem Netzwerkadressbereich 192.168.0.1/24. Hierbei ist die Adresse von 192.168.0.1 statisch vergeben.
wlan0: WLAN 1 Netz. Dies ist das internen WLAN den RPi (router) hierbei soll der Adressbereich 192.168.6.0/24 verwendet werden. Dieses WLAN ist aufgrund dessen das es sich um das interne WLAN und somit um das leistungsschwächere WLAN des RPi handelt für die Konfiguration des RPi's vorgesehen. Die Adresse 192.168.6.1 ist hierbei statisch vergeben.
wlan1: WLAN 2 Netz. Dies ist das WLAN über den externen WLAN Adapter welches aufgrund der Leistung des Adapters auch für das ganze Haus zur Verfügung stehen soll. Hierbei soll ein Adressbereich von 192.168.18.0/24 verwendet werden.
Raspberry Pi im Netzwerk finden
Manchmal reicht es schon, den Befehl ping raspberry.local zu versuchen. Solange die Dateien /etc/hostname oder /etc/hosts nicht geändert wurden, heisst der Computer "raspberry". Das klappt aber nicht immer. Um nun den RasPi zu suchen, gibt es mehrere Möglichkeiten:
- Sind Tastatur und Monitor angeschlossen, genügt das Kommando ip addr, um alle Informationen inklusive IP-Adresse anzuzeigen. Um nur die IP-Adresse(n) zu sehen, genügt das Kommando
hostname -I
- Unter Linux wie Windows kann man sich den ARP-Cache ausgeben lassen. Er enthält die Zuordnung von IPv4-Adressen zu MAC-Adressen. Bei beiden Systemen dient dazu der Befehl
arp -a
(in der Shell bzw. Eingabeaufforderung). Mit etwas Glück ist die IPv4-Adresse des betreffenden RasPi auch dabei. Er läßt sich gut anhand der MAC-Adresse (b8:27:eb:...) erkennen. - Eine weitere Möglichkeit ist, sich auf dem Router oder DHCP-Server einzuloggen und dort die Protokolldateien anzusehen. Anhand des Boot-Zeitpunktes und des Protokolls (DHCPDISCOVER) kann der RasPi identifiziert werden.
- Auf jeden Fall findet man den Minicomputer mit dem Programm nmap. Der "Network Mapper" ist ein kostenloses und Open-Source-Tool für die Netzwerkerkennung, das es für Linux, Mac OS und Windows gibt. Die Installation unter Linux erfolgt nach allgemein bekanntem Schema mit
sudo apt-get install nmap
Pakete für Mac OS oder Windows finden Sie unter nmap.org. Zum Scannen der Geräte in Ihrem Netzwerk müssen Sie nur das aktuelle Subnetz kennen. Ist es beispielsweise das Netz 192.168.10.0/24 (192.168.10.1 bis 192.168.10.254), verwenden Sie das Kommandonmap -sn 192.168.1.0/24
"-sn" macht dabei einen Ping-Scan, bei dem nun alle IP-Adressen im jeweiligen Subnetz angepingt werden.
Bezeichnung der Netzwerkschnittstelle herausfinden
Bezeichnung der Netzwerkschnittstellen herausfinden
ifconfig -a
Ebenso erhält man Informationen über die WLAN Netzwerkverbindungen mit dem Befehl iwconfig
Mit ip -a link
kann man ebenfalls die Netzwerkschnittstellen abfragen.
ip l
prüft ob Interfaces vorhanden sind und zeigt diese an.
Umbenennen der Netzwerkschnittstellen
Umbenennen der Netzwerkschnittstellen
Sollten die Netzwerkschnittstellen nicht mit eth0, wlan0, wlan1... bezeichnet sein so müssen wir zur einfacheren Konfiguration diese dauerhaft auf diese Bezeichnungen setzen. Hierzu ist etwas Konfigurationsarbeit nötig.
Statische IPs festlegen
Statische IPs festlegen
Abgesehen davon, dass man statische IP-Adressen in der Netzwerkkonfiguration oder auch über die Routerkonfiguration festlegen kann ist es auch möglich eine solche Adresse temporär festzulegen. Dies kann von Bedeutung sein, wenn man verschieden Schnittstellen testen will. Mit dem Befehl sudo ifconfig INTERFACE 192.168.42.1
wird dem jeweiligen Interface, in unserem Beispiel, die IP-Adresse 192.168.42.1 zugewiesen. Dies bleibt jedoch nur von zeitlicher Dauer beschränkt bis zum nächsten Neustart des Systems oder einem erneuten neuladen der Netzwerkkonfiguration aus einer Konfigurationsdatei. Als Interface ist die entsprechende Netzwerkschnittstelle anzugeben. In der Regel ist dies eth0, eth1, wlan0 oder wlan1 usw...
Routing prüfen
Routing prüfen
Mit dem Kommando route
oder netstat
kann man prüfen ob die Verbindung über das Standard Gateway in das Internet funktioniert.
route -n
zeigt die IP-Adresse des Gateways an.
Das "G" in der Zeile markiert das Gateway. Das "U" zeigt an, dass die Route aktiviert ist.
netstat -r
Außerdem kann man auch das "ip" Kommando verwenden um die Routing-Tabelle anzuzeigen:
ip route
Mit dem Kommando netstat kann man sich die Routen noch detailierter anzeigen lassen.
netstat -antu
u = UDP Verbindung
t = TCP Verbindung
n = Netzwerkadressen nicht per DNS in Namen auflösen
a = Anzeige auch von geöffneten Ports ohne aktive Verbindung
l = Anzeige nur der offenen Ports
A = Adressfamilien inet für IPv4 oder inet6 für IPv6
p = welches Programm oder welcher Prozess eine bestimmte Verbindung aufgebaut hat.
so zeigt der Befehl netstat -rn
die Routingtabelle und Iface Tabelle an.
Routing mit Traceroute prüfen
Mit dem Programm traceroute
können sie die Route verfolgen welche ihre Pakete nehmen um die Ziel-IP-Adresse zu erreichen. Beispielsweise der Befehl traceroute google.de
prüft und listet die Route auf, die ihre Pakete nehmen, um Google.de zu erreichen.
Suche nach Drahtlosnetzwerken
Mit dem Befehl sudo iw list wlan0 scan
sucht man mit dem wlan0 Device nach Drahtlosnetzwerken.
Auch mit folgenden Befehl ist der Scan nach Drahtlosnetzwerken möglich: sudo iw dev INTERFACE scan
wobei für die Bezeichnung des Interfaces z.B. wlan0 einzusetzen ist. Auch mit dem Befehl sudo iw list wlan0 scan
ist dies möglich.
Weiters kann man sudo iw list wlan0 scan | grep -i ssid
prüfen ob WLAN Netzwerke erreichbar sind.
Sollte ein Netzwerkmanager installiert sein, dies ist der Fall, wenn ein grafisches System läuft, so kann man auch mit folgendem Befehl nmcli dev wifi list
Informationen zu bestehenden Drahtlosnetzwerken erhalten.
Netzwerkkonfiguration aktivieren
Mit Linux hat man den Vorteil, dass wenn man an der Netzwerkkonfiguration etwas ändert den PC nicht immer wieder neu starten muss sondern man startet den Netzwerkdienst einfach wieder neu bzw. lädt die Netzwerkkonfiguration neu.
Das erneute Laden der Netzwerkkonfiguration geschieht mit folgendem Befehl: sudo /etc/init.d/networking reload
Auch einen Neustart des Netzwerks kann während des Betriebes durchgeführt werden, dies geschieht mit folgenden Befehlen:
sudo /etc/init.d/networking restart
oder sudo service networking restart
Aktive Dienste ermitteln
Um zu sehen welche Dienste aus welchem IP-Bereich auf dem System laufen oder aber auch um deren Portnummern feststellen zu können gibt es folgenden Befehl:
sudo netstat -tlpn
Hierbei wird eine Liste angezeigt welche Dienste gerade laufen und welche Portnummern dafür Verwendung finden. Dies kann hilfreich sein um die Firewall korrekt zu konfigurieren.
Netzwerkschnittstellen Ein-/Ausschalten
Um die Konfiguration einer Netzwerkschnittstelle kurz halten zu können, bietet es sich unter Linux an die jeweilige Schnittstelle Ein- oder auch Ausschalten zu können hierfür gibt es mehrere Befehlsmöglichkeiten.
Bevor man eine Schnittstelle Aus oder Einzuschalten versucht sollte man prüfen ob diese Schnittstelle aus Ein- oder Ausgeschalten werden kann. Hierfür bietet sich das Kommando rfkill
an. Mit rfkill list
wird angezeigt ob die Netzwerkhardware per Software oder Hardware ausgeschalten ist.
Eine Hardwaremäßige Abschaltung kann man zwar mit rfkill nicht auflösen jedoch die Softwaremäßige Blockierung auflösen, so dass die jeweilige Netzwerkkomponente mit den entsprechenden Befehlen auch wieder aktiviert bzw. deaktiviert werden kann.
Mit sudo rfkill unblock wireless LAN
entfernt die Softwareblockierung von WLAN abschalten. Sollte dieser Befehl keine Wirkung erzielen so kann man mit folgendem Befehl eine Blockierung aufheben sudo rfkill unblock all
Das Einschalten einer dezitierten Netzwerkkomponente wird mit folgenden Befehlen bewerkstelligt:
sudo ifconfig wlan0 up
sudo ifup wlan0
sudo ip link set wlan0 up
sudo ifup --ignore-errors wlan0
anschließend sudo ifdown
und dann wieder sudo ifup
ausführen.
Das Einschalten einer bestimmten Netzwerkschnittstelle ersetzt auch als Alternative einen Neustart des gesamten Netzwerks z.B. wenn man die Konfiguration einer bestimmten Schnittstelle geändert hat.
Das Ausschalten von bestimmten Netzwerkschnittstellen erfolgt analog zu obigen Befehlen:
sudo ifconfig wlan0 down
sudo ifdown wlan0
sudo ip link set wlan0 down
ifdown --force --verbose wlan0
Mit der Kombination ifdown --force --verbose wlan0 && ifup
wird die Schnittstelle auch wieder eingeschaltet.
Infos zu WLAN Schnittstelle
Was eine WLAN-Schnittstelle kann bzw. unterstützt kann man mit folgenden Befehlen sichtbar machen.
Generelle Infos zur WLAN-Schnittstelle
sudo iw list
Prüfen ob WLAN-Schnittstelle den AP Modus unterstützt
sudo iw list | grep AP$
Verfügbare Funkkanäle anzeigen
sudo iw list channel
WLAN Regionseinstellungen
Um in jenem Land in welchem man sein WLAN betreiben will auch die korrekten Einstellungen zu verwenden müssen so genannte Regionseinstellungen getätigt werden. Diese werde für gewöhnlich schon bei einer Erstinstallation konfiguriert jedoch kann es erforderlich sein diese zu ändern. Wie man dies bewerkstelligen kann sei hier nachfolgend angeführt.
Mit sudo iw reg get
liest man die aktuellen Regionseinstellungen aus und mit sudo iw reg set DE
setzt man die Region in unserem Beispiel hier z.B. Deutschland.
WLAN Energiesparmodus
Manchmal kann es vorkommen, dass die Konfiguration bzw. der ordnungsgemäße Betrieb einer WLAN-Schnittstelle daran scheitert, dass der Energiesparmodus aktiviert ist. Insbesondere beim Betrieb des WLAN-Interfaces als Access Point kann dies der Fall sein.
Infos zum Power-Managemet eines WLAN-Interfaces erhält man mit sudo iw wlan0 get power_save
Mit sudo iw wlan0 set power_save off
deaktiviert den Energiesparmodus, jedoch nur bis zum nächsten Neustart des Systems. Will man den Energiesparmodus dauerhaft ausschalten so muss man dies in der Netzwerkkonfiguration in /etc/network/interfaces
eintragen mit wireless-power off
Infos zur Netzwerkkarte
Hierbei sei gemeint, dass man Informationen zu kabelgebundenen Netzwerkschnittstelle mit dem Kommando sudo ethtool eth0
auslesen kann. Hierbei sei eth0
natürlich die Netzwerkschnittstelle die ausgelesen werden soll. Auf ihrem System kann diese natürlich eine andere Bezeichnung aufweisen und ist dementsprechend beim vorhin angeführten Kommando zu ersetzen.
Natürlich kann es auch sein, dass die Netzwerkkonfiguration des RPi's nicht klaglos wie zuvor beschrieben oder auch vielfach im Netz beschrieben von statten geht. Vor allem bei der Einrichtung des Netzwerks tun sich einige Fehlerquellen auf und seien es, im Nachhinein betrachtet, nur Kleinigkeiten so können diese einem Stunden an Konfigurationsarbeit kosten. So ging es leider auch mir, es funktionierte nicht alles so wie teilweise beschrieben gleich beim ersten Mal sondern bedurfte einiger Versuche bis ich zum Ziel gelangte. Um Euch zukünftig die selbigen Probleme zu ersparen habe ich im Anschluss einige Problemlösungen angeführt die den einen oder anderen Fehler gleich im Vorhinein auszuschließen.
Trobleshooting
WLAN erhält keine IP-Adresse zugewiesen (HOSTAPD)
Trotz korrekter Konfiguration der Interfaces (eth0, eth1, wlan0, wlan1) in der Datei /etc/network/interface erhält das WLAN interface beim Start des Dienstes "hostapd" keine IP-Adresse zugewiesen so dass kein WLAN-AP aufgebaut werden kann. Diese Problem hat mir einiges an Kopfzerbrechen bereitet, denn ich musst das wlan0 immer von Hand aktivieren indem ich zuerst das wlan0 Interface abschaltete sudo ifdown wlan0
und anschließend wieder einschaltete sudo ifup wlan0
.
Alternativ kann man auch folgende Befehle zum Ein- und Ausschalten des jeweiligen Interfaces verwenden
sudo ifconfig wlan0 down
sudo ifconfig wlan0 up
Aber wer will schon dies immer manuell durchführen wollen.
Eine Möglichkeit wäre noch folgende, dass man in der Datei /etc/default/ifplugd die Konfiguration von
INTERFACES="auto"
HOTPLUG_INTERFACES="all"
ARGS="-q -f -u0 -d10 -w -I"
SUSPEND_ACTION="stop"
einfach ändert auf
INTERFACES="eth0"
HOTPLUG_INTERFACES="eth0"
ARGS="-q -f -u0 -d10 -w -I"
SUSPEND_ACTION="stop"
Dies bewirkt, dass wlan0 aber auch wlan1 nicht ihre statischen Adressen verlieren welche in der Datei /etc/network/interfaces konfiguriert wurden.
Quelle
- Was du unbedingt beim Einrichten eines RPi Netzwerks Wissen musst
- http://www.netzmafia.de/skripten/hardware/RasPi/RasPi_Network.html
- Netzwerkprobleme beim Raspberry Pi lösen
- Netzwerk und IP-Konfiguration des Raspberry Pi ermitteln
- Netzwerkverbindungen konfigurieren und Fehler beheben
- Netzwerk Konfiguration
- Netzwerk-Probleme beim Raspberry Pi lösen
- networkd
- IPv4-Konfiguration
- Raspberry Pi: Statische/feste iPv4-Adresse für Raspbian Jessie und Stretch
- Grundlegende Netzwerkkonfiguration
- All About Debian /etc/network/interfaces File
- Ubuntu Linux networking example
- Netzwerkkonfiguration in Debian
- interfaces
- Network Configuration
- Raspberry Pi LAN einrichten
- IP-Konfiguration: Konfigurieren von IP-Adressen und Netzwerkeinstellungen
- example /etc/network/interfaces config
- Raspberry Pi: Netzwerk- und IP-Konfiguration einrichten
- Raspberry Pi: Netzwerk Konfiguration