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.