Pi WiFi-Ethernet Bridge

Aus C3MAWiki
Version vom 29. September 2021, 20:07 Uhr von Martin (Diskussion | Beiträge) (Die Seite wurde neu angelegt: „== Raspberry Pi WiFi Ethernet Bridge == Es wird ein Raspberry Pi als "Bridge" verwendet um Ethernet-Geräte (mit Kabel) mit einem WiFi-Netzwerk zu verbinden.…“)
(Unterschied) ← Nächstältere Version | Aktuelle Version (Unterschied) | Nächstjüngere Version → (Unterschied)

Raspberry Pi WiFi Ethernet Bridge

Es wird ein Raspberry Pi als "Bridge" verwendet um Ethernet-Geräte (mit Kabel) mit einem WiFi-Netzwerk zu verbinden. Zur Vermeidung von Netzwerkkonflikten wird ein separates, d.h. vom WiFi abweichendes, Sub-Netz für das Ethernet verwendet. Die Basis bildet ein Raspberry Pi OS Lite (2021) - Debian buster - Image. Die Hardware ist ein Raspberry Pi 2+ mit einem WiFi USB-Dongle (rtl8188eus), dabei ist die Ethernet-Schnittstelle (eth0) und die WiFi-Schnittstelle (wlan0). Die für den Bridge-Modus notwendigen Konfigurationsschritte sind nachfolgend dokumentiert

Aktualisieren des Pi-OS:

sudo apt update && sudo apt upgrade

Einrichten von iptables Regen für zum Routen zwischen WiFi und Ethernet:

sudo iptables -A FORWARD -i eth0 -o wlan0 -j ACCEPT
sudo iptables -A FORWARD -i wlan0 -o eth0 -m state --state RELATED,ESTABLISHED -j ACCEPT

Persistieren der iptables Reglen:

#während der Installation die iptables regeln speichern
sudo apt install netfilter-persistent iptables-persistent
#==================================================
#Sofern bei der Installation die iptables Regeln nicht gespeichert wurden:
sudo sh -c "iptables-save > /etc/iptables/rules.v4" 
sudo iptables -t nat -A POSTROUTING -o wlan0 -j MASQUERADE
sudo netfilter-persistent save

Die IP-Weiterleitung in "/etc/sysctl.conf" aktivieren, dazu einfach das Kommentarzeichen entfernen:

#net.ipv4.ip_forward=1
net.ipv4.ip_forward=1

Nun dnsmasq installieren:

sudo apt install dnsmasq

Anschließend dnsmasq in "/etc/dnsmasq.conf" konfigurieren:

interface=eth0
listen-address=192.168.220.1
#bind-interfaces
server=8.8.8.8
domain-needed
bogus-priv
dhcp-range=192.168.220.50,192.168.220.150,12h

Bei der Nutzung von bind-interfaces kann beim Boot-Vorgang ein Fehler auftreten, da ggf. dnsmasq vor NetworkManager (systemd) gestartet wird und somit die Netzwerk-Interfaces (eth0 & wlan0) noch nicht zur Verfügung stehen.

Die Konfiguration von dnsmasq sollte mit "dnsmasq --test" überprüft werden!

Zur Vermeidung nicht Verfügbarkeitsproblemen bei dnsmasq ist die Anpassung des Service-Konfiguration in "/lib/systemd/system/dnsmasq.service" erforderlich:

[Unit]
#After=network.target
After=network-online.target
Wants=network-online.target

[Service]
Restart=on-failure
RestartSec=2

Dabei wird eine Restart-Bedingung eingefügt, falls der Service nicht bzw. nicht korrekt gestartet wurde.

Nun ist es noch erforderlich das WiFi in "/etc/wpa_supplicant/wpa_supplicant.conf" zu konfigurieren:

#ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=wheel
country=DE
update_config=1

network={
        ssid="MyWLAN"
        psk="MyWifi"
        scan_ssid=1
}


Die Konfiguration und konnektivität und mögliche Treiber-Probleme (des rtl8188eus) zu überprüfen.

sudo wpa_supplicant -i wlan0 -Dnl80211,wext -c /etc/wpa_supplicant/wpa_supplicant.conf

Die Verbindund mit "Strg+C" terminieren!

Im letzten Schritt wird das Ethernet-Interface in "/etc/dhcpcd.conf" konfiguriert:

interface eth0
static ip_address=192.168.220.1/24
static routers=192.168.220.0

# fallback to static profile on eth0
#interface eth0
#fallback static_eth0

# For some reason, the interface is not detected as wireless.
# Marking it so will start wpa_supplicant.
# Replace with your actual wireless interface name.
# The rtl8188eus driver troubleshooting with raspberry pi os!
interface wlan0
env ifwireless=1
env wpa_supplicant_driver=nl80211,wext

Final ist ein Neustart des Raspberry Pi mit "sudo reboot" erforderlich, dann sollte die WiFi-Ethernet Bridge betriebsbereit sein.