OpenWRT ist ein quelloffenes Linux-basiertes Betriebssystem, das speziell für eingebettete Geräte wie Router,
Switches und andere Netzwerkhardware entwickelt wurde. Das Projekt entstand im Jahr 2004, als Entwickler den
Quellcode des Linksys WRT54G-Routers nutzten – der Buchstabe „WRT" im Namen erinnert bis heute daran. Seit
dieser Zeit ist OpenWRT zu einem vollwertigen, professionell gepflegten Betriebssystem gewachsen, das in
Heimnetzwerken ebenso anzutreffen ist wie in gewerblichen Installationen.
Die mitgelieferte Firmware der meisten Consumer-Router ist aus mehreren Gründen problematisch: Sie wird von
Herstellern häufig nur für kurze Zeit mit Sicherheitsupdates versorgt, bietet wenig Konfigurationstiefe und
enthält gelegentlich undokumentierte Dienste oder veraltete Bibliotheken. OpenWRT ersetzt diese Firmware
vollständig durch ein gepflegtes Linux-System mit einem aktiven Sicherheits-Track und einem umfangreichen
Paketrepository mit über 5.000 Paketen.
Die unterstützte Hardware ist sehr breit gefächert. Besonders beliebt sind Geräte von TP-Link
(z. B. Archer C7, TL-WR1043ND), GL.iNet (GL-MT3000, GL-AXT1800 – teilweise sogar mit
vorinstalliertem OpenWRT-Ableger), sowie x86/x86_64-Hardware wie alte PCs oder dedizierte Minirechner
(APU2 von PC Engines, Intel NUC). Die offizielle Hardware-Kompatibilitätsliste unter
openwrt.org/toh listet tausende von Geräten. Für x86 steht ein generisches Image zur Verfügung,
das sich auf nahezu beliebiger Hardware installieren lässt und besonders für leistungsstarke
Heimrouter-Setups geeignet ist.
1.1 Wann lohnt sich OpenWRT?
OpenWRT lohnt sich immer dann, wenn man mehr Kontrolle über sein Netzwerk möchte: VLANs für Netzwerktrennung
(z. B. IoT-Geräte isolieren), VPN-Gateways direkt am Router, feingranulare Firewall-Regeln,
Bandbreitenmanagement oder schlicht der Wunsch, ein Gerät nach dem Ende des Hersteller-Supports weiter mit
Sicherheitsupdates zu betreiben.
2. Installation
Bevor man mit der Installation beginnt, muss das passende Image für das eigene Gerät gefunden werden. Auf
firmware-selector.openwrt.org lässt sich das Gerät bequem suchen und das richtige Image herunterladen.
Dabei ist zwischen zwei Image-Typen zu unterscheiden:
Factory Image: Wird verwendet, wenn auf dem Gerät noch die Original-Hersteller-Firmware
läuft. Dieses Image enthält alle nötigen Strukturen, um über das Hersteller-Webinterface oder TFTP
eingespielt zu werden.
Sysupgrade Image: Wird verwendet, wenn bereits OpenWRT installiert ist und auf eine
neuere Version aktualisiert werden soll. Dieses Image ist kompakter und setzt die OpenWRT-Bootumgebung
voraus.
Die genaue Vorgehensweise beim Flashen ist geräteabhängig. Bei vielen TP-Link-Geräten lädt man das Factory
Image über das Hersteller-Webinterface hoch. Bei Geräten, die keinen einfachen Web-Flash-Modus besitzen,
kommt TFTP oder ein serieller Zugang zum Einsatz. Die Gerätewiki-Seiten auf openwrt.org dokumentieren den
Prozess für jedes unterstützte Modell im Detail.
2.1 Erster Zugriff nach der Installation
Nach dem ersten Boot ist OpenWRT unter der IP-Adresse 192.168.1.1 erreichbar. Standardmäßig
ist kein Passwort gesetzt. Es gibt zwei Wege, das System zu konfigurieren:
LuCI (Web-UI): Das grafische Webinterface LuCI ist bei vielen Images vorinstalliert.
Es bietet eine komfortable Oberfläche für die häufigsten Konfigurationsaufgaben.
SSH: Für erweiterte Konfiguration und Automatisierung ist SSH der bevorzugte Weg.
Nach dem ersten Boot ist SSH ohne Passwort zugänglich – das Root-Passwort sollte sofort gesetzt werden.
Sobald ein Passwort gesetzt ist, wird auch die LuCI-Oberfläche passwortgeschützt. Es empfiehlt sich außerdem,
den SSH-Zugang auf das LAN zu beschränken und Public-Key-Authentifizierung einzurichten.
3. Paketverwaltung
OpenWRT verwendet opkg als Paketmanager – ein schlankes Tool, das ähnlich wie apt
unter Debian funktioniert, jedoch für ressourcenbeschränkte Systeme optimiert ist. Die Paketlisten werden von
den offiziellen OpenWRT-Mirrors bezogen.
3.1 Pakete installieren
# Paketlisten aktualisieren
opkg update
# Ein Paket installieren (Beispiel: htop)
opkg install htop
# Nach einem Paket suchen
opkg find "*wireguard*"
# Installierte Pakete auflisten
opkg list-installed
3.2 Speicherbeschränkung auf Consumer-Hardware
Viele Consumer-Router besitzen nur 8–16 MB Flash-Speicher. Der verfügbare Speicher für Pakete ist daher stark
begrenzt. Pakete werden nach dem Neustart nicht automatisch wiederhergestellt, wenn sie nur im RAM
installiert wurden – bei OpenWRT ist der Overlay-Bereich im Flash für persistente Änderungen zuständig.
Ist dieser voll, schlägt die Installation neuer Pakete fehl.
3.3 extroot – USB-Speicher als Root-Dateisystem
Eine Lösung für das Speicherproblem ist extroot: Dabei wird ein USB-Stick oder eine
USB-Festplatte als erweitertes Root-Dateisystem eingebunden. Das erlaubt die Installation wesentlich
größerer Paketmengen.
# Benötigte Pakete installieren
opkg update
opkg install block-mount kmod-fs-ext4 kmod-usb-storage e2fsprogs
# USB-Gerät formatieren (z. B. /dev/sda1)
mkfs.ext4 /dev/sda1
# UUID ermitteln
block info /dev/sda1
# fstab konfigurieren und extroot aktivieren
# Detaillierte Anleitung: openwrt.org/docs/guide-user/additional-software/extroot_configuration
block mount
Nach einem Neustart wird das System von der USB-Partition gebootet, sofern die fstab korrekt konfiguriert
wurde. Auf leistungsschwachen Geräten sollte man jedoch abwägen, ob ein Upgrade auf stärkere Hardware
die sinnvollere Alternative wäre.
4. Netzwerk-Konfiguration (UCI)
OpenWRT verwendet das Unified Configuration Interface (UCI) als zentrale
Konfigurationsschicht. Alle wichtigen Einstellungen werden in strukturierten Textdateien unter
/etc/config/ gespeichert. Die Netzwerkkonfiguration liegt in /etc/config/network.
UCI-Dateien bestehen aus benannten Sektionen mit Optionen. Konfigurationsänderungen können entweder direkt
in der Datei vorgenommen oder über das uci-Kommandozeilenwerkzeug durchgeführt werden.
Nach Änderungen muss der zugehörige Dienst neu gestartet werden.
# Einen Wert lesen
uci get network.lan.ipaddr
# Einen Wert setzen
uci set network.lan.ipaddr='10.0.0.1'
# Änderungen speichern
uci commit network
# Netzwerk-Dienst neu starten
service network restart
4.3 Bridges
Bridges fassen mehrere Netzwerkinterfaces zu einem logischen Interface zusammen. Das klassische LAN-Bridge
br-lan verbindet typischerweise die LAN-Ports mit dem WLAN-Interface. In neueren OpenWRT-Versionen
(ab 21.02) wird die Bridge-Konfiguration über den device-Block verwaltet:
config device
option name 'br-lan'
option type 'bridge'
list ports 'eth1'
list ports 'eth2'
list ports 'eth3'
5. VLAN-Konfiguration
Seit OpenWRT 21.02 wird für viele Geräte DSA (Distributed Switch Architecture) verwendet –
ein Linux-Kernel-Framework, das den integrierten Switch als einzelne Netzwerkports abbildet. Das ersetzt
das ältere swconfig-System und ermöglicht eine standardkonforme VLAN-Konfiguration direkt
über den Linux-Netzwerk-Stack.
Bei DSA erscheinen die Switch-Ports als eigenständige Netzwerkinterfaces (z. B. lan1,
lan2, wan). VLANs werden über Bridge-VLANs konfiguriert. Ein Trunk-Port überträgt
mehrere VLANs mit VLAN-Tags (tagged), während ein Access-Port einem einzelnen VLAN zugeordnet ist und
Frames ohne Tag sendet und empfängt (untagged).
5.1 Beispielkonfiguration: IoT-VLAN (VLAN 20)
In diesem Beispiel sollen IoT-Geräte (Smart-Home, IP-Kameras) in einem separaten VLAN 20 isoliert werden.
LAN-Port 4 wird als Access-Port für VLAN 20 konfiguriert. LAN-Port 1 fungiert als Trunk-Port und überträgt
sowohl VLAN 1 als auch VLAN 20 tagged – beispielsweise zum WLAN-Access-Point.
# /etc/config/network
# Bridge-Gerät für LAN
config device
option name 'br-lan'
option type 'bridge'
list ports 'lan1'
list ports 'lan2'
list ports 'lan3'
list ports 'lan4'
# Bridge-VLAN: VLAN 1 (Heimnetz) – untagged auf lan1-lan3, tagged auf lan1 (Trunk)
config bridge-vlan
option device 'br-lan'
option vlan '1'
list ports 'lan1:t'
list ports 'lan2:u*'
list ports 'lan3:u*'
# Bridge-VLAN: VLAN 20 (IoT) – untagged auf lan4, tagged auf lan1 (Trunk zum AP)
config bridge-vlan
option device 'br-lan'
option vlan '20'
list ports 'lan4:u*'
list ports 'lan1:t'
# LAN-Interface (VLAN 1)
config interface 'lan'
option device 'br-lan.1'
option proto 'static'
option ipaddr '192.168.1.1'
option netmask '255.255.255.0'
# IoT-Interface (VLAN 20)
config interface 'iot'
option device 'br-lan.20'
option proto 'static'
option ipaddr '10.20.0.1'
option netmask '255.255.255.0'
# Konfiguration speichern und Netzwerk neu starten
uci commit network
uci commit dhcp
service network restart
service dnsmasq restart
# Interfaces prüfen
ip addr show
# Bridge-VLAN-Zuweisung prüfen
bridge vlan show
Das Kommando bridge vlan show gibt eine Übersicht aller Bridge-VLAN-Einträge aus und ermöglicht
eine schnelle Überprüfung, ob die Ports korrekt zugewiesen sind. Ein korrekt konfigurierter Trunk-Port
zeigt mehrere VLAN-IDs, ein Access-Port genau eine.
6. Firewall
OpenWRT nutzt ein zonenbasiertes Firewall-Modell, das in /etc/config/firewall konfiguriert wird.
Jede Netzwerk-Zone hat definierte Standardrichtlinien (ACCEPT, REJECT, DROP) für eingehenden, ausgehenden
und weitergeleiteten Traffic. Weiterleitungsregeln (forwardings) steuern, welche Zonen miteinander
kommunizieren dürfen.
Ab OpenWRT 22.03 basiert das Firewall-Backend auf nftables statt auf dem älteren iptables.
Das neue Paket heißt firewall4 und wird standardmäßig auf Geräten mit Linux-Kernel 5.10 oder
neuer eingesetzt. Die UCI-Konfigurationssyntax in /etc/config/firewall bleibt dabei weitgehend
identisch – die Umstellung ist für den Nutzer transparent.
6.1 Zonen und Weiterleitungsregeln
# /etc/config/firewall (Auszug)
config zone
option name 'lan'
list network 'lan'
option input 'ACCEPT'
option output 'ACCEPT'
option forward 'ACCEPT'
config zone
option name 'wan'
list network 'wan'
list network 'wan6'
option input 'REJECT'
option output 'ACCEPT'
option forward 'REJECT'
option masq '1'
option mtu_fix '1'
config zone
option name 'iot'
list network 'iot'
option input 'REJECT'
option output 'ACCEPT'
option forward 'REJECT'
# LAN darf ins WAN (Internet)
config forwarding
option src 'lan'
option dest 'wan'
# IoT darf ins WAN, aber nicht ins LAN
config forwarding
option src 'iot'
option dest 'wan'
6.2 Einzelne Ports öffnen
# DNS-Anfragen vom IoT-VLAN an den Router erlauben
config rule
option name 'Allow-IoT-DNS'
option src 'iot'
option dest_port '53'
option proto 'tcpudp'
option target 'ACCEPT'
# DHCP vom IoT-VLAN erlauben
config rule
option name 'Allow-IoT-DHCP'
option src 'iot'
option dest_port '67-68'
option proto 'udp'
option target 'ACCEPT'
# HTTPS-Zugriff auf LuCI aus dem LAN
config rule
option name 'Allow-LuCI-HTTPS'
option src 'lan'
option dest_port '443'
option proto 'tcp'
option target 'ACCEPT'
Nach Änderungen an der Firewall-Konfiguration muss der Firewall-Dienst neu gestartet werden:
uci commit firewall
service firewall restart
7. Nützliche Pakete
Das OpenWRT-Paketrepository bietet eine Vielzahl nützlicher Pakete für Heimnetzwerke. Hier sind einige
besonders empfehlenswerte Pakete mit Installationsbeispielen.
7.1 adblock – Werbung und Tracking netzwerkweit blockieren
Das Paket adblock blockiert Werbe- und Tracking-Domains auf DNS-Ebene für alle Geräte im
Netzwerk – ohne dass auf einzelnen Geräten Browser-Erweiterungen installiert werden müssen. Es unterstützt
zahlreiche Blocklisten (z. B. EasyList, StevenBlack, oisd) und lässt sich über LuCI komfortabel verwalten.
opkg update
opkg install adblock luci-app-adblock
# Dienst aktivieren und starten
service adblock enable
service adblock start
7.2 WireGuard – modernes VPN
WireGuard ist ein schlankes, performantes VPN-Protokoll mit einem minimalen Kernel-Modul. Es eignet sich
hervorragend für den Einsatz am Router, damit alle Geräte im Netzwerk den VPN-Tunnel nutzen können, ohne
dass auf jedem Gerät eine VPN-Client-Software nötig ist.
opkg update
opkg install wireguard-tools kmod-wireguard luci-app-wireguard
# Schlüsselpaar generieren
wg genkey | tee /etc/wireguard/privatekey | wg pubkey > /etc/wireguard/publickey
cat /etc/wireguard/privatekey
cat /etc/wireguard/publickey
# Interface in /etc/config/network anlegen
config interface 'wg0'
option proto 'wireguard'
option private_key 'PRIVATE_KEY_HIER_EINTRAGEN'
option listen_port '51820'
list addresses '10.100.0.1/24'
# Peer hinzufügen
config wireguard_wg0
option public_key 'PUBLIC_KEY_DES_PEERS'
option route_allowed_ips '1'
list allowed_ips '10.100.0.2/32'
7.3 sqm-scripts mit CAKE – Bufferbloat bekämpfen
Bufferbloat beschreibt das Problem übermäßiger Latenz durch zu große Puffer in
Netzwerkgeräten. Besonders beim gleichzeitigen Up- und Download steigen Ping-Zeiten massiv an, was
Videokonferenzen und Online-Spiele spürbar beeinträchtigt. Das Paket sqm-scripts mit dem
CAKE-Queuing-Algorithmus (Common Applications Kept Enhanced) löst dieses Problem durch intelligentes
Traffic-Shaping. CAKE priorisiert kleine Pakete (ACKs, DNS) und verhindert, dass ein einzelner Datenstrom
die gesamte Bandbreite monopolisiert.
Die Bandbreitenwerte für download und upload werden in kbit/s angegeben. Es
empfiehlt sich, die tatsächliche Leitungsgeschwindigkeit mit einem Tool wie fast.com zu messen
und dann ca. 90–95 % dieses Wertes einzutragen, damit CAKE die Kontrolle über die Warteschlange behält.
7.4 avahi-daemon – mDNS-Relay für VLANs
mDNS (Multicast DNS, RFC 6762) funktioniert standardmäßig nicht über VLAN-Grenzen hinweg, da
Multicast-Pakete nicht zwischen Subnetzen weitergeleitet werden. Das ist problematisch, wenn
Apple-Geräte (AirPlay, AirPrint), Chromecast oder andere mDNS-abhängige Dienste in verschiedenen VLANs
sitzen. Das Paket avahi-daemon mit aktivierter Reflect-Funktion leitet mDNS-Anfragen
zwischen den konfigurierten Interfaces weiter.
opkg update
opkg install avahi-daemon
# /etc/avahi/avahi-daemon.conf
[server]
use-ipv4=yes
use-ipv6=no
allow-interfaces=br-lan.1,br-lan.20
enable-reflector=yes
service avahi-daemon enable
service avahi-daemon start
7.5 collectd – System-Monitoring
Das Paket collectd sammelt Systemmetriken wie CPU-Auslastung, RAM-Verbrauch,
Netzwerktraffic und Temperaturen. Mit dem Paket luci-app-statistics werden die Daten
direkt in LuCI als Grafiken dargestellt, ohne dass ein externer Monitoring-Server benötigt wird.
Die gesammelten Daten werden standardmäßig unter /tmp/rrd/ als RRD-Dateien gespeichert.
Da /tmp im RAM liegt, gehen die Daten bei jedem Neustart verloren. Für persistente
Aufzeichnung kann das Datenverzeichnis auf einen USB-Datenträger umgeleitet oder via
collectd-mod-network an einen externen InfluxDB- bzw. Graphite-Server gesendet werden.
7.6 Fazit
OpenWRT ist weit mehr als ein einfacher Router-Ersatz. Es ist eine vollständige Linux-Plattform für
Netzwerkhardware, die – einmal eingerichtet – deutlich mehr Kontrolle, Transparenz und Sicherheit
bietet als jede Consumer-Firmware. Mit DSA-basierter VLAN-Konfiguration, modernem nftables-Firewall-Backend,
WireGuard-VPN und Werkzeugen wie CAKE für Bufferbloat-Kontrolle deckt OpenWRT nahezu alle Anforderungen
eines anspruchsvollen Heimnetzwerks ab. Der Einstieg erfordert Einarbeitung in UCI und DSA-Konzepte –
wer jedoch einmal damit vertraut ist, wird kaum zur Hersteller-Firmware zurückwechseln wollen.