ubuntuusers.de

wlan1 wlan2 Hotspot mit Raspberry Pi

Status: Gelöst | Ubuntu-Version: Kein Ubuntu
Antworten |

ubuntuuser0815

Avatar von ubuntuuser0815

Anmeldungsdatum:
16. Juli 2008

Beiträge: 114

Ich möchte einen mobilen Hotspot einrichten, bei dem ein externes Netzwerk (Internet) per wlan1 empfangen für einen auf wlan0 laufenden Access Point für diverse Nutzer zugänglich gemacht wird.

Habe dazu in 2 Wochen gefühlte 20000 Tutorials durchgearbeitet und nachkonfigururiert und bräuchte Eure Hilfe, da alles nicht läuft. Wenn das LAN-Kabel mit der Fritzbox angesteckt bleibt, funktioniert der AP auch mit Internet aber eben ja ohne wlan1. Eine meiner zahllosen getesteten /etc/network/interfaces ist:

source-directory /etc/network/interfaces.d
auto lo
iface lo inet loopback
iface eth0 inet manual
auto br0
iface br0 inet dhcp
bridge_ports eth0 wlan0
iface wlan0 inet manual        # geht statisch nicht
#iface wlan0 inet static
#    address 192.168.178.3
#    netmask 255.255.255.0
#    network 192.168.178.0
#    broadcast 192.168.178.255

allow-hotplug wlan1
iface wlan1 inet manual
auto wlan1
iface wlan1 inet dhcp
    wpa-ssid "HOTEL-DEUTSCHEBAHN"                            #als Beispiel; wird unterwegs angepasst
    wpa-psk "HOTELLSCHLUESSEL"

Die psk-Daten für dan AP stehen in der /etc/hostapd/hostapd.conf :

interface=wlan0
driver=nl80211
ssid=RPI
hw_mode=g
channel=4
macaddr_acl=0
auth_algs=1
ignore_broadcast_ssid=0
wpa=1
wpa_passphrase=meinschluessel
wpa_key_mgmt=WPA-PSK
wpa_pairwise=TKIP
rsn_pairwise=CCMP

Das Dumme ist, sobald ich z.B. in der hostapd.conf ein zusätzliches bridge=br0 eintrage, ist der AP RPI weg und ich komme für 20 Minuten nicht einmal per LAN an den Raspi. (wlan0 kann sicher den AP-mode, und wlan1 den monitor-mode und die 5V sind auch ausreichend stabil)

Vielleicht hat jemand so etwas schon mal konfiguriert oder hilft mit irgend einem Tip (weitere Dateiauszüge wie iptables o.ä. poste ich bei Bedarf). Wäre schön, wenn ich erst einmal den AP mit einer statischen Adresse hinbekäme und mich danach um die Brücke zu wlan1 kümmern könnte.

elektronenblitz63

Avatar von elektronenblitz63

Anmeldungsdatum:
16. Januar 2007

Beiträge: 29307

Wohnort: NRW

Hallo,
siehe Skripte/WLAN-Accesspoint Konfigurationen - WLAN-Repeater

Wenn dein installiertes System auf dem Pi bereits systemd verwendet, müssen einige Befehle zur Steuerung der Dienste ggf. noch angepasst werden.

Wahrscheinlich sind die verwendeten USB WLAN-Adapter(?) für den Vorhaben nicht geeignet. Konnte sich schon mal ein Client erfolgreich mit dem erzeugten AP verbinden und hatte auch Internetzugang? Zudem sind als AP umfunktionierte WLAN-Adapter nicht für solch einen Dauerbetrieb ausgelegt, da gibt es erfahrungsgemäß Stabilitätsprobleme, von einer rel. geringen Reichweite des erzeugten WLAN mal abgesehen.

ubuntuuser0815

(Themenstarter)
Avatar von ubuntuuser0815

Anmeldungsdatum:
16. Juli 2008

Beiträge: 114

Wahrscheinlich sind die verwendeten USB WLAN-Adapter(?) für den Vorhaben nicht geeignet. Konnte sich schon mal ein Client erfolgreich mit dem erzeugten AP verbinden und hatte auch Internetzugang? Zudem sind als AP umfunktionierte WLAN-Adapter nicht für solch einen Dauerbetrieb ausgelegt, da gibt es erfahrungsgemäß Stabilitätsprobleme, von einer rel. geringen Reichweite des erzeugten WLAN mal abgesehen.

Doch, der Prism54 macht auf wlan0 einwandfrei einen AP (wie beschrieben sogar mit Bridge in's Internet aber eben nur über das LAN-Kabel). Der rtl8187 für wlan1 klappt auch super (sogar mit Monitor-Modus)

Spannungsversorgung und Adapter laufen stabil (Test würde natürlich erst mal am eigenen WLAN gemacht und nicht an einem anderen, also Reichweite sehr gut).

Es ist alles "nur" eine Frage der Konfiguration. Da kann vielleicht jemand weiterhelfen, der genau so etwas mit dem RPI und 2 Sticks schon mal gemacht hat. Versuche gerade ganz die bridge herauszunehmen und alles nur mit hostapd und iptables zu machen und dann noch isc-dhcp-server zu installieren (es gibt ja so unendlich viele, alle verschiedene Tutorials dazu...).

elektronenblitz63

Avatar von elektronenblitz63

Anmeldungsdatum:
16. Januar 2007

Beiträge: 29307

Wohnort: NRW

Das Skript macht ja genau das, und ja, dass lief hier auch alles genau so wie beschrieben. Man kann sich die benötigten Teilstücke auch heraussuchen.

  • statische Konfiguration der zweiten WLAN-Schnittstelle

  • eine Bridge zwischen Ethernet oder WLAN 1 und WLAN 2 (AP) würde ich hier nicht verwenden, sondern NAT und IP-Forwarding um die Netze zu trennen

  • isc-DHCPD-Server wurde nur verwendet, weil der erheblich einfachere DHCP-Server über dnsmasq-base meiner Erfahrung nach mit der Bridge nicht lief, was hier aber möglich wäre

  • Konfiguration des ersten WLAN-Adapter im Infrastrukturmodus über wpa_supplicant für die Verbindung zum bestehenden WLAN mittels DHCP

  • oder Ethernet über DHCP zum bestehenden LAN

  • Konfiguration des zweiten Adapters als AP

ubuntuuser0815

(Themenstarter)
Avatar von ubuntuuser0815

Anmeldungsdatum:
16. Juli 2008

Beiträge: 114

Werde ich morgen mal probieren (bin ja leider kein Linux- oder gar dhcp-Profi.)

Sooo selten ist die Anwendung mit 2 Sticks in's Fremdnetz zu kommen ja auch nicht, dass nicht doch irgendwo im Netz eine Konfiguration hätte auftauchen können, die man bis auf SSID's und Passwörtern 1:1 übernehmen könnte und die dann auch noch wirklich funktionieren würde.

Hoffe, dass das Debuggen des Fehlers mit dem Script nicht noch schwieriger wird. Melde mich dann...

elektronenblitz63

Avatar von elektronenblitz63

Anmeldungsdatum:
16. Januar 2007

Beiträge: 29307

Wohnort: NRW

Der Network-Manager kann das mit etwas Handarbeit auch, wenn Du ein System mit grafischer Oberfläche verwendest, dann wäre des auch eine Möglichkeit.

dnsmasq_base ist einfach über eine Zeile zu konfigurieren, der Manager macht das auch entsprechend:

sudo /usr/sbin/dnsmasq -h -I $ignore-Interface -i $Out-Interface -F $startaddress,$endaddress,$leasetime 

Und schon läuft auf dem angegebenen Interface ein DHCP-Server. Vorraussetzung ist natürlich eine manuelle IP-Konfiguration der verwendeten Schnittstellen und Routing.

ubuntuuser0815

(Themenstarter)
Avatar von ubuntuuser0815

Anmeldungsdatum:
16. Juli 2008

Beiträge: 114

Wenn das mal alles so einfach für so Halblaien wie mich wäre. Immerhin verbindet sich wlan1 jetzt per WLAN auf der 192.168.178.29 mit der Fritzbox und in das Netz AP RPI mit der IP 169.254.177.2 kann ich mich vom Rechner aus auch schon per SSH verbinden.

Doch obwohl ein ping www.google.de dort ein 216.58.209.67 liefert kann ich mit 216.58.209.67 im Browser kein google sehen und nicht mal die Fritzbox auf 192.168.178.1 ☹

was nicht geht ist wohl:
sudo /sbin/iptables -A FORWARD -o wlan1 -i wlan0 -s 169.254.177.0/24 -m conntrack --ctstate NEW -j ACCEPT
sudo /sbin/iptables -A FORWARD -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
sudo /sbin/iptables -t nat -A POSTROUTING -o wlan1 -j MASQUERADE
sudo /usr/sbin/dnsmasq -i wlan0 -I wlan1 -F 169.254.177.3,169.254.177.30,infinite 

Aber wie genau die dnsmasq-Befehlszeile aussehen müsste und ob damit allein der Bridgeersatz vom wlan0 zum Internet auf wlna1 schon funktionieren würde bleibt mit unklar. (Kannst Du mir die mal zusammensetzen oder sonstige Debug- oder Konfigurationstipps geben? 😇 )

elektronenblitz63

Avatar von elektronenblitz63

Anmeldungsdatum:
16. Januar 2007

Beiträge: 29307

Wohnort: NRW

Hast Du im System IPv4-Forwarding aktiviert? Ansonsten sieht das soweit richtig aus.

Temporär:

1
sudo sysctl -w net.ipv4.ip_forward=1  

Es kann aber dennoch sein, dass einer der Adapter/Treibermodul IP-Forwarding nicht oder nur unvollständig unterstützt. In Verdacht habe ich da erfahrungsgemäß immer die Realtek-Geräte. Ich würde die Adapter probeweise mal tauschen, also von der Konfiguration her den Realtek für die WLAN-Verbindung zur FB und den Prism für den Accesspoint, oder eben umgekehrt.

ubuntuuser0815

(Themenstarter)
Avatar von ubuntuuser0815

Anmeldungsdatum:
16. Juli 2008

Beiträge: 114

net.ipv4.ip_forward ist natürlich =1

elektronenblitz63 schrieb:

Es kann aber dennoch sein, dass einer der Adapter/Treibermodul IP-Forwarding nicht oder nur unvollständig unterstützt.

Ich habe zwar keine Ahnung von Linux und noch weniger Ahnung von Netzwerken, aber wenn wlan0 bei mir sauber als AP lief (mini-httpd ist auf dem Handy zu sehen) und auch wlan1 per SSH samt ping google super verbindete, konnte das eher nicht an der Adapter-Treiber-Ebene sondern nur an höheren Ebenen des IP-Forwarding im OSI-Modell liegen...

Habe jetzt die bridge br0 ganz entfernt, wlan0 statisch gesetzt (wlan1 hört per auto wlan1 auf die Fritzbox).

Dann habe ich isc-dhcp-server wieder mit purge deinstalliert. Man sollte eben nicht 20000 Tutorials nachbauen, und zig Pakete installieren, die sich als Thread alle in die Quere kommen...

Mit der rc.local:

#!/bin/sh -e
...
...
fi
iptables -t nat -F POSTROUTING
sudo iptables -t nat -A POSTROUTING -o wlan0 -j MASQUERADE
sudo iptables -t nat -A POSTROUTING -o wlan1 -s 192.168.2.2/24 -j MASQUERADE
exit 0

läuft es aber jetzt 😀 😀

Antworten |