Wie der Titel schon andeutet werden wir hier die Einrichtung eines WLAN-Hotspots auf einen RaspberryPi darlegen.
Hierzu will ich meine beiden WLAN-Komponenten als Access Points konfigurieren. Wlan0 ist hierbei das vom RPi interne WLAN und als weiteres habe ich noch einen externen WLAN-Stick (wlan1). Diese beiden Interfaces werden nun als Access Points konfiguriert. Um die WLAN Komponenten als Access Points verwenden zu können benötigt man die Software "hostapd". Diese müssen wir zuvor installieren, siehe hierzu den Tab "Daemon Dienst HOSTAPD installieren".
Deamon Dienst HOSTAPD installieren
Die Installation des Deamon Dienstes geschieht ganz einfach mit:
sudo apt install hostapd
Im Anschluss an die Installation ist es notwendig das WLAN zu aktivieren. Hierzu ist die Datei /etc/network/interfaces.d/wlan. In dieser Datei sind nun die Konfiguration des WLANs definiert.
Nach der Installation geht es nun an die Konfiguration und hier beginnt nun die "Krux".
Konfiguration des hostapd Daemons
Nun geht es aber an die Aktivierung von unseren WLAN's auf dem RPi.
Hostapd ist ein sehr vielfältig zu verwendendes Programm um die WLAN Komponenten zu konfigurieren und als Access Points zu betreiben. Im Netz findet man viele Beispiele um die WLAN-Komponente eines RPi's zu konfigurieren sei es als Hotspot, Acces-Point oder als ganz normales Wifi um sich bei einem Router einloggen zu können.
In meinem Fall will ich jedoch 2 WLAN's als Access Points konfigurieren und diese Beschreibungen findet man im Netz leider nicht so häufig oder sind veraltet, so dass hierbei Probleme beim Betrieb der beiden WLAN's auftreten können. Aber eines schon mal vorweg: Es funktioniert, wenn man ein paar Dinge beachtet.
- Konfigurationsdateien anlegen je eine für wlan0 und eine für wlan1
- Namenskonvention der Konfigurationsdatei beachten! Ansonsten wir hostapd die Dateien nicht laden können. Daher keine Sonderzeichen in den Dateinamen verwenden. Am besten einfach halten z.B. wlan0.conf für das wlan0 Interface und analog dazu wlan1.conf für das wlan1 Interface also den WLAN-Stick.
- Daemon Dienst in der systemctl deaktivieren!
- "hostapd@service" Dienst für jede einzelne Konfigurationsdatei aktivieren z.B. "hostapd@wlan0.service" für die wlan0.conf Datei und somit für das wlan0 Interface. Analog dazu "hostapd@wlan1.service" für die wlan1.conf Datei und somit das wlan1 Interface.
- In der systemctl die "hostapd@wlan0.service" und "hostapd@wlan1.service" aktivieren.
Dateien für den hostapd Dämon
- /etc/init.d/hostapd
- /etc/default/hostapd In dieser wird unter
DAEMON_CONF
die Konfigurationsdatei für das einzelen WLAN Interface angegeben. - /etc/hostapd/hostapd.conf Konfigurationsdatei für WLAN Interface (Wenn nur ein Interface verwendet wird.)
Außerdem muss man zusätzliche Konfigurationsdateien erstellen wenn man mehr als nur ein WLAN Interface verwenden möchte und zwar für jeweils ein WLAN-Interface auch eine eigene Konfigurationsdatei. So z.B. für das WLAN0-Interface wlan0.conf und für ein WLAN1-Interface wlan1.conf.
Dämon Dienst HOSTAPD deaktivieren
Um hostapd mit zwei WLAN-Access-Points zu betreiben muss man zuvor den Dämon Dienst hostapd welcher für gewöhnlich als einzelner Dämon läuft deaktiveren um mehrere einzelne hostapd Services dieses Dienstes verwenden bzw. anwenden zu können.
Daher deaktiviet man den Dämon-Dienst mit folgendem Befehl wie folg:
sudo systemctl disable hostapd
HOSTAPD aktivieren
Nachfolgend ist beschrieben wie sie den hostapd-Dienst für einen einzelnen als auch für mehrere WLAN-Access-Points aktivieren können.
Dämon Dienst HOSTAPD aktivieren
Hier sei noch einmal ausdrücklich darauf hingewiesen, dass das was hier in diesem Abschnitt angeführt ist ausschließlich den Dämon-Dienst betrifft, also jenen Dienst der für den Betrieb eines einzelnen Access-Points benötigt wird.
Mit folgenden Befehlen aktiviert man hostapd bei Systemstart:
sudo systemctl unmask hostapd
sudo systemctl enable hostapd
Service Dienst HOSTAPD aktivieren
Um mehrere WLAN-Access-Points betreiben zu können müssen diese als einzelne Services auf einem System aktiviert werden. Bevor man dies machen kann muss aber der Dämon Dienst hostapd zuvor deaktiviert werden, siehe hierzu "Dämon Dienst HOSTAPD deaktivieren"
Mit den Befehlen für jede einzelne Konfigurationsdatei aktiviert man jeweils einen Access-Point.
sudo systemctl enable hostapd@wlan0.service
für das wlan0 Interface und sudo systemctl enable hostapd@wlan1.service
für das zweite wlan1 Interface.
Hierbei sei noch erwähnt das der Namen, in unserem Fall z.B. wlan0 die Konfigurationsdatei dazu wlan0.conf
lauten muss welche sich auch im Ordner /etc/hostapd
befinden muss.
Pürfen der Konfigurationsdatei/en
Das Prüfen der Konfigurationsdatei geschieht mit folgendem Befehl:
sudo hostapd /etc/hostapd/hostapd.conf
Noch etwas genauer kann man mit folgendem Befehl den Dämon prüfen:
sudo hostapd -dd /etc/hostapd/hostapd.conf
Prüfen der Konfigurationsdateien für mehrere WLAN's
Analog dazu prüft man die Konfigurationsdateien von mehreren WLAN-Interfaces wie folgt:
sudo hostapd /etc/hostapd/wlan0.conf
sudo hostapd /etc/hostapd/wlan1.conf
Noch etwas genauer kann man mit folgendem Befehl die Services prüfen:
sudo hostapd -dd /etc/hostapd/wlan0.conf
sudo hostapd -dd /etc/hostapd/wlan1.conf
Konfigurationsdatei für HOSTAPD
Um mit hostapd einen Access Point einrichten und betreiben zu können bedarf es einer Konfiguration der WLAN-Schnittstelle bzw. des WLAN-Interfaces. Wenn nur ein WLAN-Interface Verwendung findet so wird die Konfiguration auch natürlich nur ein mal in die Konfigurationsdatei hostapd.conf eingetragen. Sind jedoch mehrere WLAN Interfaces vorhanden die auch als Access Points betrieben werden sollen so muss für jedes einzelnen WLAN-Interface auch eine Konfigurationsdatei vorhanden sein, dies ist auch in meinem Fall so. Damit auch hostapd die Konfigurationsdatei verwenden kann muss ebenfalls unbedingt eine Namenskonvention eingehalten werden, also keine Sonderzeichen im Dateinamen verwenden! Am Besten hält man die Dateinamen einfach, in meinem Fall heißen sie wlan0.conf und wlan1.conf.
In diesen Konfigurationsdateien werden nun die Einstellungen für den jeweiligen Access Point eingestellt.
Konfiguration für Access Point von wlan0:
interface=wlan0
ssid=BW2API
country_code=AT
hw_mode=g
ieee80211n=1
channel=6
auth_algs=1
ignore_broadcast-ssid=0
wpa=2
wpa_passphrase=PASSWORT
wpa_key_mgmt=WPA-PSK
wpa_pairwise=CCMP
wpa_group_rekey=86400
wmm_enabled=1
Konfiguration für Access Point von wlan1:
interface=wlan1
ssid=BW2APIPRIVAT
country_code=AT
hw_mode=g
ieee80211n=1
channel=8
auth_algs=1
ignore_broadcast-ssid=0
wpa=2
wpa_passphrase=PASSWORT
wpa_key_mgmt=WPA-PSK
wpa_pairwise=CCMP
wpa_group_rekey=86400
wmm_enabled=1
Quellen
Quellen
- RaspberryPi als WLAN Hotspot - So surfst du überall
- Raspberry Pi als Hotspot und WLAN Access Point nutzen
- https://wiki.ubuntuusers.de/WLAN_Router
- How to use the raspberry pi as a wireless access pointrouter part 3b
- Raspberry Pi: WLAN einrichten
- Raspberry Pi mit WLAN ausstatten - so gehts
- WLAN-Access-Point unter Linux erstellen
- WLAN-Access-Point mit hostapd und USB-Stick
- WLAN Router
- WLAN-Accesspoint Konfigurationen
- RPI-Wireless-Hotspot
- DIY Access Point mit dem Raspberry Pi
- Mobile WLAN-Accesspoints mit Hostapd
- Raspberry Pi: Automatischer WLAN-Reconnect einrichten
Troubleshooting
Es kann natürlich auch sein, dass die Konfiguration von "hostapd" nicht einfach nach Schema "F" funktioniert und die Wahrscheinlichkeit, dass die erste Konfiguration gleich auf Anhieb funktioniert ist nicht gerade hoch - zumindest bei mir war es so.
Hierfür habe ich diese Reiter eingerichtet um auf mögliche Fehler hinzuweisen und somit die Einrichtung des "hostabpd" Dienstes etwas einfacher gestalten zu können, zumindest was die Fehlersuche betrifft.
wlan0 erhaelt keine IP-Adresse
Nun dies kann mehrer Ursachen haben. Zum einen (am häufigsten) kann die Konfigurationsdatei in /etc/network/interfaces falsch konfiguriert sein. Hierbei sind die vielfältigsten Fehlerquellen denkbar. Zum Beispiel könnte ein auto wlan0 vor dem Eintrag iface wlan0 inet static fehlen.
Aber auch dieser Artikel "WLAN erhält keine IP-Adresse zugewiesen (HOSTAPD)" könnte eine Lösung sein.
WLAN-Adapter an USB
Für gewöhnlich sind heutige System gröstenteils in der Lage die WLAN-Sticks automatisch zu erkennen und den entsprechenden Treiber zu laden, aber für den Fall das dies nicht so ist sind hier mal Befehle angeführt mit denen man sich auf die Suche nach den entsprechenden Modulen und Treibern machen kann.
Zuerst muss man wissen um welches Gerät es sich bei dem jeweiligen WLAN-Stick am USB Port handelt dies kann man sich mit lsusb
anzeigen lassen. Hierbei wird auch die Hardwareinformation angezeigt die wir für den nächsten Befehlt brauchen werden. Die Ausgabe diese Befehls gibt unter anderem dann folgendes in etwa aus:
ID145f:5572 Ralink Technology, Corp. RT5572 Wireless Adapter
Nun gilt es die entsprechende Modulzuordnung heraus zu finden das wir mit dem folgendem Befehl bewerkstelligen:
modprobe -c | grep -i "Hersteller-ID*Product-ID"
Infos zum WLAN Interface
Um Informationen zum jeweiligen WLAN-Interface unseres Rechners zu erhalten bietet sich das Kommando iwlist
an.
Mit iwlist INTERFACE channel
werden z.B. alle verfügbaten Kanäle des jeweiligen Interfaces angezeigt.