Hier mal ne kurze Anleitung zum Einsatz des hostapd als Accesspoint. Gedacht ist diese Anleitung NICHT als Router, sondern als einfache WLAN-Brücke ins vorhandene Netzwerk, eben als reiner Accesspoint. Grundlegende Netzwerkdienste wie Router oder DHCP-Server werden also als bereits vorhanden vorausgesetzt, auch wird ein Mindestmaß an Basiswissen im Umgang mit Linux vorausgesetzt.
Wer sich auf Shell-Ebene etwas Komfort verschaffen will, installiert sich am besten den Midnight Commander mittels "sudo apt-get install mc", der auch mit "mc" gestartet wird. Die ältere Generation mit DOS-Kenntnissen wird eine gewisse Ähnlichkeit mit dem damaligen legendären Norton Commander erkennen können
Wem das ständige "sudo" etwas nervt, kann sich mit "sudo -s" eine Root-Shell verschaffen, normalerweise erkennbar am "#" am Eingabeprompt.
Zuerst wird eine sog. Bridge erzeugt aus dem Ethernet-Interface eth0 und dem WLAN, hier wlan0.
Mein Beispiel basiert auf einem lokalen Netzwerk, Raspberry Pi 2 mit statischer IP, Router ist Fritzbox.
Als WLAN-Stick habe ich einen Logilink WL0084B v.2.0 verwendet, gibts z.B. bei CONRAD für aktuell 6,99 Ocken.
Die IP-Adressen sind logischerweise an Euer vorhandenes Netzwerk entsprechend anzupassen !
1. Dazu ist die /etc/network/interfaces wie folgt anzupassen:
---SCHNIPP---
auto lo
iface lo inet loopback
auto eth0
allow-hotplug eth0
iface eth0 inet manual
auto wlan0
allow-hotplug wlan0
iface wlan0 inet manual
auto br0
iface br0 inet static
# statische IPv4-Adresse außerhalb DHCP-Bereich
address 192.168.253.222
netmask 255.255.255.0
# Gateway ist IP der Fritzbox
gateway 192.168.253.1
# wir brücken eth0 und wlan0, also zum durchreichen des Netzwerkverkehrs aufs Ethernet
bridge_ports eth0 wlan0
# set bridge forward delay to time seconds
bridge_fd 0
# turn spanning tree protocol on/off
bridge_stp no
# IPv6 hätten wir auch noch gern, hier aber ohne statische IP
iface br0 inet6 auto
dns-nameservers 192.168.253.1
dns-search fritz.box
---SCHNAPP---
sollte br0 nicht erzeugt werden können, bitte mit "sudo apt-get install bridge-utils" das notwendige Paket nachinstallieren.
2. hostapd sollte bereits vorhanden/installiert sein. Ich habe den allerdings aus den Sourcen selbst kompiliert (aktuell Version 2.4, siehe hier https://w1.fi/hostapd/ ).
Jetzt muss die /etc/hostapd/hostapd.conf angepasst werden:
---SCHNIPP---
# Basic configuration 802.11b/g/n with WPA2-PSK and CCMP
interface=wlan0
# SSID ist das, was als WLAn-Netzwerk angezeigt werden soll
ssid=HotspotRPI
channel=7
ctrl_interface=/var/run/hostapd
bridge=br0
# WPA and/oder WPA2 configuration
# keine Limitierung auf MAC-Adressebene
macaddr_acl=0
# WPA only, WEP off
auth_algs=1
ignore_broadcast_ssid=0
# WPA2 only
wpa=2
wpa_passphrase=DeinWLANKeynachWahl
wpa_key_mgmt=WPA-PSK
wpa_pairwise=CCMP
rsn_pairwise=CCMP
wpa_group_rekey=600
wpa_ptk_rekey=600
wpa_gmk_rekey=86400
eapol_key_index_workaround=0
eap_server=0
# Hardware configuration, DOKU zum hostapd LESEN und auf eingesetzte Hardware anpassen !
driver=nl80211
ieee80211n=1
# <g> simply means 2.4GHz, <a> simply means 5 Ghz
hw_mode=g
# Definition Land, hier Deutschland Kanal 1-13 möglich
country_code=DE
# limit the frequencies used to those allowed in the country
ieee80211d=1
rts_threshold=2347
fragm_threshold=2346
dtim_period=2
beacon_int=100
---SCHNAPP---
Jetzt noch starten mit "sudo service hostapd start" oder "sudo /etc/init.d/hostapd start" und fertig ist der WLAN-Accesspoint mit dem Raspberry PI.
Wer mal so testen will, wie schnell so das WLAN wirklich ist, den empfehle ich das Tool iperf3 ( https://github.com/esnet/iperf ) zu installieren, was es (allerdings kostenpflichtig) auch für iPhone/iPad gibt, und somit direkte Durchsatzmessungen auf TCP- und UDP-Ebene zwischen WLAN-Client und dem Raspberry ermöglicht. Nur Messen ist aussagekräftig, schwammiges wie "es geht langsam" kann nicht als Grundlage zur Fehlersuche dienen, denn evtl. ist es ja gar nicht das WLAN allein. Nicht vergessen: mehrere Clients am Accesspoint senken auch den Durchsatz, denn wir haben nur 1x WLAN-Bandbreite in Summe verfügbar !
Ich schaffe mit diesem low-cost-USB-WLAN-Stick durchschnittlich 27-30 Mbit/s effektiv, meine Fritzbox liefert auf 2,4 GHz etwa 37-41 Mbit/s, ist also ein wenig schneller, sie hat aber auch (ist ne 7490) MIMO, sollte also etwas mehr liefern. Aber was der Stick liefert, ist akzeptabel.
Mit diesem EDIMAX-Dingens habe ich übrigens nur 13-17 Mbit/s hinbekommen, trotz aller "Tuning-Versuche". Immer alles gemessen mit meinem iPhone 6 in ca. 2m Entfernung von den Geräten, um eine identische Vergleichsbasis zu haben.
Hier noch was allgemeines zum WLAN. Angaben wie 150Mbit/s oder 300Mbit/s auf den Verpackungen der Sticks geben immer die sog. Nettodatenrate an und das noch unter idealen Bedingungen, die fast nirgends in der Realität existieren. Das ist nicht(!) das, was an Daten/per TCP/IP-Protokoll wirklich fliesst. Zieht von den Nettoraten mindestens 50% ab, denn das wird für die Übertragung selbst und Fehlerkorrektur zur sicheren und korrekten Übertragung des WLAN-Datenstroms benötigt und hängt leider von weiteren Bedingungen ab. Es bedeutet nicht, das man mit einem WLAN-N 150 Stick auch 150 MBit/s an Daten zwischen A und B übertragen bekommt. Ich will jetzt hier nicht alle Spezifika solch einer Funkübertragung darlegen, nur so als Faustformel zum Wissen. Meine Messungen sind natürlich Bruttodatenraten, also das was wirklich per TCP/IP übertragen wurde.
Das bedeutet aber auch, dass ich an z.B. einem VDSL2-Anschluß mit 50Mbit/s oder mehr auf 2,4GHz generell schon an Grenzen stosse, und hier eigentlich ac-WLAN auf 5 GHz fast zwingend ist, um die z.B. 50MBit/s brutto auch per WLAN transportieren zu können. "Langsam" könnte also einfach auch nur aufgrund technischer Grenzen sichtbar sein.
Wer auch speziell diesen USB-WLAN-Stick einsetzt, kann noch etwas "tunen", indem er in die /etc/hostapd/hostapd.conf folgende Zeilen hinten anfügt (entsprechende Infos gibts in der Doku zum hostapd):
---SCHNIPP---
# sonstiges
ht_capab=[GF][HT40+][HT40-][SHORT-GI-20][SHORT-GI-40][RX-STBC1][MAX-AMSDU-3839]
wmm_enabled=1
wmm_ac_be_aifs=3
wmm_ac_be_cwmin=4
wmm_ac_be_cwmax=10
wmm_ac_be_txop_limit=0
wmm_ac_be_acm=0
---SCHNAPP---
Das wars dann auch schon, happy WiFi.
Gruss Heiko