Jun 172013
 

Intro

wifi_logo (1)In diesem Artikel stelle ich eine Lösung vor, um  das Netzwerk an dem der Raspberry verbunden ist über einen USB WLAN Adapter für andere Computer zur Verfügung zu stellen. Der Raspberry arbeitet dabei als Brücke (bridge), und leitet einfach alle Daten die am WiFi  Adapter ankommen in das LAN weiter.

Das kann bspw. sinnvoll sein, wenn man zwei Netzwerke zu Hause betreiben möchte – ein schnelles für n-fähige Geräte, und ein langsames für b / g Geräte; Eine Isolation der Netzwerke gegeneinander findet aufgrund des bridged Modes in unserer Anleitung nicht statt – die IP Adressen der über WLAN angeschlossenen Computer z..B. werden vom  DHCP-Router vergeben, nicht vom Raspberry.

Ein weiterer Einsatzzweck ist das Einrichten von WLANs in anderen Stockwerken / entfernten Orten (z.B. im Keller?), vor allem wenn man  dem  Raspberry noch weitere Aufgaben angedeihen lassen möchte.

Der Vorteil an der bridged Lösung ist geringerer Prozessor-Overhead für den Raspberry, und geringerer Verwaltungsaufwand (IP Adressen).

Hardware-Anforderungen

Nicht alle USB WLAN Sticks unterstützen den dazu notwendigen AP Modus, bzw. die “nl80211 API”. Wir beschreiben weiter unten, wie Sie Ihren Stick überprüfen können.

cartIn unserem Shop bieten wir den Logilink WL0084B v2.0 an, der als Access Point geeignet ist.

Er basiert auf dem Ralink RT5370 Chipsatz.

 

Root-Rechte nötig

Die folgenden Kommandos sind alle als root Nutzer auszuführen (sudo su).

Installation der nötigen Pakete
aptitude install hostapd hostap-utils iw bridge-utils
  • hostapd, hostap-utils: WLAN Stick als Access Point nutzen
  • iw: Konfigurations-Programm für Funknetzwerk-Devices
  • bridge-utils: ermöglichen zwei Netzwerke miteinander zu verbinden

iw hilft festzustellen ob Ihr USB-WiFi Stick Access-Point fähig ist. Nicht alle sind es!

iw list

iw list zeigt die vorhandenen Funknetzwerk-Geräte an.

nl80211 not found

Falls hier der Fehler “nl80211 not found” auftaucht, wird eine ältere Version von hostapd benötigt. Weitere Details dazu – bspw. für den TP-Link TL-WN725N WiFi – gibt es auf dieser Seite. Der besagte TP-Link wäre bei lsusb beispielsweise folgendermaßen aufgeführt (v1):

Bus 001 Device 011: ID 0bda:8176 Realtek Semiconductor Corp. RTL8188CUS 802.11n WLAN Adapter

Sticks die die nl80211 API unterstützen

Wir benutzen im folgenden einen USB-WLAN Stick, der die nl80211 api unterstützt, d.h. dieser Fehler taucht NICHT auf, sondern man erhält mit iw list etwa folgende Ausgabe:

root@andromeda:~# iw list
Wiphy phy9
        Band 1:
( ... )
        Available Antennas: TX 0 RX 0
        Supported interface modes:
                 * IBSS
                 * managed
                 * AP
                 * AP/VLAN
                 * WDS
                 * monitor
                 * mesh point
        software interface modes (can always be added):
                 * AP/VLAN
                 * monitor
        interface combinations are not supported
( ... )        
Device supports HT-IBSS.

Wir nutzen einen Logilink Adapter (Modell WL0084B v2.0), per lsusb wird dessen Chipsatz identifiziert als:

Bus 001 Device 021: ID 148f:5370 Ralink Technology, Corp. RT5370 Wireless Adapter

 

Konfiguration

Zunächst muss man in der /etc/init.d/hostapd den Pfad zur (noch zu erstellenden) hostapd Konfigurationsdatei einstellen. ( nano /etc/init.d/hostapd ) Finden Sie die Zeile mit DAEMON_CONF, und ergänzen Sie sie wie folgt:

DAEMON_CONF=/etc/hostapd/hostapd.conf

erstellen Sie jetzt die hostapd.conf ( nano /etc/hostapd/hostapd.conf ) und befüllen Sie sie mit dem folgenden Inhalt:

ctrl_interface=/var/run/hostapd
###############################
# Basic Config
###############################
macaddr_acl=0
auth_algs=1
# Most modern wireless drivers in the kernel need driver=nl80211
driver=nl80211
##########################
# Local configuration...
##########################
interface=wlan0
bridge=br0
hw_mode=g
channel=1
ssid=www.pi3g.com
macaddr_acl=0
auth_algs=1
ignore_broadcast_ssid=0
wpa=3
wpa_passphrase=BITTE___AENDERN
wpa_key_mgmt=WPA-PSK
wpa_pairwise=TKIP
rsn_pairwise=CCMP
Kurze Diskussion der Datei /etc/hostapd/hostapd.conf

hostapd.conf ist empfindlich was Leerzeichen hinter den jeweiligen Konfigurationseinstellungen angeht – bitte vermeiden Sie diese daher.

  • driver: nl80211 bei Geräten die die nl80211 API unterstützen. Es sind auch andere (legacy-) APIs verfügbar, siehe hier
  • interface: man kann auch mehrere WiFi Adapter am Raspberry anschließen – der erste heißt wlan0
  • bridge: diese Brücke werden wir gleich noch einrichten
  • hw_mode: Verbindungsmodus. g bedeutet: g + b
    • b bedeutet: nur b
  • SSID: die SSID des Hotspots
  • wpa=3: WPA1 und WPA2 werden enabled – diese sind dem unsicheren WEP vorzuziehen
  • wpa_passphrase: das ist Ihr Netzwerkschlüssel. BITTE ÄNDERN SIE DIESEN!!

Um 802.11 n einzuschalten, muss man einen zusätzlichen Parameter “ieee80211n” auf 1 setzen. z.B. für g & n:

hw_mode=g
ieee80211n=1
 
Konfiguration der bridge

Die Bridge sorgt dafür, dass die Netzwerkpakete die die Access Point Clients über diesen senden direkt über den Ethernet Port des Raspberrys weitergeleitet werden. Wir haben die bridge-utils bereits installiert, und müssen nur noch die Einstellungen anpassen.

Editieren Sie die /etc/network/interfaces (nano etc/network/interfaces )

auto lo

iface lo inet loopback
auto br0
iface br0 inet static
        address 192.168.1.11
        netmask 255.255.255.0
        network 192.168.1.0
        broadcast 192.168.1.255
        gateway 192.168.1.1
        bridge-ports eth0 wlan0

Kurze Diskussion:

  • Die bridge br0  ersetzt Ihr bisheriges eth0 Interface, sie wird daher wie eth0 konfiguriert
    • hier in einer statischen Konfiguration – unser Netzwerk ist 192.168.1.*, der Router 192.168.1.1
  • bridge-ports eth0 wlan0 ist das “magische Kommando”, was wlan0 mit eth0 verknüpft
  • Das ist alles – keine weiteren Einträge (insbesondere nicht für wlan0)

Neustart

Nach einem Neustart sollte das System voll funktionsfähig sein. Sie können jetzt Clients mit Hilfe der Zugangsdaten über den Access Point verbinden.

Alternativ können Sie es auch mit folgenden Kommandos ohne Neustart versuchen:

ifdown eth0; ifup br0
service hostapd restart
DNSMASQ

In unserem Setup ist kein dnsmasq nötig – das wäre erforderlich, falls Sie keine bridge machen wollen, sondern den Clients eigene IP Adressen aus einem anderen Bereich geben wollen, z.B. aus Sicherheitsüberlegungen.

Windows – debugging, etc.

  • um die IP Adresse herauszufinden: unter Powershell: ipconfig /all
  • Es empfiehlt sich, die Funknetzwerkbelegung zu analysieren, um den Durchsatz zu optimieren. Unter Windows gibt es dazu bspw. das Tool InSSIDer. (Scheint kostenlos zu sein).

image

Dokumentation & weiterführende Links

Tools
  • InSSIDer – WiFi Analyse-Tool für Windows (auch mit Windows 8 kompatibel)
Waren
  • Christijan van Steenbeek

    Hallo,

    habe den RSPi gestern Bestellt und habefolgenden Verwendungszweck:

    Bereitstellung eines AP an dem sich das iPhone anmelden kann. (Dongle 1)
    Bereitstellen von AirPrint

    Bereitstellen von AirPrint an bestehendem Kabelgebundenem Netzwerk und
    bei abgezogenem Kabel per WiFi (Dongle 2).

    Wäre das einfach zu Realisieren?

    Weiterführend hätte ich gefunden:
    http://www.tacticalcode.de/2013/02/raspberry-pi-als-accesspoint-oder-wlan-bridge.html
    http://m.spiegel.de/netzwelt/gadgets/a-907568.html#spRedirectedFrom=www&referrrer=https://www.google.de/
    http://m.heise.de/ct/13/14/links/166.shtml/?zeitschrift=ct;jahr=13;ausgabe=14;seite=166;from-classic=1
    http://www.welzels.de/blog/projekte/raspberry-pi/raspberry-pi-als-airprint-server/

    • pi3g

      Hallo Herr van Steenbeek,

      unsere Erfahrungen sind aktuell hauptsächlich mit SAMBA und Windows – es steht hier leider kein Mac zum Testen bereit. Mit SAMBA ist Drucker-Sharing prinzipiell möglich, von uns jedoch noch nicht erfolgreich zum Laufen gebracht (wir bloggen erfolgreiche Anleitungen jeweils).

      Haben Sie einen Raspberry Pi von pi3g bestellt? Dann würden wir versuchen die Situation etwas genauer zu analysieren, und uns in die von Ihnen empfohlenen Artikel zu vertiefen.

      Ansonsten bitte ich um Ihr Verständnis, dass wir keine weitere Hilfestellung leisten können.

      MfG,
      Maximilian Batz

      • Christijan van Steenbeek

        Ja, war das Reservierte Deluxe-Set mit 8GB und habe ihn vorhin erhalten.
        Allerdings unter meinem Bürgerlichen Namen.

        Mit freundlichen Grüßen

        Christian M

    • pi3g

      WIr haben erstmal einen Artikel verfasst, um den Raspberry Pi als Print Server einsetzen zu können. Das funktioniert (unter Windows) erfolgreich, Mac sollte auch gehen. Der letzte Artikel war besonders hilfreich.

      http://blog.pi3g.com/2013/08/using-the-raspberry-pi-as-cups-print-server-for-windows-and-apple-mac-airprint/

      Der bridged auf eth0 Modus stellt einen ersten Teil des Szenarios dar – der Raspberry Pi stellt für das iPhone und andere Geräte einen Access Point bereit. Das iPhone kann die Services vom Raspberry nutzen, und über dessen LAN auch transparent auf das lokale Netzwerk zugreifen. (nicht getestet, mangels iPhone)

      Der Raspberry stellt über eth0 – seinen LAN Port – AirPrint für das lokale bestehende kabelgebundene Netzwerk bereit.

      Ob Bridging mit einem dritten Netzwerkadapter – bei abgezogenem LAN Kabel möglich ist, weiß ich nicht, und bitte Sie, uns bei erfolgreichem Experiment (zumindest für den ersten Teil des Szenarios) eine Nachricht zu schreiben.

      Abschließend vielen Dank für die Anregung, damit ich mich endlich mit CUPS befassen konnte – es ist leichter als man denkt, und SAMBA benötigt man dazu auch nicht.

  • Maxi

    Was muss ich bei der hostapd.conf eingeben, wenn mein WLAN WEP als Verschlüsselung nutzt? (Und ja, ich weiß um die Sicherheitsbedenken, danke).

  • Zap

    Hi, zusammen mit dem Hinweis auf die Lösung des Fehler “nl80211 not found” hat das einrichten des AP mit Verbindung ins Internet geklappt. Ich will aber eigentlich nur ein lokales WLAN aufbauen, und auf den Webserver auf dem PI zugreifen, ohne Internetzugang.
    1. Versuch: Einfach das LAN-Kabel rausziehen->kein WLAN-Zugriff mehr möglich (Ip-Adresse wird nicht zugeordnet)
    2. Versuch: Reihenfolge der bridge_ports tauschen -> siehe 1.
    3. ohne Bridge zwischen eth0 und wlan0 -> siehe 1.
    Beobachtung: wlan0 bekommt nie eine eigene IP-Adresse, sondern nur br0
    Das Login mit einem iPad zeigt bei dem Netz dann komische Verbindungsdaten an, IP 169.10.xyz.abc, Subnetzmaske 255.255.0.0
    Im Prinzip soll eth0 und wlan0 komplett getrennt sein
    Hab dann nach weiterem Suchen die Anleitung hier gefunden: http://blog.pistuffing.co.uk/?p=594
    Sah vielversprechend aus, hat nur leider garnicht geklappt.
    Ich bin mit meinem Latein für heute am Ende, hat jemand bitte einen Tip?

    Danke im Voraus!
    Zap

    • Was du willst ist keine Bridge, sondern ein Hotspot/Router mit eigenem DHCP Server.

      D.h. der Pi muss die IP vergeben – du musst eine DHCP Serversoftware installieren.

      Schaue dir z.B. dieses hier an:

      http://www.myguitars.mine.nu/images/rpi_raspbianwheezy_dhcp_server.pdf

      Da ich so etwas selber nicht benötige, kann ich keinen weiteren Input dazu geben.

      Viel Erfolg!

Optimization WordPress Plugins & Solutions by W3 EDGE