Mesh-WLAN mit OpenWRT

Mesh-WLAN mit OpenWRT

Grundsätzliches / Das Problem / Die Idee / Die Lösung

Abschnitt 1

Ich möchte in diesem Artikel erläutern, wie man ein Mesh-WLAN so aufbaut, dass man mit mehreren Routern eine große Fläche mit einer einzigen SSDI zuverlässig abdeckt. Interessant ist das Ganze für z.B. Hotels, größere Häuser und/oder Häuser mit Garten.

Bei mir zu Hause hatte ich bisher das Problem, dass meine drei Router (strategisch im Haus und in der Gartenhütte verteilt) jeweils ein eigenes WLAN bereit gestellt haben. Wenn mein Handy nun beim Betreten des Hauses mit dem ersten verfügbaren Router (SSID: WLAN01) Kontakt aufgenommen hat, bleibt das Mobiltelefon so lange mit diesem Netzwerk verbunden, bis das Signal absolut nicht mehr da ist, auch wenn ich bereits direkt neben dem zweiten Router (SSID: WLAN02) stehe. Das führt dazu, dass ich relativ oft keinen bzw. super-langsamen Internetzugang habe. Ich muss dann das WLAN am Handy manuell wechseln, oder bekomme Mails bzw. WhatsApp-Nachrichten vielleicht erst Stunden später.

Die SSIDs an den drei Routern auf Identische Werte zu setzen (wie es auch bei den einfachen Repeatern praktiziert wird) macht das Problem eigentlich nur noch schlimmer. So wird auf dem Handy zwar immer die Signalstärke der am nächsten liegenden Station angezeigt, jedoch bleibt das Verbindungsproblem das gleiche. Das Mobiltelefon bleibt mit dem ersten Router verbunden, so lange bis das Signal komplett abreißt. Erst dann springt das WLAN auf den neuen Router. Somit scheint man zwar immer gutes Netz zu haben, aber in Wirklichkeit hat man teilweise kein Netz und merkt es gar nicht.

Die Lösung muss also ein WLAN sein, in dem man sich bewegen kann, und in dem das mobile Gerät immer mit der besten Station verbunden ist. Somit merkt der Benutzer gar nicht, dass es überhaupt mehrere Stationen gibt und muss sich auch nur in ein einziges WLAN einwählen.

Die einfachste Lösung ist die Nutzung von AVM-Geräten, die Mesh-Networking in die Firmware ihrer Top-Geräte eingebaut haben. Das ist mir allerdings viel zu teuer und der Bastel-Faktor ist dabei natürlich auch viel zu klein 😉

Da ich mich seit Jahren mit alternativer OpenSource-Firmware für diverse Router beschäftige (dd-wrt und OpenWRT), ist meine Wahl auf OpenWRT gefallen. Mit folgenden Routern habe ich bereits erfolgreich ein Mesh-Netzwerk aufgebaut :

  1. TP-Link WR1043N Version 5 (einfachste Variante / nur 2.4GHz WLAN)
  2. TP-Link WR1043ND (bis Version 4 / wird nicht mehr produziert) (Router mit USB für Print- oder Fileserverfunktion und abnehmbaren Antennen / aber auch nur 2.4GHz WLAN)
  3. TP-Link Archer C7 A1750 (zwei USB-Ports, sowie 2.4GHz und 5GHz WLAN / etwas schickere Variante und für 75€-80€ immer noch erschwinglich)

Alle Geräte haben eine gute bis sehr gute Reichweite und besitzen jeweils 4 GBit LAN-Ports.

Ich setze die Router jeweils als Access-Points ein, somit muss jedes Gerät einen Anschluss an das verkabelte Netzwerk haben.

Los gehts …

Abschnitt 2

Ich erkläre die Einrichtung anhand von zwei TP-Link Archer C7 A1750 Routern, da dort beide WLAN-Typen (parallel) eingesetzt werden können. Die Einrichtung eines WR1043er-Routers kann das daraus abgeleitet werden. Ich gehe zu Beginn davon aus, dass es bereits ein funktionierendes Kabel-Netzwerk mit laufendem DHCP-Server und funktionstüchtigem Internetzugang gibt.
In meinem Fall läuft ein Netzwerk mit dem IP-Adressbereich 192.168.19.x/255.255.255.0 und mein Internetrouter vergibt per DHCP Adressen an alle angeschlossenen Geräte. Er selbst dient als Internetgateway und hat die Adresse 192.168.19.253.

Wenn die Router gekauft, ausgepackt und die Antennen angeschraubt sind, kann’s losgehen. Der erste Router wird an das vorhandene Netzwerk angeschlossen. Dazu bitte ein Netzwerkkabel an den blauen WAN-Port des Routers anschließen. Da andere Ende wird mit dem vorhandenen Netzwerk verbunden (per Switch oder direkt an den Gateway-Router / s.o.).

Der Rechner, der zum Einrichten genutzt werden soll, muss per LAN Kabel an einen der vier gelben Switch-Ports des Archer-Routers angeschlossen werden. Die Netzwerkkarte des Rechners muss seine IP-Adresse automatisch beziehen. Eine fest eingestellte IP-Adresse muss einige male geändert werden und ist somit nicht zu empfehlen (zumindest nicht für den Einrichtungsvorgang).

Nach dem ersten Einschalten des Routers (dauert 1-2 Minuten), erhält der Rechner eine Adresse aus dem Bereich 192.168.0.x. Der Router selbst ist über die Adresse 192.168.0.1 zu erreichen. Zu Beginn müssen wir die TP-Link-Firmware loswerden und durch die OpenWRT-Firmware ersetzen.
Diese gibt es für etliche Router in allen möglichen Auführungen im OpenWRT/LEDE-Projekt unter : https://lede-project.org/ – Downloads hier : https://downloads.lede-project.org/releases/ bzw. https://downloads.lede-project.org/snapshots

Wir benötigen folgende Datei : (Stand Februar 2018)
https://downloads.lede-project.org/snapshots/targets/ar71xx/generic/openwrt-ar71xx-generic-archer-c7-v4-squashfs-factory.bin

Bitte auf die Bezeichnung und Versionsnummer achten, da sonst u.U. eine falsche Firmware geflasht wird und der Router nicht mehr bootet.

In der TP-Link-Firmware (per Webbrowser auf http://192.168.0.1) nun die herunter geladene factory.bin-Datei flashen. Der Router startet danach automatisch neu (dauert wieder 1-2 Minuten) und hat dann die Adresse 192.168.1.1 ! … Also ggf. nachsehen, ob der Rechner auch eine Adresse aus dem 192.168.1.xer-Bereich erhalten hat.
Anschließend befindet sich die OpenWRT-Firmware auf dem Router. Allerdings ist in den meisten Fällen keine Grafische Oberfläche installiert, so dass wir über den Webbrowser keine Antwort erhalten. Das System lässt sich aktuell also nur über die Kommandozeile bedienen.

Abschnitt 3

Um das zu ändern müssen wir per SSH auf den Router zugreifen und das WebGUI und ein paar andere Software-Pakete auf dem Router installieren :

Dazu laden wir uns das kleine Programm PuTTY herunter und verbinden uns per SSH mit dem Router.

Der Loginname lautet ‚root‘. Ein Passwort ist noch nicht vergeben und wird somit auch nicht abgefragt.
Die Web-Oberfläche nennt sich ‚luci‘ und muss per ‚opkg‘-Befehl installiert werden. Dazu muss das opkg-System mit aktuellen Daten versorgt werden. Danach können Pakete installiert werden.
Da der Router über den WAN-Port mit dem Internet verbunden ist, konfiguriert sich die Schnittstelle (hoffentlich) automatisch und wir können Daten aus dem Internet laden.
Dazu bitte folgende Befehle auf der Kommandozeile ausführen :

opkg update
opkg install luci

Nun kann man per WebBrowser auf das OpenWRT-System zugreifen. Da das Mesh-System in dieser Anleitung aber nicht über die grafische Oberfläche installiert und eingerichtet werden kann, bleiben wir erst einmal in der Kommandozeile.
Im nächsten Schritt bereiten wir den Router auf das Mesh-System vor. Dazu muss ein Paket rausgeschmissen und ein paar weitere Pakte nachinstalliert werden :

opkg remove wpad-mini wpad-basic
opkg install wpad-mesh mc
reboot

Kurze Erläuterung : ‚wpad-mini‘ (bzw. neu neueren Versionen ‚wpad-basic‘) fliegt raus und wird quasi durch ‚wpad-mesh‘ ersetzt. Für das Meshing benötigen wir zusätzlich das Paket ‚authsae‘.  Das Paket ‚mc‘ (MidnightCommander) ist mein Lieblings-Filemanager (optional), mit dem man prima Dateien editieren, kopieren und/oder verschieben kann. Anschließend starte das Gerät durch den Befehl ‚reboot‘ neu.

Abschnitt 4

Jetzt nehmen wir erst einmal die Grundeinrichtung des WLANs am ersten Gerät vor. Dazu per Web-Frontend (Webbrowser : http://192.168.1.1) den Menüpunkt Network->Wireless aufrufen.
Dort gibt es bereits ein deaktiviertes WLAN mit Namen ‚OpenWrt‘, welches wir über ‚Enable‘ einschalten und anschließend nach unseren Wünschen anpassen können (SSID, Verschlüsselungsart, WLAN-Passwort etc.). Wichtig ist bei den Einstellungen, dass wir einen festen Kanal wählen (dieser darf nicht auf ‚auto‘) stehen. Bei Routern mit DUAL WLAN legen wir einfach für jedes Netz (2.4 & 5 GHz) jeweils ein Netzwerk mit unterschiedlichen SSIDs an.

Ein Druck auf ‚Save & Apply‘ speichert und übernimmt die Daten. Einem Test des WLANs (z.B. mit dem Handy) steht nicht im Wege und sollte nun durchgeführt werden.

Abschnitt 5

Da die Mesh-Konfiguration leider nicht über das Web-Frontend vorgenommen werden kann, müssen wir die Kommandozeile nutzen. Also zurück zur PuTTY-Konsole.
Die WLAN-Konfiguration wird in einer Textdatei abgespeichert, welche sich auf dem Router unter : /etc/config/wireless befindet. Um die Datei zu bearbeiten nehme ich den Text-Editor des Midnight-Commanders (es kann auch jeder andere Editor verwendet werden z.B. ‚vi‘) :

mcedit /etc/config/wireless

Der muss jetzt die Mesh-Konfiguration in folgender Art & Weise hinzugefügt werden :

config wifi-iface 'mesh'
 option network 'mesh'
 option device 'radio0'
 option mode 'mesh'
 option mesh_id 'mein.mesh'
 option encryption 'psk2/aes'
 option key 'MyMeshPassword'

Für jedes Netzwerk, welches im Mesh-Verbund laufen soll muss eine solche Konfiguration geschrieben werden. Meine Konfiguration / wireless-Datei für zwei WLAN Netzwerke sieht z.B. so aus :

config wifi-device 'radio0'
 option type 'mac80211'
 option channel '36'
 option hwmode '11a'
 option path 'pci0000:00/0000:00:00.0'
 option htmode 'VHT80'
 option country 'US'
 option legacy_rates '1'

config wifi-device 'radio1'
 option type 'mac80211'
 option channel '11'
 option hwmode '11g'
 option path 'platform/qca956x_wmac'
 option htmode 'HT20'
 option country 'US'
 option legacy_rates '1'

config wifi-iface 'default_radio0'
 option device 'radio0'
 option network 'lan'
 option mode 'ap'
 option ssid 'My5ouse'
 option wmm '0'
 option encryption 'psk2+ccmp'
 option key 'Mein5GHzPasswort'

config wifi-iface 'default_radio1'
 option device 'radio1'
 option network 'lan'
 option mode 'ap'
 option ssid 'Myhouse01'
 option wmm '0'
 option encryption 'psk2+ccmp'
 option key 'MeinGeheimesWLANPasswort'

config wifi-iface 'mesh'
 option network 'mesh lan'
 option device 'radio1'
 option mode 'mesh'
 option mesh_id 'housemesh'
 option encryption 'psk2/aes'
 option key 'meshpasswort'
 option mesh_fwding '1'

config wifi-iface 'mesh5'
 option network 'mesh5 lan'
 option device 'radio0'
 option mode 'mesh'
 option mesh_id 'housemesh5'
 option encryption 'psk2/aes'
 option key 'meshpasswort5'
 option mesh_fwding '1'

Über ‚option device‘ erfolgt die Zuweisung der Mesh-Konfiguration für das jeweile WLAN. Bei Routern mit z.B. nur 2.4GHz gibt es in der Konfiguration nur ‚radio0‘ und kein ‚radio1‘.
Die kursiv gedruckte Konfiguration habe ich unverändert gelassen. Diese wurde durch die Grundeinrichtung des WLANs vorgenommen und vom WebFrontend in die Date eingetragen.

Jetzt ‚F10‘ drücken, die Datei abspeichern und den Text-Editor verlassen. auf der Kommandozeile

reboot

eingeben und der Router startet neu.

Abschnitt 6

Der erste Router ist nun eingerichtet, aber ein paar Sachen müssen wir noch erledigen.
Im Moment baut der Router sein eigenes Netzwerk im Bereich ‚192.168.1.x‘ und routet die WLAN Anfragen über das bestehende Netzwerk in Internet. Das funktioniert zwar, aber eigentlich soll der Router lediglich als AccessPoint für das bestehende Netz arbeiten und keinerlei andere Funktionen übernehmen (wie z.B. DHCP). Außerdem möchte ich den Router als Gerät in meinem vorhandenen Netzwerk (192.168.19.x / siehe oben) ansprechen und ggf. Konfigurieren können, um diesen später vielleicht als File- oder Printserver benutzen zu können.
Folgendes muss also noch passieren :

  1. DHCP-Server ausschalten
  2. IP-Adresse des Routers anpassen
  3. WAN-Port so einstellen, dass er zum LAN Netzwerk gehört (damit gewinnen wir sogar noch einen zusätzlichen LAN-Anschluß)
  4. Router-Passwort vergeben (optional, aber empfohlen)

Damit man nicht ewig neue Adressen erhalten/einstellen muss empfehle ich Folgendes in genau dieser Reihenfolge zu tun :

1.) Über das Web-Frontend zu Network->Interfaces gehen. Dort alles bis auf LAN (grün) mit ‚Delete‘ entfernen.

2.) Bei LAN auf ‚Edit‘ klicken und dann unter IPv4 Adresse eine Adresse auch dem vorhandenen Netzwerk wählen. In meinem Fall in meinem Fall z.B. ‚192.168.19.240‘, und als ‚Gateway‘ und ‚custom DNS‘ den vorhandenen Router / bei mir : ‚192.168.19.253‘

3.) Im unteren Teil bzw in dem Reiter ‚DHCP-Server dann bei ‚DHCP Server‘ eben genau diesen ausschalten, indem bei ‚Disable DHCP for this interface.‘ angehakt wird.

4.) Im Reiter ‚Physical-Settings‘ den Haken bei ‚Enable STP‘ setzen um dem Router zu ermöglichen auch ohne LAN-Kabel Teil des Mesh-Netzwerkes zu werden. (Danke an Andy für den Tipp)

5.) ‚Save & Apply‘ klicken um die Einstellungen zu übernehmen. Bitte beachten, dass der Router nun quasi vom Internet abgetrennt ist, weil er über das WAN-Interface nicht mehr routen kann. Um wieder Zugriff zu haben, müssen wir den WAN-Port dem LAN zuordnen …

6.) Der WAN Port hängt momentan in der Luft und muss als LAN-Port konfiguriert werden. Damit ist der Router dann Teil des 19er-Netzwerkes. Dazu bitte Network->Switch im WebFrontend anwählen. Es gibt aktuell zwei VLANs. Das zweite wird nun nicht mehr benötigt und kann mit ‚Delete‘ entfernt werden. Im ersten VLAN-Abschnitt muss dann noch der WAN-Port auf ‚untagged‘ gestellt werden. Anschließend auf ‚Save & Apply‘ und alles ist gut.

7.) Um den Router noch gegen Manipulation aus dem eigene Netz zu sichern, kann jetzt noch unter System_>Administration ein Router Passwort vergeben werden.

Der erste Router ist jetzt komplett fertig eingerichtet und arbeitet als Mesh-Access-Point ohne weitere Funktion in unserem Netzwerk. Erreichbar ist er von überall aus dem Netz über die Adresse ‚192.168.19.240‘.

Abschnitt 7

Alle weiteren Router müssen exakt so wie oben beschrieben eingerichtet werden. Lediglich die IPv4-Adressen der Router sollten sich unterscheiden. Also z.B. so :

  1. Router : 192.168.19.240
  2. Router : 192.168.19.241
  3. Router : 192.168.19.242 etc.

Um die gesamte Konfiguration und die Tipperei nicht unnötig kompliziert zu machen, und vor allem um Tippfehler, die zu Nicht-Funktionieren führen können, zu vermeiden, empfehle ich eine einfache Kopie der Konfigurations-Daten.

Dazu kann man in der Web-Oberfläche des ersten Routers einfach unter ‚System->Backup / Flash Firmware‘ auf ‚Generate archive‘ klicken um die gesamte Konfiguration zu exportieren. Das dabei entstehende tar.gz-Paket muss dann später einfach auf alle anderen Router kopiert werden.

Da diese allerdings im Normalfall ja noch mit der TP-Link-Software laufen, muss man jeden Router vorher mit Hilfe  dieser Anleitung (bis einschließlich Abschnitt 4) preparieren, bis man über ‚System->Backup / Flash Firmware‘ ‚Restore backup‘ die Konfigurationsdatei des ersten Routers einspielen kann.
Zu beachten ist, dass nach erfolgreichem Backup-Restore der neue Router die gleiche-IP-Adresse wie der erste Router bekommt. Dies kann man umgehen, indem man vor dem Restore-Vorgang dem ersten Router eine andere IP-Adresse gibt, oder den ersten Router so lange abklemmt, bis der neue Router eine Adressänderung erfahren hat.

Ende

Bei mir laufen aktuell drei Archer C7 A1750 Version 4 als Mesh-Netzwerk und decken ein Einfamilienhaus und einen weitläufigen Garten ab. Da nicht alle Geräte das 5GHz-Netz unterstützen, habe ich das 2.4Ghz auch in Berieb. Die Netzwerke laufen jeweils als Mesh und ohne die nervigen Abbrüche bzw. Situationen, in denen ich kein Netzwerk habe.

Viel Spaß damit !

9 thoughts on “Mesh-WLAN mit OpenWRT

  1. Guten Abend,

    Du hast eine tolle Anleitung geschrieben und ich freue mich, das nächste Woche auszuprobieren. Eine Frage noch: hast Du die Router alle über Kabel an Dein Netz angeschlossen oder hast Du den ein oder anderen nur als WiFi Bridge?

    1. Hallo !
      Ich habe alle Router per Kabel angeschlossen. Als Repeater müsste man noch ein weiteres (verstecktes) Kommunikations-WLAN-Netzwerk einrichten.
      Das ist prinzipiell bestimmt möglich, aber für meine Anwendung nicht nötig und sicherlich auch nicht ‚mal eben so‘ gemacht. Viel Erfolg !

      1. Bin zwar bisschen spät bei der Party, aber das stimmt nicht ganz.
        Das Mesh Point-Netzwerk ist schon der versteckte Kommunikation-Kanal auf Layer2.
        Der muss nur noch auf die „Lan“-Bridge mit drauf geschalten werden. (STP aktivieren!)

        das bedeutet.im Bsp oben
        config wifi-iface ‚default_radio1‘
        option device ‚radio1‘
        option network ‚lan‘

        config wifi-iface ‚mesh‘
        option network ‚mesh lan‘ <— dann wird es gebridged
        option device 'radio1'
        option mode 'mesh'

        Man kann dann im laufenden Betrieb das Netzwerkkabel ziehen und der Meshpoint ist nach einigen Sekunden wieder erreichbar, wenn die Bridge den neuen Pfad über Mesh gelernt hat.
        Wenn man das Kabel verbindet, nutzt die Bridge dank STP wieder den kürzeren Weg..

        Ich habe einen TP-Link WA860RE (4MB Flash) so mesh-fähig bekommen mit 18.06 ohne luci aber dafür mit wpad-mesh-wolfssl

        Übrigens ist die Encryption ab 19.07 'sae' und nicht mehr 'psk2/aes'

        1. Hallo Andy … bin auch etwas spät dran 😉

          Also … es ist genau wie Du geschrieben hast. Im LAN-Interface ‚STP‘ aktivieren und dann in der Config-Datei /etc/config/wireless im Wifi-Interfae ‚mesh‘ -> option network ‚mesh lan‘ einstellen.

          Natürlich senkt das den Durchsatz, aber man kann sein Mesh auch an Orte bringen, an denen kein LAN-Kabel liegt .

          TOP ! Danke.

  2. Hi Jayzon,

    super Tutorial, so habe ich es bei mir auch hinbekommen. Liebem Dank dafür.
    Ein paar Dinge würden mich noch interessieren, ob du das evtl. schon mal in Betracht gezogen, vielleich sogar getestet hast.

    – Muss man zwingend 2 Mesh Netzwerke haben, sprich eins auf 2,4 GHz und eins auf 5 GHz oder könnte es nicht reichen ein Roaming Mesh nur unter 2,4 GHz zu haben und 5GHz Roaming funktioniert trotzdem?

    – Hast du schon mal mit 802.11r (fast BSS transition) gespielt. Das hat mittlerweile sogar direkte Unterstützung in LUCI (unter Wireless Security in den WLAN Settings)

    Leiebn Dank für deine Gedanken und Infos dazu.

    1. Hi. Das mit den zwei Mesh-Netzwerken kann man auch auf eins reduzieren. Da hast Du wohl recht. Funktioniert natürlich auch wunderbar.

      Die ‚fast BBS trasition‘ habe ich mir angesehen, aber bis jetzt leider keinerlei Erfolg verzeichnen können. Wenn das funktioniert, wäre meine Vorgehensweise überflüssig. Ich schaue mir das bei Gelegenheit mal an.

Schreibe einen Kommentar