Raspberry Pi - Accesspoint mit lokalem Webserver betreiben

    • Offizieller Beitrag

    In diesem Tutorial möchte ich euch zeigen wie ihr mithilfe eines WLAN Adapters einen lokalen Webserver einrichtet der über ein eigenes WLAN Netz erreichbar ist. Für ein outdoor Projekt habe ich diese Funktionalität benötigt.

    Features:

    • eigenständiges WLAN Netzwerk
    • Offen/Passwortgeschützt (WPA2)
    • optionale Mac-Adressen Beschränkung

    Voraussetzung:


    Da der LogiLink WL0084B [Anzeige] einen Ralink RT 5370 Chip verbaut hat, ist dieser auch Accesspoint fähig.
    Welcher Chipsatz eurer WLAN Adapter hat könnt ihr mit dem Befehl "lsusb" herausfinden.
    Ihr könnt auch einen anderen WLAN Adapter nehmen.

    Als erstes solltet ihr euren Raspberry Pi mit dem Tool "sudo raspi-config" konfigurieren.
    Wie das funktioniert könnt ihr in dieser FAQ nachlesen: FAQ - Wie konfiguriere ich den Raspberry Pi mit raspi-config?
    Es würde ausreichen, nur die Partition zu erweitern. Führt am ende einen Neustart durch.


    1. Software installieren
    Als erstes installieren wir die benötigte Software (Webserver, PHP, hostpad sowie udhcp)

    Code
    sudo apt-get update
    sudo apt-get install -y lighttpd php5 php5-cgi php5-cli iw hostapd udhcpd
    sudo lighty-enable-mod fastcgi 
    sudo lighty-enable-mod fastcgi-php
    sudo chown www-data -R /var/www/
    sudo service lighttpd force-reload


    Ihr könnt auch apache2 oder nginx installieren. In diesem Tutorial benutzte ich aber lighttpd da es auf dem Raspberry Pi schön flott läuft.

    2. Ist mein WLAN Adapter "Accespoint" fähig
    Als nächstes prüfen wir ob unser WLAN Adapter überhaupt fähig ist als Accespoint zu fungieren.

    Code
    iw list | grep AP$
    Zitat


    pi@raspberrypi ~ $ iw list | grep AP$
    * AP


    Wird dort "* AP" angezeigt, ist der Adapter "accesspoint-fähig".

    3. DHCP konfigurieren
    Nun konfigurieren wir den DHCP Server der die IP-Adressen verteilt.

    Code
    sudo nano /etc/udhcpd.conf

    Als nächstes sollten wird DHCP aktivieren. Dazu ändern wir die nachfolgende Datei wie folgt.

    Code
    sudo nano /etc/default/udhcpd


    #DHCPD_ENABLED="no"

    4. Netzwerkkonfiguration
    Jetzt konfigurieren wir das Netzwerk des Raspberry Pis.
    Als erstes weisen wir "wlan0" eine statische IP-Adresse zu. Diese muss identisch mit der IP aus Schritt 3 (# Adresse Router) sein.

    Code
    sudo ifconfig wlan0 192.168.0.1
    Code
    sudo nano /etc/network/interfaces


    Jetzt tragt ihr folgendes in "/etc/network/interfaces" ein:

    Code
    auto lo
    
    
    iface lo inet loopback
    iface eth0 inet dhcp
    
    
    iface wlan0 inet static
      address 192.168.0.1
      netmask 255.255.255.0


    Auch hier darauf achten, dass ihr die IP-Adresse korrekt eingebt.
     
     
    5. hostapd (Accesspoint) konfigurieren
    Als nächstes konfigurieren wir den Accesspoint. Ihr könnt entweder die vorhanden Werte anpassen oder alle Zeilen löschen und folgendes eintragen. (Zeilen löschen mit nano: STRG + K)

    Code
    sudo nano /etc/hostapd/hostapd.conf


    Wenn ihr ein Passwort geschütztes WLAN Netz erstellen wollt, fügt folgendes hinzu:

    Ein offenes Netzwerk wird so konfiguriert:

    Code
    interface=wlan0
    ssid=RPI_AP
    hw_mode=g
    channel=6
    auth_algs=1
    wmm_enabled=0
    #macaddr_acl=1
    #accept_mac_file=/etc/hostapd/accept

    Optional: Mac-Adressen Filter
    kommentiert dazu folgende zwei Zeilen in den beiden oben genannten Konfigurationen (hostapd.conf) aus:

    Code
    macaddr_acl=1
    accept_mac_file=/etc/hostapd/accept

    Danach legt ihr fest, welchen MAC-Adressen es erlaubt ist sich mit dem Accesspoint zu verbinden:

    Code
    sudo nano /etc/hostapd/accept
    Code
    00:96:92:26:13:ff
    00:ab:ca:5c:1a:b3
    00:e3:9d:0d:e7:54


    Ob mit oder ohne WPA Verschlüsselung, solltet ihr bei der Verbindung mit einem Gerät, welches nicht eingetragen ist, folgenden Meldung erhalten:


    Was bedeuten diese Werte?

    • interface=wlan0 (hier muss das device eures Wlan Sticks eingetragen werden)
    • ssid=RPI_AP (Die SSID ist der Name eures WLAN Netzes)
    • channel=6 (hier könnt ihr den Channel ändenr, falls notwenig)
    • wpa_passphrase=dasistgeheim (hier könnt ihr ein mindestens 8 stelliges Passwort eingeben)
    • macaddr_acl=0 (Mac Adressen Filter: 0=Aus 1=An)
    • accept_mac_file=/etc/hostapd/accept (Pfad zu Datei mit erlaubten Mac-Adressen)

    Ändert folgende Datei wie folgt:

    Code
    sudo nano /etc/default/hostapd


    DAEMON_CONF="/etc/hostapd/hostapd.conf"


    Nun erstellen wir eine PHP Testseite

    Code
    sudo nano /var/www/index.php
    PHP
    <?php
    echo phpinfo();
    ?>[/php]
    
    
    Neustarten der Dienste und anschließend testen:
    [code]sudo service hostapd restart
    sudo service udhcpd restart

    Führt folgende Befehle aus, damit die Dienste nach einem Reboot automatisch gestartet werden.

    Code
    sudo update-rc.d hostapd enable
    sudo update-rc.d udhcpd enable

    6. Accesspoint & Webserver testen
    Nun startet ihr den Raspberry Pi neu und zieht nach Eingabe dieses Befehls das Netzwerkkabel.

    Code
    sudo reboot


    Wenn das Netzwerkkabel nicht gezogen wird, kann es Probleme mit der IP-Vergabe und der Verbindung zum lokalen Webserver geben. Ich habe das Netzwerkkabel nur angeschlossen um den Raspberry Pi zu warten oder um zu programmieren.

    Nun loggt ihr euch mit einem Smartphone oder Tablet in den Accesspoint ein.

    Jetzt öffnet ihr euren Browser und besucht die Seite "192.168.0.1".
    Wenn alles geklappt hat, solltet ihr folgendes sehen.

    Well in my humble opinion, of course without offending anyone who thinks differently from my point of view, but also by looking into this matter in a different way and without fighting and by trying to make it clear and by considering each and every one's opinion, I honestly believe that I completely forgot what I was going to say.

    Einmal editiert, zuletzt von ps915 (20. Januar 2014 um 14:26)

  • Raspberry Pi - Accesspoint mit lokalem Webserver betreiben? Schau mal ob du hier fündig wirst!

  • Besteht eigentlich auch die Möglichkeit den Pi per Wlan als eigenen "Accesspoint" zu nutzen ohne dass ein "Reguläres" Netzwerk dran ist? Also ein Router oder sowas.

    Also so gesehen ein eigenes "WLAN" für begrenzte Nutzer? Und wie schwer wäre es eine Macadressenfilterung oder so mit ein zu bauen.


    Michael

    Der Raspberry Pi ist schon ein schönes Spielzeug mit dem man einiges anfangen kann.

    :angel: :wallbash:

    • Offizieller Beitrag


    Besteht eigentlich auch die Möglichkeit den Pi per Wlan als eigenen "Accesspoint" zu nutzen ohne dass ein "Reguläres" Netzwerk dran ist? Also ein Router oder sowas.

    Also so gesehen ein eigenes "WLAN" für begrenzte Nutzer?


    Die Frage verstehe ich nicht ganz. ;) Was genau meinst du damit?

    Und wie schwer wäre es eine Macadressenfilterung oder so mit ein zu bauen.


    Ich habe das Tutorial dementsprechend ergänzt

    Well in my humble opinion, of course without offending anyone who thinks differently from my point of view, but also by looking into this matter in a different way and without fighting and by trying to make it clear and by considering each and every one's opinion, I honestly believe that I completely forgot what I was going to say.


  • Die Frage verstehe ich nicht ganz. ;) Was genau meinst du damit?

    klingt nach peer2peer-wlan... Kommunikation unter WLAN-Geräten ohne Internet oder anderem Netzwerk...

  • Ne ich meinte eigentlich, ob man über den Weg ein "neues" Netzwerk aufbauen kann. Also ein Seperates abseits von dem "normalen" bestehenden Netzwerk.

    Aber ich denke ich werd mir das ganze mal genauer angucken und gucken ob ich damit zurande komme. Wird aber etwas dauern, da ich im Moment etwas Stress auf der Arbeit habe.

    Michael

    Der Raspberry Pi ist schon ein schönes Spielzeug mit dem man einiges anfangen kann.

    :angel: :wallbash:

  • Win neues, logisches getrenntes Netz kannst Du auf jeden Fall aufbauen. Kommt halt drauf an, was Du damit erreichen willst.

    Beispiel:
    Heim-Netz: 192.168.1.0/24
    Gast-Netz: 192.168.2.0/24

    Das sind 2 logische, voneinander getrennte Netzwerke.
    Wenn beide untereinander kommunizieren sollen, dann brauchst Du noch einen Router, der beide Netzwerke kennt. Gleiches gilt, wenn Du aus dem Gast-Netz ins Internet willst.

  • Wenn man das ganze mal am Laufen hat ist es durchaus sinnvoll mal mit der hostapd-Konfiguration zu spielen.
    Die oben gezeigte Konfiguration ist nämlich nur mode g und das bringt bei mir so 6-7 MBit/s.

    Wenn die Hardware mode n kann kann man etwas das Zehnfache herausholen.

    Dazu muss man

    Code
    hw_mode=g

    ersetzen durch

    Code
    hw_mode=g
    ieee80211n=1

    Was bei mir auch was gebracht hat ist mit ht_capab-Einstellungen zu experimentieren, ich verwende im Moment (unter anderem)


    Code
    hw_mode=g
    ieee80211n=1
    wme_enabled=1
    ht_capab=[HT40-][SHORT-GI-40][DSSS_CCK-40]

    Da muss man mal Googeln und ausprobieren, aber ich komme damit auf etwa 70Mit/s.

    Und als Variante kann man hostapd auch in die /etc/network/interfaces eintragen (statt als extra service zu konfigurieren), also etwa statt


    Code
    iface wlan0 inet static
     address 192.168.0.1
     netmask 255.255.255.0

    einfach

    Code
    auto wlan0
    iface wlan0 inet static
     address 192.168.0.1
     netmask 255.255.255.0h
     hostapd /etc/hostapd/hostapd.conf

    Das startet dann wlan0 bein booten und hostapd gleich mit

  • Ich habe ein Problem hab das Tut zum Teil erfolgreich abgeschlossen, ich kann im Handy den AP auswählen. Er verbindet sich auch bloss, bekomme ich keine IP zugewiesen egal mit oder ohne Netzwerkkabel:

    Habe die Einstellung Gesichertes Netzwerk ohne Mac-Filter gewählt

    Einmal editiert, zuletzt von Makkoo (28. Mai 2014 um 16:01)


  • Ich habe ein Problem hab das Tut zum Teil erfolgreich abgeschlossen, ich kann im Handy den AP auswählen. Er verbindet sich auch bloss, bekomme ich keine IP zugewiesen egal mit oder ohne Netzwerkkabel:

    Habe die Einstellung Gesichertes Netzwerk ohne Mac-Filter gewählt

    Hallo,

    ich habe das selbige Problem, hast du es in den Griff bekommen? Ich komme mit dem Handy rauf aber kriege halt über den DHCP keine IP....?

    Bin über jede Hilfe dankbar.


    ----------------------------------
    habs gelöst danke :D.

    Einmal editiert, zuletzt von eyto (9. Juni 2014 um 02:20)

  • Zur Konfiguration greift dnsmasq auf die /etc/hosts zurück. Die könnte bei dir beispielsweise dann so aussehen:

    Code
    ## Lokales Netzwerk
    #  = IP =	=  Domainname =		= Rechnername =
    192.168.0.1	raspberrypi.foo.bar	raspberrypi		# X-beliebiger Kommentar

    Einmal editiert, zuletzt von Astorek86 (30. Juli 2014 um 23:23)

  • Danke für die schnelle Antwort.

    Bin erst Heute dazu gekommen die Einstellungen zu testen. Leider funktioniert es noch nicht.
    Habe darauf hin mit

    Zitat

    sudo apt-get install dnamasq


    dnsmasq installiert.

    Leider immer noch keine Besserung..:wallbash:

    Muss ich in /etc/dnsmasq.conf noch änderungen dorführen? Wenn ja welche?

    Oder bin ich total auf dem Holzweg?

  • ReiMey: Sieh dir den Link von Der_Imperator an ;) . Du must

    • die /etc/resolv.conf bearbeiten, damit der RPi sich bei der DNS-Abfrage selbst abfragen kann
    • bei den Clients dafür sorgen, dass die DNS-Anfragen beim RPi landen. Entweder, indem du den DHCP-Server entsprechend konfigurierst, oder indem du die DNS-Adresse deinen Clients händisch einträgst...
  • Hab mir gestern den ganzen Abend die Zähne an dem Thema ausgebissen...:wallbash:

    Heute noch mal ans Thema und siehe da, nach 5 Minuten die zündende Idee.

    in
    /etc/udhdcp.conf einfach
    opt dns 8.8.8.8 4.2.2.2
    auf
    opt dns 192.168.0.1
    geändert.

    und siehe da........ es geht!!!

    :danke_ATDE::danke_ATDE:

    PS.: Wird bei euch der WLAN Stick auch so warm? hab mich etwas erschrocken...

  • Hallo,

    Meine frage gehört zwar mehr zu hostapd, aber ich schreibe sie trotsdem mal hier.
    also wenn ich hostadp starte schreibt er unter anderem "
    nl80211: 'nl80211' generic netlink not found
    Failed to initialize driver 'nl80211'
    "
    Was muss ich tun?

    Es ist zwecklos Programme idiotensicher zu machen.
    Die natur entwickelt dann einfach bessere ¡dioten.

Jetzt mitmachen!

Du hast noch kein Benutzerkonto auf unserer Seite? Registriere dich kostenlos und nimm an unserer Community teil!