Benutzer-Werkzeuge

Webseiten-Werkzeuge


accesspoint

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen der Seite angezeigt.

Link zu der Vergleichsansicht

Beide Seiten, vorherige ÜberarbeitungVorherige Überarbeitung
Nächste Überarbeitung
Vorherige Überarbeitung
accesspoint [2017/06/24 09:19] nooneaccesspoint [2022/03/11 23:45] (aktuell) noone
Zeile 1: Zeile 1:
 +====Raspberry Pi als Access-Point einrichten====
 +
 +===Software installieren===
 +Es empfiehlt sich gleich am Anfang die notwendige Software zu installieren. Nicht nur die, die jetzt, sondern vielleicht auch später gebraucht wird. Während der Konfiguration kann es vorkommen, dass der Zugriff aus das Internet nicht mehr geht. Wenn dann die notwendige Software noch nicht installiert ist, dann kann man unter Umständen noch einmal von vorne anfangen.
 +   sudo apt install dnsmasq hostapd iptables
 +
 +  * **dnsmasq** ist ein DNS-Server für die Namensauflösung und ein DHCP-Server, der im WLAN die IP-Konfiguration an die WLAN-Clients verteilt.
 +  * **hostapd** erzeugt das WLAN, an dem sich die WLAN-Clients anmelden können.
 +  * **iptables** sorgt dafür, dass die WLAN-Clients per NAT eine IP-Verbindung ins nächste Netzwerk bekommen (Routing/Firewalling).
 +
 +===WLAN-Interface konfigurieren===
 +
 +Seit Raspbian Jessie ist standardmäßig ein DHCP Client Daemon (DHCPCD) aktiviert. Die Netzwerk-Konfiguration wird in der Datei "/etc/dhcpcd.conf" vorgenommen.
 +   sudo nano /etc/dhcpcd.conf
 +
 +Hier tragen wir folgende Zeilen ein:
 +   interface wlan0
 +   static ip_address=192.168.1.1/24
 +   nohook wpa_supplicant
 +
 +In dieser IPv4-Konfiguration hat das WLAN-Interface eine statische IPv4-Adresse. Das ist für den Betrieb des DHCP- und DNS-Servers wichtig.
 +
 +Es wäre auch denkbar, auch der Ethernet-Schnittstelle "eth0" eine statische IP-Konfiguration zu verpassen. Das muss aber nicht sein. In dieser Form hat der WLAN-Router den Vorteil, dass er in jedem lokalen Netzwerk funktioniert, wenn die IPv4-Konfiguration per DHCP an die Ethernet-Schnittstelle geliefert wird.
 +
 +Wir speichern und schließen die Datei mit Strg + O, Return, Strg + X.
 +
 +Dann starten wir den DHCP Client Daemon neu.
 +   sudo systemctl restart dhcpcd
 +
 +Dann müssen wir sicherstellen, dass sowohl das Ethernet-Interface (eth0) als auch der WLAN-Adapter (wlan0) funktionieren und vorhanden sind.
 +   ip l
 +
 +Beide Netzwerk-Schnittstellen (eth0 und wlan0) müssen vorhanden sein. Die IP-Konfiguration ist dabei unerheblich.
 +
 +===DHCP-Server und DNS-Cache einrichten (dnsmasq)===
 +Als nächstes richten wir den DHCP-Server und DNS-Cache ein. Der DHCP-Server sorgt dafür, dass die WLAN-Clients nach der Anmeldung alle nötigen Informationen für die IP-Konfiguration bekommen. Der DNS-Dienst übernimmt die Namensauflösung. Um beides kümmert sich "dnsmasq".
 +
 +Dazu müssen wir "dnsmasq" konfigurieren. Wir erstellen zuerst ein Backup der alten Konfigurationsdatei und öffnen eine neue Datei "/etc/dnsmasq.conf".
 +   sudo mv /etc/dnsmasq.conf /etc/dnsmasq.conf_alt
 +   sudo nano /etc/dnsmasq.conf
 +
 +Dort tragen wir folgende Zeilen als Minimal-Konfiguration ein:
 +   # DHCP-Server aktiv für WLAN-Interface
 +   interface=wlan0
 +   
 +   # DHCP-Server nicht aktiv für bestehendes Netzwerk
 +   no-dhcp-interface=eth0
 +   
 +   # IPv4-Adressbereich und Lease-Time
 +   dhcp-range=192.168.1.100,192.168.1.200,255.255.255.0,24h
 +   
 +   # DNS
 +   dhcp-option=option:dns-server,192.168.1.1
 +
 +Hier wird der DHCP-Server und das DNS-Forwarding für die Netzwerk-Schnittstelle "wlan0" aktiviert und für die Schnittstelle "eth0" nur DNS, aber kein DHCP serviert. Außerdem wird festgelegt, dass im WLAN die IPv4-Adressen von 192.168.1.100 bis 192.168.1.200 für die Clients vergeben werden und die Adresse des DNS-Servers festgelegt.
 +
 +===DHCP-Server und DNS-Cache prüfen und in Betrieb nehmen (dnsmasq)===
 +Vor der Inbetriebnahme empfiehlt es sich, die Konfiguration zu testen.
 +   dnsmasq --test -C /etc/dnsmasq.conf
 +
 +Die Syntaxprüfung sollte mit "OK" erfolgreich sein.
 +
 +DNSMASQ neu starten:
 +   sudo systemctl restart dnsmasq
 +
 +DNSMASQ-Status anzeigen:
 +   sudo systemctl status dnsmasq
 +
 +DNSMASQ beim Systemstart starten:
 +   sudo systemctl enable dnsmasq
 +
 +===WLAN-AP-Host einrichten (hostapd)===
 +Dann installieren wir den Host Access Point Daemon, kurz "hostapd". Das ist ein WLAN-Authenticator. Er kümmert sich darum, WLAN-Funktionen verschlüsselt anzubieten und die dazu notwendige Authentifizierung der WLAN-Clients vorzunehmen.
 +
 +Die Konfiguration des WLAN-AP-Hosts:
 +   sudo nano /etc/hostapd/hostapd.conf
 +
 +Die Datei sollte noch nicht vorhanden und somit leer sein. Wenn die Datei doch vorhanden ist, dann sollte man sie vollständig überschreiben.
 +In die Datei tragen wir folgende Minimal-Konfiguration ein. Selbstverständlich gibt es noch mehr Parameter, die in diesem Fall keine Rolle spielen.
 +   # WLAN-Router-Betrieb
 +   
 +   # Schnittstelle und Treiber
 +   interface=wlan0
 +   #driver=nl80211
 +   
 +   # WLAN-Konfiguration
 +   ssid=NETZWERKNAME
 +   channel=1
 +   hw_mode=g
 +   ieee80211n=1
 +   ieee80211d=1
 +   country_code=DE
 +   wmm_enabled=1
 +   
 +   # WLAN-Verschlüsselung
 +   auth_algs=1
 +   wpa=2
 +   wpa_key_mgmt=WPA-PSK
 +   rsn_pairwise=CCMP
 +   wpa_passphrase=GEHEIMES_PASSWORT
 +
 +Drei Einstellungen sind individuell zu tätigen. Das sind der WLAN-Name ("ssid"), der Kanal ("channel"), der von 1 bis 13 frei konfiguriert werden kann, wobei man hier nichts ändern muss. Eventuell muss man hier den Kanal wechseln, wenn eine WLAN-Analyse ergibt, dass bereits mehrere andere WLANs diesen Kanal belegen. Prinzipiell können mehrere WLANs den selben Kanal belegen. Das ist besser, als wenn sich die Kanäle überschneiden.
 +Der dritte Parameter ist das WLAN-Passwort ("wpa_passphrase"). Hier sollte man ein Passwort von mindestens 8 Zeichen Länge im Klartext eintragen.
 +
 +Hinweis zum WLAN-Treiber: Es gibt in dieser Konfigurationsdatei den Parameter "driver", der auskommentiert (#) ist. Normalerweise wird von "hostapd" automatisch der richtige Treiber geladen. Es kann natürlich sein, dass das nicht gelingt. Dann muss man hier den richtigen Treiber explizit angeben.
 +
 +Anschließend speichern und schließen mit Strg + O, Return, Strg + X.
 +
 +Weil diese Datei das WLAN-Passwort im Klartext enthält, sollte nur der Benutzer "root" Leserechte auf diese Datei haben.
 +   sudo chmod 600 /etc/hostapd/hostapd.conf
 +
 +Keine Sorge, mit dem Benutzer "pi" und sudo kann man die Datei jederzeit wieder ändern und speichern.
 +
 +===WLAN-AP-Host-Konfiguration prüfen und in Betrieb nehmen (hostpad)===
 +Bevor wir uns an das weitere Einrichten des WLAN-Routers machen, nehmen wir zuerst den WLAN-Host in Betrieb. Nur wenn das funktioniert, lohnen sich die weiteren Schritte. Wenn der WLAN-Host nicht in Betrieb geht, braucht man die Router-Funktionen gar nicht erst einzurichten.
 +
 +Zur Inbetriebnahme des WLAN-Hosts starten wir "hostapd" im Debug-Modus. Dabei werden uns "alle" Fehlermeldungen angezeigt.
 +   sudo hostapd -dd /etc/hostapd/hostapd.conf
 +
 +**Hinweis:** Mit "Strg + C" kann man die laufende hostapd-Instanz bei Bedarf beenden.
 +
 +"hostapd" wird in jedem Fall Meldungen produzieren. Sofern die Konfiguration richtig ist und der WLAN-Adapter mitspielt, läuft die Konfiguration durch. Das Programm wird aber nicht beendet. Das heißt, "hostapd" kehrt nicht zur Befehlseingabe zurück. Wenn folgende Meldungen erscheinen, dann ist alles im grünen Bereich:
 +   ...
 +   wlan0: interface state COUNTRY_UPDATE->ENABLED
 +   ...
 +   wlan0: AP-ENABLED
 +   ...
 +
 +Das ist eine gute Gelegenheit den WLAN-AP zu testen (ohne Internet-Verbindung). Dazu versucht man mit einem WLAN-Client das WLAN zu finden und sich dort anzumelden.
 +Dabei kann man in der Kommandozeile schön beobachten, wie sich der WLAN-Client anmeldet (AP-STA-CONNECTED) und auch wieder abmeldet (AP-STA-DISCONNECTED), wenn er die Verbindung zum WLAN beendet.
 +
 +**Hinweis:** Wenn man die Konfiguration per SSH vornimmt, dann sollte man das Prüfen des WLAN-AP mit einem anderen Client vornehmen, weil man sich sonst durch das Wechseln des WLANs die SSH-Verbindung abschießt.
 +
 +Wenn "hostapd" mit Fehlermeldungen abbricht und zur Kommandoeingabe zurückkehrt, dann stimmt irgendetwas noch nicht. Die Fehler sind allerdings äußerst vielfältig und die dazugehörigen Fehlermeldungen nicht immer eindeutig.
 +  * Ein beliebter Fehler ist das fehlende "sudo" beim Aufrufen von "hostapd".
 +  * Weitere Fehlerquellen kann man ausschließen, wenn man sicherstellt, dass der WLAN-Adapter grundsätzlich funktioniert und den AP-Modus beherrscht.
 +  * Eine weitere Fehlerquelle ist die verwendete Distribution. Funktionieren wird es auf alle Fälle mit Raspberry Pi OS.
 +
 +Damit der "hostapd" als Daemon im Hintergrund startet, muss man dem Daemon noch sagen, wo er seine Konfiguration (Datei) findet.
 +Wenn "hostapd" noch läuft, dann beenden wir es mit "Strg + C". Dann öffnen wir eine Konfigurationsdatei:
 +   sudo nano /etc/default/hostapd
 +
 +Darin ergänzen wir folgende Parameter:
 +   RUN_DAEMON=yes
 +   DAEMON_CONF="/etc/hostapd/hostapd.conf"
 +
 +Anschließend speichern und schließen mit Strg + O, Return, Strg + X.
 +
 +Den "hostapd" nimmt man dann mit folgenden Kommandos in Betrieb.
 +   sudo systemctl unmask hostapd
 +   sudo systemctl start hostapd
 +   sudo systemctl enable hostapd
 +
 +Den Status des Daemons kann man mit folgendem Kommando prüfen.
 +   sudo systemctl status hostapd
 +
 +Hier sollten folgende Zeilen stehen: Loaded: loaded und Active: active
 +
 +===Routing und NAT für die Internet-Verbindung konfigurieren===
 +Bis hierhin hat man im Optimalfall mit dem WLAN-Client eine Verbindung zum WLAN und eine IPv4-Konfiguration erhalten. Was noch nicht funktioniert, ist eine Verbindung ins Internet.
 +
 +Zuerst aktivieren wir das Routing. Dazu öffnen wir eine System-Datei.
 +   sudo nano /etc/sysctl.conf
 +
 +Hier ergänzen wir die folgende Zeile und schließen die Datei mit Strg + O, Return, Strg + X.
 +   net.ipv4.ip_forward=1
 +
 +Dann aktivieren wir NAT. Wichtig ist hier, dass iptables installiert ist.
 +   sudo iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
 +
 +Dann stellen wir sicher, dass diese Routing-Information gespeichert wird.
 +   sudo sh -c "iptables-save > /etc/iptables.ipv4.nat"
 +
 +Damit die Routing-Information beim Systemstart geladen wird müssen wir noch ein Systemdatei bearbeiten.
 +   sudo nano /etc/rc.local
 +
 +Hier tragen wir vor der Zeilte mit "exit 0" folgende Zeile ein.
 +   iptables-restore < /etc/iptables.ipv4.nat
 +
 +Anschließend muss man die Datei speichern und schließen: Strg + O, Return, Strg + X.
 +
 +Ein Neustart des Raspberry Pi ist abschließend erforderlich.
 +   sudo reboot
 +
 +===WLAN-, Router- und DHCP/DNS-Funktion prüfen===
 +
 +Wenn der Raspberry Pi neu gestartet ist, sollte man kontrollieren, ob die Dienste "hostapd" und "dnsmasq" laufen, bevor man sich am neu eingerichteten WLAN-Router anmeldet.
 +   sudo systemctl status hostapd
 +   ps ax | grep hostapd
 +   sudo systemctl status dnsmasq
 +   ps ax | grep dnsmasq
 +
 +Wenn die Dienste laufen und die Prozesse für die beiden Dienste angezeigt werden, dann kann man versuchen sich mit einem WLAN-Client am WLAN-Router anzumelden und eine Internet-Verbindung aufzubauen.
  

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki