Aus Linux-Magazin 06/2010

Mobile WLAN-Accesspoints mit Hostapd

Markus Feilner

Die Accesspoint-Software Hostapd ersetzt den WLAN-Router, wenn Bildungseinrichtungen mobile Klassenzimmer bekommen oder der Laptop des Lehrers in Afrika die OLPCs der Schüler verbindet .

Wieder ist der Strom weg, schon zum dritten Mal an diesem Tag. Die Regenzeit im tropischen Afrika stellt nicht nur die USV, sondern auch die Geduld afrikanischer Lehrer auf eine harte Probe. Besonders den Informatikunterricht trifft es hart, wenn dem WLAN-Router der Saft fehlt. Die Billig-Laptops wie der OLPC arbeiten mit ihren Akkus vorerst weiter, aber der Zugriff auf die Server-seitige Lernsoftware ist jetzt weg. Wer allerdings den Dozenten-Laptop zum WLAN-Accesspoint macht, hat dank der Akkus einige Stunden Puffer.

Der Laptop als Accesspoint

Auch dem IT-ler in der westlichen Welt hilft der mobile AP, zum Beispiel wenn der Trainer seine UMTS-Flatrate mit den Kursteilnehmern teilen möchte, weil der Konferenzraum kein Internet hat. Das Tool dafür stammt von BSD und nennt sich Hostap [1]. Es implementiert einen Treiber für WLAN-Karten mit AP-Mode. Der passende Authentifizierungsdaemon für WEP, WPA und Radius heißt Hostapd, wobei die Webseiten die Bezeichnungen als Synonyme benutzen.

Seit Reyk Floeter das Werkzeug auf dem Chaos Communication Congress 2003 zur Vernetzung der anwesenden Hacker entwickelte, hat es sich zwar in Servern auf der Basis von PCI-Karten bewährt, aber seine Hardware-Unterstützung bei Laptops und USB-Sticks ist berüchtigt. Nur wenige Kombinationen aus Hard- und Software klappen, zu wenige Geräte beherrschen den AP-Modus.

Wenn es denn läuft, taugt Hostap jedoch auch für den professionellen Einsatz: Für ein Projekt der Volkshochschulen in Südbaden haben die Verantwortlichen zehn Standardnotebooks beschafft, die Bildungseinrichtungen ausleihen können. Wo bisher ein stattlicher Linux-Server in einem Barebone-PC die notwendigen Dienste wie Accesspoint-, DHCP-, LAMP- und Samba-Server erledigte, kommt nun ein handliches Netbook mit Linux als Classroom-Server zum Einsatz. Kabel sind nicht mehr erforderlich, das fliegende Klassenzimmer ist jetzt mobil vernetzt, dank Hostapd.

Auf den Laptops lernen die Schüler dabei nicht nur mit Linux, auch bei Kursen mit proprietärer Windows-Software hilft das Modell: Hier fallen die Kosten für die zehn Lizenzen – darunter auch teure Software wie Adobes Indesign – nur einmal an und lassen sich anteilsweise auf die teilnehmenden Schulen umlegen. Die Schüler arbeiten dabei via Samba im Document-Root eines Linux-Servers.

Linux4afrika meets OLPC

Eine der seltenen zuverlässigen Konfigurationen, die auf Anhieb funktionieren, hat das Linux4afrika-Projekt [2] bei seinen Recherchen rund um die Integration der OLPC-Client-Netbooks herausgefunden: Ubuntu 9.10 mit einer Edimax PCI-WLAN-Karte EW-7128g. Das Gespann bildet die ideale Grundlage für erste Tests, auch weil die Karte im Handel für unter 15 Euro erhältlich ist.

Ubuntu 9.10 arbeitet nach den nötigen Upgrades mit einem Kernel 2.6.31-30, der die WLAN-Karte automatisch erkennt, »iwconfig« zeigt das Interface als »wlan0« an. Nach der Installation von »hostapd« aus dem Repository sollte Root diesen zunächst mit »/etc/init.d/hostapd« anhalten. Die folgende Minimal-Konfiguration in der Datei »/etc/hostapd/min.conf« startet er anschließend mit »hostapd -d /etc/hostapd/hostapd.conf«:

interface=wlan0
driver=nl80211
ssid=test
hw_mode=g
channel=1

Wenn Iwconfig jetzt zusätzlich das Monitoring-Interface »mon.wlan0« anzeigt, dann sind die restlichen Schritte schnell erledigt. Um die künftige WLAN-Kundschaft mit IP-Adressen zu versorgen, ist ein DHCP-Server auf dem System erforderlich. Dies erledigt ein einfaches »aptitude install dhcp3-server« normalerweise mit einer unbedenklichen Fehlermeldung, da »/etc/dhcp3/dhcpd.conf« noch etwas Anpassung braucht.

Hostapd einfach

Listing 1 zeigt eine Minimal-Konfiguration. Das WLAN-Netzwerk arbeitet im Netzwerk 192.168.100.0/24 und vergibt dort die Adressen 192.168.100.100 bis 192.168.100.130. Der Accesspoint erhält die WLAN-IP-Adresse 192.168.100.200, seine LAN-IP-Adresse bezieht er gegebenenfalls per DHCP. Dazu erfolgt ein passender Eintrag in »/etc/network/interfaces«. Verbindet sich nun ein Client, erhält er die erste Adresse aus dem Pool 192.168.100.100. Damit er Onlinezugriff erhält, baucht er noch die IP eines DNS-Servers. Dessen Adresse übergibt der DHCP-Server mit der Zeile:

option domain-name-servers 192.168.0.1;

Außerdem leitet der Accesspoint die Anfragen des WLAN-Clients noch nicht weiter. Dazu bedarf es noch der Aktivierung von IP-Forwarding und natürlich NAT:

echo 1 > /proc/sys/net/ipv4/ip_forward
iptables -t nat -A POSTROUTING -j MASQUERADE

Ab sofort können sich beliebige Clients verbinden. Wer das dauerhaft benötigt, schreibt die beiden letzten Befehle in ein Bootskript, sonst sind die Änderungen spätestens beim Reboot hinfällig.

Listing 1:
»dhcpd.conf«

01 ddns-update-style none;
02 option domain-name "example.org";
03 default-lease-time 600;
04 max-lease-time 7200;
05 log-facility local7;
06 
07 subnet 192.168.100.0 netmask 255.255.255.0 {
08   range 192.168.100.100 192.168.100.130;
09   option routers 192.168.100.200;
10 }

Die verbundenen Clients arbeiten auf der Basis dieser Lösung allerdings ohne jede WLAN-Verschlüsselung. Für erste Tests mag das eine praktikable Lösung darstellen, aber die Gesetzeslage in Deutschland verbietet wegen der Betreiberhaftung mittlerweile wohl jeglichen offenen Wifi-Betrieb. Für die gemeinhin als sicher geltende WPA2-Verschlüsselung ersetzt der Admin die Datei »min.conf« durch die Datei »/etc/hostapd/hostapd.conf« aus Listing 2.

Listing 2:
»hostapd.conf«

01 interface=wlan0
02 driver=nl80211
03 ssid=L4A
04 logger_syslog=-1
05 logger_syslog_level=2
06 logger_stdout=-1
07 logger_stdout_level=2
08 dump_file=/tmp/hostapd.dump
09 ctrl_interface=/var/run/hostapd
10 ctrl_interface_group=0
11 country_code=DE
12 hw_mode=g
13 channel=10
14 auth_algs=1
15 macaddr_acl=0
16 ignore_broadcast_ssid=0
17 wpa=2
18 wpa_passphrase=OpenSourceRocks
19 wpa_key_mgmt=WPA-PSK
20 wpa_pairwise=TKIP
21 rsn_pairwise=CCMP

Nach einem Neustart mit »hostap -d /etc/hostapd/hostapd.conf« können sich die WLAN-Clients nach Eingabe des Schlüssels »OpenSourceRocks« aus Zeile 18 verbinden. Damit nicht genug: Hostapd kann auch erweiterte Konfigurationen wie eine MAC-Adressen-Reservierung und Radius-Integration ermöglichen und manchmal reicht ein einfacher Squid-Proxy für den WWW-Zugriff.

Real Life

So einfach ist es nicht immer, meist muckt Hostapd, die Hardware im Notebook passt nicht, der USB-Stick zickt (Abbildung 1). Was tun, wenn die im Beispiel verwendete PCI-Karte nicht in Frage kommt, zum Beispiel bei Notebooks? PCMCIA-, Onboard- oder USB-WLAN-Karten sind die Alternativen. Tabelle 1 zeigt die Ergebnisse bei elf Kandidaten des Linux-Magazin-Tests.

Abbildung 1: Eigentlich ist es so einfach, wenn die Hardware mitspielt. Aber meist erscheinen auf Notebooks Fehlermeldungen wie diese: Hostap weigert sich zu starten, weil die WLAN-Karte nicht in den AP-Mode wechseln kann. Dann muss eine USB- oder PCMCIA-Karte her.

Abbildung 1: Eigentlich ist es so einfach, wenn die Hardware mitspielt. Aber meist erscheinen auf Notebooks Fehlermeldungen wie diese: Hostap weigert sich zu starten, weil die WLAN-Karte nicht in den AP-Mode wechseln kann. Dann muss eine USB- oder PCMCIA-Karte her.

Tabelle 1: Hostapd-WLAN unter Ubuntu

Tabelle 1: Hostapd-WLAN unter Ubuntu

Die Aterm-PCMCIA-Karte mit externer Antenne hat sich vor allem bei Wardriving-Fans großer Beliebtheit erfreut, da sie hervorragend mit Kismet zusammenarbeitet. Sie ist jedoch nicht mehr neu erhältlich und neue Notebooks bringen auch nur noch selten ein PCMCIA-Interface mit. Die Karte funktionierte aber auf Anhieb, damit wird ein Notebook innerhalb weniger Minuten zum Accesspoint, auch ohne lästige Hersteller-Firmware.

Stand der mobilen Technik heute sind USB-WLAN-Sticks. Die waren aber lange Zeit typische Kandidaten, die den Monitoring- oder Accesspoint-Modus standhaft verweigerten. Von den vier getesteten Modellen ließen sich immerhin drei ohne weitere Modifikationen in Betrieb nehmen.

Den Digitus WL 150 erkennt Ubuntu 9.10 nicht, Lsusb listet das Device als »0bda:8181« und gibt als Produkt »RTL8188S« aus. Auch die Realtek-PCI-Karten ließen sich nicht als AP betreiben. Das in [3] getestete Acer-Ferrari-one-Netbook überzeugte dagegen, der Atheros-AR928X-Chipsatz funktioniert damit in zahlreichen Fällen problemlos.

Warten auf Ubuntu 10.04

Ganz anders sieht die Lage leider bei reinem Debian aus, was Probleme vor allem für die Linux4afrika-Terminalserver-Lösungen X2go und Skole verursacht. Immer wieder kamen die Anfragen aus der Dritten Welt, ob es denn keine Wireless-Lösung mit konventionellem AP gäbe. Ein Hardwarerouter kostet etwa das Dreifache einer PC-WLAN-Karte, Hostapd wäre genau das Richtige.

Aber unter dem verwendeten Lenny werkelt ein betagter Kernel, der nur bedingt zum Betrieb von Hostapd taugt. Der Kasten “Viel Aufwand mit Debian” zeigt die Klimmzüge, die dabei nötig waren. Unter Ubuntu dagegen laufen die meisten Karten bereits Out of the Box mit Hostap. Die Ende April erschienene Version 10.04 mit Kernel 2.6.32 dürfte vermutlich weitere Karten unterstützen.

Viel Aufwand mit
Debian

Schon erste Versuche der Linux4afrika-Admins mit den PCI-Karten unter Lenny enttäuschten, auch die Installation fehlender Firmware machte die Situation nicht besser. Hostap-WLAN mit Lenny benötigt mindestens Kernel 2.6.30. Die Idee, den 2.6.32-Kernel aus Squeeze zu borgen, zieht einen Rattenschwanz an Problemen mit abhängigen Bibliotheken nach sich, die im Test rätselhafterweise sogar zum Versagen des LDAP-Servers führten.

Kernel 2.6.30 als Kompromiss zwischen Lenny und Squeeze, aus den Backports manuell installiert, verrichtete problemlos seinen Dienst für alle vorhandenen Anwendungen, allerdings mit einer Ausnahme: Hostapd.

Deshalb ersetzten die Admins Debians Hostapd durch die neuere Version 0.7.1, wobei sie ihn aus den Sourcen kompilierten, die »nl80211«-Unterstützung aktivierten [4] und die »libnl-dev« aus dem Repository hinzufügten. Leider stellte sich dabei heraus, dass der Kernel kaum geeignete WLAN-Treiber besitzt, die den AP-Mode erlauben. Die einzige funktionsfähige Karte war wieder die bekannte Edimax 7128. Für das Linux4Afrika-Projekt war dies zwar eine akzeptable Lösung, die Ausbeute nach dem großen Aufwand aber eher enttäuschend.

Als letzten Versuch statteten die Admins dem Compat-Wireless-Projekt [5] einen Besuch ab. Das modifiziert die im Kernel enthaltenen Treiber. Der dafür notwendige Patch- und Kompilier-Aufwand hält sich in Grenzen, der Vorgang beansprucht auch auf einem gut ausgestatteten System aber einige Minuten. Dafür bedankt sich das frisch gestartete System mit neuen funktionstüchtigen Treibern. Bei den PCI-Karten waren ab jetzt auch Ralink und Atheros mit im Boot.

Wer einen Accesspoint auf eine bestehende Lösung aufsetzt, muss in der Regel einige Hürden überwinden. Compat-Wireless [5] ist hierbei eine recht hilfreiche Lösung, die ausführliche Onlinedokumentation ist sehr hilfreich.

Infos

[1] Hostapd: [http://hostap.epitest.fi]

[2] Linux4afrika: [http://www.linux4afrika.de]

[3] Daniel Kottmair, “Roter Flitzer”: Linux-User 02/2010, S. 75

[4] Hostapd kompilieren:[http://wireless.kernel.org/en/users/Documentation/hostapd]

[5] Compat-Wireless-Treiber: [http://wireless.kernel.org/en/users/Download]

Der Autor

Hans-Peter Merkel ist mit dem Schwerpunkt Datenforensik seit vielen Jahren in der Open-Source-Community aktiv. Er bildet auch Mitarbeiter von Strafverfolgungsbehörden in Deutschland und Tansania aus und engagiert sich als Gründer und Vorsitzender bei Freioss und Linux4afrika.

LINUX-MAGAZIN KAUFEN
EINZELNE AUSGABE Print-Ausgaben Digitale Ausgaben
ABONNEMENTS Print-Abos Digitales Abo
TABLET & SMARTPHONE APPS Readly Logo
E-Mail Benachrichtigung
Benachrichtige mich zu:
0 Kommentare
Älteste
Neuste Beste Bewertung
Inline Feedbacks
Alle Kommentare anzeigen
Nach oben