OpenWRT

1. Einführung

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.
# Erstes SSH-Login
ssh root@192.168.1.1

# Root-Passwort setzen
passwd

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.

4.1 Grundlegende Interface-Konfiguration

# /etc/config/network (Auszug)

config interface 'loopback'
    option device 'lo'
    option proto 'static'
    option ipaddr '127.0.0.1'
    option netmask '255.0.0.0'

config interface 'lan'
    option device 'br-lan'
    option proto 'static'
    option ipaddr '192.168.1.1'
    option netmask '255.255.255.0'

config interface 'wan'
    option device 'eth0'
    option proto 'dhcp'

4.2 UCI-Kommandos

# 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'

5.2 DHCP für das IoT-VLAN einrichten

# /etc/config/dhcp (Auszug)

config dhcp 'iot'
    option interface 'iot'
    option start '100'
    option limit '150'
    option leasetime '12h'

5.3 Änderungen anwenden und prüfen

# 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.

opkg update
opkg install sqm-scripts luci-app-sqm kmod-sched-cake

# Konfiguration in /etc/config/sqm:
config queue 'wan'
    option enabled '1'
    option interface 'eth0'
    option download '90000'
    option upload '9000'
    option qdisc 'cake'
    option script 'piece_of_cake.qos'

service sqm enable
service sqm start

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.

opkg update
opkg install collectd \
    collectd-mod-cpu \
    collectd-mod-memory \
    collectd-mod-interface \
    collectd-mod-load \
    collectd-mod-rrdtool \
    luci-app-statistics

service collectd enable
service collectd start

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.