Raspberry Pi

Raspberry Pi als WLAN Repeater einrichten

Raspberry Pi 4

Mit einem WLAN-Repeater kann die Reichweite eines WLAN-Netzwerks erhöht werden. Der Raspberry Pi kann durch das integrierte WLAN-Modul oder alternativ mit einem USB-WLAN-Dongle als ein WLAN Repeater konfiguriert und genutzt werden. Wie du einen Raspberry Pi als WLAN Repeater einrichten kannst, erfährst du in diesem Artikel.

WLAN Repeater in der Praxis

Das WLAN-Signal eines Routers kann je nach räumlicher Beschaffenheit, Sendeleistung und Wandstärke nicht immer jeden Standort bedienen. Durch diverse Störeinflüsse, wie andere Funksignale oder metallische Materialien, wird das Funksignal zusätzlich geschwächt. Mit einem WLAN-Repeater kann man jedoch das schwache WLAN Signal verstärken.

Ein WLAN-Repeater empfängt das schwache Funksignal und strahlt dieses mit größerer Leistung wieder ab. Dadurch wird das schwache Signal aufbereitet und die Reichweite des WLAN-Netzwerks erhöht.

Raspberry Pi WLAN Repeater

Vorüberlegung

Der Raspberry Pi kann grundlegend als WLAN-Client fungieren und sich mit einem Netzwerk verbinden – oder sein eigenes WLAN-Netzwerk mit einem Access Point anbieten.

Für die Realsierung eines Raspberry Pi WLAN Repeaters muss der Pi jedoch beides gleichzeitig erledigen. Folglich muss eine Client-Verbindung zum Quell-Netzwerk (typischerweise ein Internet-Router) hergestellt werden und gleichzeitig ein Hotspot aktiv sein, mit dem sich andere WLAN-Clients mit dem Raspberry Pi verbinden. Beide Netzwerke müssen anschließend gebrückt und miteinander verknüpft werden.

Realisierung mit einem Wifi-Chipsatz

Für den Raspberry Pi WLAN Repeater soll in diesem Tutorial lediglich ein WLAN-Chipsatz genutzt werden. Die aktuellen Modelle Raspberry Pi 3 und Raspberry Pi 4 besitzen ein WLAN-Modul on Board, sodass ein USB-WLAN-Dongle nicht notwendig ist.

Die Herausforderung liegt nun aber darin, dass sowohl eine Client-Verbindung zum Internet-Router, sowie ein Access Point gleichzeitig über eine WLAN-Schnittstelle (wlan0) abgebildet werden sollen.

Realsierung mit zwei WLAN-Schnittstellen (alternative Methode)

Gegenüber anderen Herangehensweisen, bei denen zwei WLAN-Schnittstellen zum Einsatz kommen, kann man sich mit dieser Methode einen USB-WLAN-Dongle sparen. Bei alternativen Lösungen wäre es möglich, zwei WLAN-Schnittstellen zu nutzen:

  • wlan0 (Raspberry Pi on Board Wifi-Chip) für Client Verbindung zum Internet Router
  • wlan1 (USB-WLAN-Dongle) für Acces Point

Zubehör

Raspberry Pi WLAN Repeater konfigurieren (nur mit wlan0)

Für den Raspberry Pi WLAN Repeater wollen wir lediglich eine WLAN-Schnittstelle verwenden (wlan0). In meinem Fall nutze ich den Raspberry Pi 4 (4GB) mit Raspbian Buster.

Bevor wir wir mit der Einrichtung beginnen, aktualisieren wir unser System.

sudo apt-get update
sudo apt-get upgrade -y

Schritt 1: Hostapd installieren

Für den Access Point des Raspberry Pi WLAN Repeaters benötigt man das Softwarepaket hostapd. Hostapd ist eine Daemon-Software, die es ermöglicht, eine Netzwerkschnittstelle als Access Point zu betreiben.

sudo apt-get install -y hostapd
sudo systemctl unmask hostapd
sudo systemctl enable hostapd

Mit den Befehlen systemctl unmask und systemctl enable erlauben wir den Start von hostapd und lassen dessen Service beim Boot automatisch starten.

Schritt 2: Hostapd konfigurieren für virtuelle Schnittstelle ap0 des Access Points

Für den Access Point des WLAN Repeaters legen wir mit Hostapd eine virtuelle Schnittstelle an. Dazu erstellen wir eine Hostapd-Konfigurationsdatei. In dieser Datei musst du ssid, country_code und wpa_passphrase mit deinen gewünschten Einstellungen setzen.

  • ssid: dein gewünschter Netzwerkname (SSID), mit dem sich andere Client verbinden
  • country_code: Ländercode des WLAN-Netzwerks
  • wpa_passphrase: WLAN-Passwort des Access Points
cat > /etc/hostapd/hostapd.conf <<EOF
interface=ap0
driver=nl80211
ssid=DeineNetzwerkSSID
country_code=DE
hw_mode=g
channel=1
auth_algs=1
wpa=2
wpa_passphrase=DeinWlanApPasswort
wpa_key_mgmt=WPA-PSK
wpa_pairwise=TKIP
rsn_pairwise=CCMP
EOF

Alternativ kannst du die Datei auch mit sudo nano /etc/hostapd/hostapd.conf erstellen und den Dateiinhalt setzen (ohne EOF am Ende).

Anschließend müssen die Rechte der Hostapd-Konfigurationsdatei anpassen.

chmod 600 /etc/hostapd/hostapd.conf

Schritt 3: Hostapd Standard-Daemon setzen

Die erstelle Hostapd-Konfiguration für ap0 setzen wir anschließend als Standard Deamon-Konfiguration für Hostapd.

sed -i 's/^#DAEMON_CONF=.*$/DAEMON_CONF="\/etc\/hostapd\/hostapd.conf"/' /etc/default/hostapd

Schritt 4: Hostapd Service anpassen

Weiterhin muss im hostapd.service die Zeile After=network.target auskommentiert werden. Hierfür bearbeiten wir den Hostapd-Service mit folgendem Befehl.

sudo systemctl --full edit hostapd.service

Die Zeile After=network.target muss nun mit einer vorangestellten Raute auskommentiert werden, sodass in der Zeile nun #After=network.target steht. Anschließend kann der Editor mit Strg + X, Y und Enter gespeichert und geschlossen werden.

Schritt 5: Virtuelles Interface ap0 zu hostapd.service hinzufügen

Im nächsten Schritt fügen wir hostapd.service das neu definierte virtuelle Interface ap0 hinzu. Dazu editieren wir hostapd.service.

sudo systemctl edit hostapd.service

In dem leeren Editor fügen wir folgenden Inhalt ein und speichern anschließend die Konfiguration.

[Unit]
Wants=wpa_supplicant@wlan0.service

[Service]
ExecStartPre=/sbin/iw dev wlan0 interface add ap0 type __ap
ExecStopPost=-/sbin/iw dev ap0 del

Schritt 6: wpa_supplicant für Client-Verbindung zum Router einrichten

Bisher haben wir den virtuellen Access Point ap0 eingerichtet, mit dem sich WLAN-Clients am Raspberry Pi WLAN Repeater verbinden können. Nun muss der Raspberry Pi auch noch seine eigene Client-Verbindung zum Internet-Router erhalten.

Dazu erstellen wir eine neue wpa_supplicant Konfiguration für wlan0. Führe dazu den folgenden Befehl mit deinen Einstellungen für country, ssid und psk aus.

cat >/etc/wpa_supplicant/wpa_supplicant-wlan0.conf <<EOF
country=DE
ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
update_config=1

network={
    ssid="WlanNetzwerkSsidDeinesInternetRouters"
    psk="WlanPasswortDeinesRouters"
    key_mgmt=WPA-PSK   # see ref (4)
}
EOF

Bist du bereits via wlan0 mit deinem Router verbunden und hast die Einstellungen dafür schon getroffen, dann kannst du die bestehende Konfiguration auch einfach kopieren und weiternutzen.

sudo cp /etc/wpa_supplicant/wpa_supplicant.conf /etc/wpa_supplicant/wpa_supplicant-wlan0.conf

Anschließend muss die neue wpa_supplicant-wlan0.conf noch die passenden Rechte erhalten. Außerdem deaktivieren die alte Konfiguration und aktivieren die neue, sodass diese beim Bootvorgang automatisch geladen wird.

sudo chmod 600 /etc/wpa_supplicant/wpa_supplicant-wlan0.conf
sudo systemctl disable wpa_supplicant.service
sudo systemctl enable wpa_supplicant@wlan0.service

Der neue Service wpa_supplicant@wlan0.service muss anschließend noch definiert werden. Weiterhin wird mit diesem Service die IP-Maskierung gesetzt.

sudo systemctl edit wpa_supplicant@wlan0.service

In dem leeren Editor fügen wir folgenden Inhalt ein und speichern diesen.

[Unit]
BindsTo=hostapd.service
After=hostapd.service

[Service]
ExecStartPost=/sbin/iptables -t nat -A POSTROUTING -o wlan0 -j MASQUERADE
ExecStopPost=-/sbin/iptables -t nat -D POSTROUTING -o wlan0 -j MASQUERADE

Schritt 7: Statische Netzwerkschnittstellen definieren

Im letzten Schritt müssen die Netzwerkschnittstellen für wlan0 und ap0 definiert werden.

Für wlan0 erstellen wir folgende Konfiguration:

cat > /etc/systemd/network/08-wlan0.network <<EOF
[Match]
Name=wlan0
[Network]
IPForward=yes
# DHCP options
DHCP=yes
# static options
#Address=192.168.178.100/24
#Gateway=192.168.178.1
#DNS=84.200.69.80 1.1.1.1
EOF

In meinem Fall soll die Netzwerkschnittstelle wlan0, sprich die Schnittstelle für die Client-Verbindung zum Internet-Router, die IP via DHCP beziehen. Möchtest du eine statische IP-Adresse nutzen, kannst du die DHCP-Option auskommentieren und die statischen Optionen nutzen.

Für ap0 erstellen wir folgende Konfiguration:

cat > /etc/systemd/network/12-ap0.network <<EOF
[Match]
Name=ap0
[Network]
Address=192.168.10.1/24
DHCPServer=yes
[DHCPServer]
DNS=84.200.69.80 1.1.1.1
EOF

Die Netzwerkschnittstelle ap0 arbeitet in diesem Fall mit der statischen IP-Adresse 192.168.10.1 und nutzt für die WLAN-Clients einen DHCP-Server, sodass Clients, die sich mit dem Raspberry Pi WLAN Repeater verbinden automatisch eine IP-Adresse zugeteilt bekommen.

Schritt 8: Raspberry Pi neustarten

Damit alle Einstellungen übernommen werden, muss der Raspberry Pi neugestartet werden.

sudo reboot

Quelle: Stackexchange

Letzte Aktualisierung am 1.09.2021 / Affiliate Links / Bilder von der Amazon Product Advertising API

Hinterlasse eine Antwort

Kommentare

  • Hmm, wäre cool wenn es funktionieren würde. ap0 bekommt aber leider nicht die 192.168.10.1 und agiert auch nicht als DHCP Server.

  • Hi, erstmal vielen Dank für den Artikel…

    Ich denke alles übernommen zu haben. Leider bleibt der RasPi jetzt beim boote stehen. Im Display steht: systemd-hostnamed.service

    Weiter passiert nichts. Was kann ich jetzt noch tun????

  • Hmm, ich stehe nicht so auf die “virtuelle” Version.
    Da mein Rasp eh am LAN hängt wäre es doch schicker auf den virtuellen WLAN zu verzichten und stattdessen mit eth0 mit dem Router zu verbinden und wlan0 als access point.
    Wie würde dann die Konfiguration aussehen?

  • Super Gedanke und recht einfache Einrichtung (wenn es funktionieren würde), leider habe ich ebenfalls das Problem das sich ap0 nur eine self assigned 169.254 IP gibt und weder die konfigurierte übernimmt, noch per DHCP Adressen vergibt.