Raspberry Pi oder alter Rechner

WLAN-Access-Point unter Linux erstellen

28.01.2016 von David Wolski
Als Access Point kann ein Linux-PC einspringen, der zwischen WLAN und Ethernet als Router agiert. Dies funktioniert etwa auch mit einem Raspberry Pi. Wichtigste Voraussetzung ist in jedem Fall ein unterstützter WLAN-Adapter.

Steht nur eine kabelgebundene Ethernet-Verbindung zur Verfügung,über welche andere Geräte nicht ins Netz kommen, da diese nur WLAN beherrschen, dann kann auch mal ein Notebook als Access Point einspringen. Auch wenn diese Lösung eine vorübergehende ist, bis ein dezidierter Access Point oder WLAN-Router aufgestellt ist, so ist dieser Weg unterwegs oder bei Besuchen oft die einzige Möglichkeit, mit Smartphones und Tablets ins Internet zu kommen.

Das verwendete Notebook agiert in dieser Situation als Router zwischen Ethernet und der WLAN-Schnittstelle und baut ein eigenes WLAN-Netzwerk auf, an dem sich die anderen Geräte anmelden können.

Hardware-und Systemvoraussetzungen

Aktuelle Linux-Distributionen bringen alle Voraussetzungen mit, diese Aufgabe zu meistern – unterstützte WLAN-Hardware vorausgesetzt. Im Idealfall hat das Notebook auch schon einen internen WLAN-Chip, der tadellos funktioniert. Wenn nicht, muss noch ein externer, besser unterstützter WLAN-Adapter am USB-Port einspringen. Ein Routing von WLAN-Adapter zu einem zweiten WLAN-Adapter ist ebenfalls möglich.

Interessant sind selbst gebaute Access Points auf Linux-Basis auch zur Überwachung des eigenen Netzwerkverkehrs über das WLAN, etwa um Apps auf Smartphones und Tablets bei unverschlüsselten Verbindungen mit einem Paket-Sniffer auf den Zahn zu fühlen, denn mit einem handelsüblichen WLAN-Router ist dies nicht möglich. In jedem Fall ist eine solide, sicher per WPA2 verschlüsselte Konfiguration des eigenen Access Points mit Aufwand und Exkursen in die Kommandozeile verbunden.

Eine Ausnahme ist Ubuntu mit seinen Varianten ab Version 14.04: Ein gesichertes Drahtlosnetzwerk ist hier mit etwas Nacharbeit vergleichsweise unkompliziert mit dem Network Manager aufgebaut. Der Beitrag beschreibt beide Möglichkeiten, wobei hier ein Raspberry Pi zum manuellen Aufbau des Access Points dient.

Vorbereitung: Was kann der WLAN-Adapter?

Bevor es zur Konfiguration des eigenen Access Points unter Linux gehen kann, ist ein Blick auf die vorhandene Netzwerk-Hardware nötig. Nicht alle WLAN-Chips unterstützen in ihrer Firmware einen Access-Point-Modus, auch „Master-Mode“ genannt. Es herrscht kein Mangel an tückischen, schlecht dokumentierten oder ganz einfach fehlerhaften WLAN-Chipsätzen, die sich unter Linux-Systemen nicht einwandfrei betreiben lassen. Erst in den letzten sechs Jahren beteiligten sich namhafte Hardware-Hersteller wie Intel, Broadcom, Qualcomm, Realtek und Marvell direkt mit Treibern für Chipsätze an der Entwicklung des Linux-Kernels. In einigen Fällen ist der Betrieb des WLAN-Adapters als Access Point aber auch gar nicht vom Betriebssystem abhängig, sondern von der integrierten Firmware – diese Chips würden also auch unter Windows oder Mac-OS X keinen Access Point aufbauen können.

Auf einem Linux-System nimmt das Kommandozeilen-Tool iw die Fähigkeiten eines integrierten WLAN-Chips oder des angesteckten USB-Adapter unter die Lupe:

/sbin/iw list

Die Ausgabe im Terminal zeigt in einer langen Liste die Eigenschaften aller vorhandenen WLAN-Chips an. Relevant für den Betrieb als Access Point sind die Einträge unterhalb der Zeile „Supported interface modes“. Steht hier „AP“ und „AP/VLAN“, so ist der Chip geeignet. Sollten diese Angaben in der Liste fehlen, der Befehl gar keine Ausgabe anzeigen oder auch nur den Fehler „nl80211 not found“, so ist der Aufbau eines Access Points mit diesem WLAN-Adapter nicht möglich.

Der Network Manager von Ubuntu

Bereits seit Version 0.9.8 kann der Network Manager, den die meisten Distributionen zur Verbindungsverwaltung auf dem Desktop verwenden, einen Access Point erstellen. Allerdings ist diese Funktion bisher auf keiner Linux-Distribution völlig ausgereift. Der Weg über die angebotenen Menüs erlaubt es zunächst auch nur, mit dem Network Manager ein Ad-hoc-Netzwerk aufzubauen, zu dem sich Android-Geräte nicht verbinden können.

Auf Ubuntu-Systemen ab Version 14.04 der Distribution ist der Network Manager dennoch zum Aufbau des Access Points hilfreich. Denn damit erstellen Sie die Basiskonfiguration, die Sie danach nur noch anpassen müssen, damit das so aufgebaute Drahtlosnetzwerk im Infrastrukturmodus und nicht im Ad-hoc-Modus läuft.

1. Klicken Sie auf das Symbol des Network Managers im Panel, und wählen Sie im Menü „Verbindungen bearbeiten“. In Konfigurationsdialog gehen Sie auf „Hinzufügen“ und wählen dann als Verbindungstyp in der angezeigten Liste „Funknetzwerk“ aus. Mit „Erzeugen“ geht es weiter zu den Detaileinstellungen.

2. In der Konfiguration geben Sie als Verbindungsname und als „SSID“ den gewünschten Namen des Access Points ein – beispielsweise „Hotspot“. Den Modus setzen Sie auf „Ad-hoc“ und lassen die Einstellungen „Band“ sowie „Kanal“ bei den Standardeinstellungen. Im Auswahlfeld „MAC-Adresse des Gerätes“ lassen Sie sich die MAC-Adressen der verfügbaren WLAN-Adapter anzeigen und wählen das gewünschte Gerät aus.

3. Weiter geht es zur Seite „Sicherheit des Funknetzwerks“, wo Sie „WPA & WPA2 Personal“ aktivieren und ein sicheres Passwort mit mindestens acht Zeichen zum Schutz des Funknetzes eingeben.

4. Damit andere Netzwerkteilnehmer die Internetverbindung des Rechners mitverwenden dürfen, gehen Sie auf die Seite „IPv4-Einstellungen“ und stellen die „Methode“ auf „Gemeinsam mit anderen Rechnern“. Unter „IPv6-Einstellungen“ schalten Sie diese Option auf „Ignorieren“ um.

5. Nach einem Klick auf „Speichern“ rechts unten sichert der Network Manager die bisher getroffenen Einstellungen in einer Konfigurationsdatei mit dem Verbindungsnamen als Dateinamen im Verzeichnis „/etc/NetworkManager/system-connections“, beispielsweise als „/etc/NetworkManager/system-connections/Hotspot“. In Ubuntu 14.04 öffnen Sie diese Datei jetzt in einem Texteditor wie gedit

sudo -H gedit /etc/NetworkManager/system-connections/Hotspot

und gehen zu dieser Zeile:

mode=adhoc

Diese ändern Sie auf

mode=ap

ab. Ab Ubuntu 15.04/15.10 bearbeiten Sie die Dateien nicht manuell, sondern führen stattdessen das Kommando

sudo nmcli con mod Hotspot wifi.mode ap

auf die angelegte Netzwerkverbindung aus, wobei in diesem Beispiel „Hotspot“ der Verbindungsname ist. Das so modifizierte Netzwerk starten Sie dann in allen Ubuntus mit dem Befehl

nmcli con up id Hotspot

oder gehen nach einem Klick auf das Symbol des Network Managers auf „Neues Funknetzwerk erstellen“. Dort wählen Sie dann unter „Verbindung“ den Namen der vorher erstellten Verbindung. Die Schaltfläche „Erzeugen“ startet den Hotspot.

Hostapd: Ein WLAN mit Raspberry

Eine andere Methode, einen Access Point aufzubauen, der unabhängig vom Network Manager und der verwendeten Distribution funktioniert, nutzt die Kommandozeilen-Tools hostapd und dnsmasq. Diese Tools stehen auf den meisten Linux-Distributionen bereit, und übrigens auch auf Raspbian für den Raspberry Pi.

Die folgende Anleitung ist für den Raspberry Pi und die Distribution Raspbian gültig; bei anderen System kann es Abweichungen geben.

1. Installieren Sie in Raspbian die benötigten Pakete mit diesem Befehl:

sudo apt-get install hostapd dns masq iw

Die Konfiguration für das Netzwerk-Tool hostapd, das den WLAN-Adapter zum Access Point macht, nehmen Sie in der Datei „/etc/hostapd/hostapd.conf“ vor, die Sie erst einmal erzeugen müssen:

sudo nano /etc/hostapd.conf

Mit dem Editor Nano geben Sie in der Datei folgende Zeilen ein, wobei Sie den Access-Point-Namen mit dem Wert von „ssid=“ und das WLAN-Passwort „wpa_passphrase=“ nach Belieben anpassen:

interface=wlan0

driver=nl80211

ssid=Hotspot

auth_algs=1

ignore_broadcast_ssid=0

hw_mode=g

wpa=2

wpa_passphrase=Passwort

wpa_key_mgmt=WPA-PSK

2. Damit das später als Dämon im Hintergrund laufende hostapd seine Einstellungsdatei findet, müssen Sie deren Pfad noch angeben. Öffnen Sie dazu die Datei „/etc/default/hostapd“ mittels sudo in einem Texteditor, und ändern Sie den auskommentierten Eintrag „#DAEMON_CONF=“ auf folgenden Wert:

DAEMON_CONF="/etc/hostapd.conf"

3. Als Nächstes erstellen Sie eine Konfiguration für den DHCP-Server, den das Tool dnsmasq bereitstellt und WLAN-Teilnehmern nach der Anmeldung eine IP-Adresse zuweist, für die in unserem Beispiel der Adressbereich 192.168.10.1 bis 192.168.10.10 gewählt wird. Öffnen Sie die Datei „/etc/dnsmasq.conf“ wieder über sudo in einem Editor, und tragen Sie am Ende der Datei diese drei Zeilen ein:

interface=wlan0

no-dhcp-interface=eth0

dhcp-range=interface:wlan0,192.168.10.1,192.168.10.10,infinite

4. Access Point und DHCP-Server sind nun vorbereitet. Aber damit das System Netzwerkpakete zwischen dem drahtlosen Netzwerk (wlan0) und dem kabelgebundenen Ethernet (eth0) vermittelt, ist noch das Routing zu regeln. Zuerst schalten Sie dazu im Linux-Kernel die Paketweiterleitung ein. In der Datei „/etc/sysctl.conf“ entfernen Sie dazu das Kommentarzeichen (#) vor diesem Eintrag:

net.ipv4.ip_forward=1

Mit dieser Maßnahme funktioniert die Paketweiterleitung ab sofort nach dem nächsten Boot.

5. Das eigentliche Routing der Netzwerkpakete erledigt iptables, also die im Linux-Kernel integrierte Firewall, die sich per Regeln konfigurieren lässt. Geben Sie diese drei Befehle ein, um die Regeln zu setzen:

sudo iptables -t nat -A POSTROU TING -o eth0 -j MASQUERADE

sudo iptables -A FORWARD -i eth0 -o wlan0 -m state --state RELATED,ESTABLISHED -j ACCEPT

sudo iptables -A FORWARD -i wlan0 -o eth0 -j ACCEPT

Damit sich das System beim nächsten Start an die Regeln erinnert, schreiben Sie das Regelwerk mit diesem Kommando in die Datei „/etc/iptables.nat“:

sudo sh -c "iptables-save > /etc/iptables.nat"

6. Der WLAN-Adapter, der in Raspbian den Standardnamen „wlan0“ bekommt, braucht eine feste IP-Adresse, um als Access Point zu funktionieren. Editieren Sie dazu die Datei „/etc/network/interfaces“, und ersetzen Sie den Eintrag zum Gerät „wlan0“ mit diesen vier Zeilen:

iface wlan0 inet static

address 192.168.10.254

netmask 255.255.255.0

up iptables-restore < /etc/ipta bles.nat

Die Aufgabe der letzten Zeile ist es, bei Inbetriebnahme der Netzwerkschnittstellen automatisch die Paketweiterleitung über iptables mit dem zuvor gescherten Regelwerk zu starten.

7. Nun ist der Einfachheit halber ein Neustart des Systems mittelssudo reboot nötig, damit die neue Konfiguration des Netzwerks ohne Konflikte mit der bisherigen korrekt eingelesen wird. Läuft der Raspberry Pi wieder, dann starten Sie den Acces Point mit diesen Befehlen:

sudo service dnsmasq start

sudo service hostapd start

Falls der Start von Hostapd mit der Fehlermeldung „hostapd failed!“ scheitern sollte, dann ist ein genauerer Blick auf die Konfiguration in der Datei „/etc/hostapd.conf“ nötig sowie auf die Reaktionen des WLAN-Chips beim Einschalten des Master-Modes. Dies gelingt mit diesem Debug-Befehl:

sudo hostapd -dd /etc/hostapd.conf

Funktioniert alles, so kann der Access Point mit den beiden Kommandos

sudo update-rc.d dnsmasq enable

sudo update-rc.d hostapd enable

schon zum Systemstart aktiviert werden, und ein manueller Start ist dann nicht mehr nötig.

(PC-Welt/ad)