WLAN zentral verwalten mit CAPsMAN

Wie man unter MikroTik RouterOS seine Access Points zentral steuert

In vielen Gebäuden ist ein einzelner Access Point heutzutage nicht mehr ausreichend. Insbesondere in großen Büros sind zur Abdeckung aller Räume mehrere Hotspots nötig. Wie man diese unter MikroTik RouterOS mittels CAPsMAN zentral steuert, das erfahrt ihr im folgenden Beitrag.

Wer sich noch nicht mit RouterOS befasst hat, dem empfehle ich meine Einstiegs-Serie zu dem Thema, um eine Grundkonfiguration vorzunehmen. Im Folgenden gehe ich davon aus, dass der Router eine funktionierende Anbindung ans Internet samt Firewall hat und DHCP- sowie DNS-Server korrekt eingerichtet sind.

Das Konzept

Grundsätzlich kann man eine ausreichende WLAN-Abdeckung auch dann herstellen, wenn man mehrere Access Points auf unterschiedlichen Kanälen, jedoch mit gleicher SSID und Passwort konfiguriert. Nachteil daran ist jedoch, dass es allein am Client liegt, mit welchem WLAN er sich verbindet und der Übergang (Handover) zwischen den einzelnen Systemen nicht immer problemlos funktioniert.

Das hier beleuchtete Konzept sieht eine Unterteilung in den eigentlichen Manager (CAPsMAN) und die einzelnen Access Points (CAP) vor. Die Access Points sind mehr oder weniger „dumme“ Endgeräte, die auch komplett ohne Vorkonfiguration an den Manager angeschlossen werden können. Über diesen werden alle WLAN-relevanten Funktionen und Parameter konfiguriert. Die Verbindung läuft dabei auf Layer2-Ebene ab, behelfsweise ist aber auch eine IP-basierte Anbindung via Layer3 möglich, beispielsweise über verteilte Standorte hinweg.

Wichtig zu wissen ist, dass man damit nicht sämtliche Einstellungen der Access Points vornimmt – die Konfiguration der Pakete, die Einrichtung der Firewall oder das Anlegen von Benutzern fällt gerade nicht in den Aufgabenbereich. Der Dienst ist ausschließlich für WLAN-relevante Funktionen verantwortlich, für die gleichzeitige Massenkonfiguration vieler Router gibt es andere Tools.

CAPsMAN hat das Ruder übernommen
CAPsMAN hat das Ruder übernommen

Ein auf CAP geschalteter Access Point sucht sich im Netzwerk einen entsprechenden Manager, erhält ein eigenes Zertifikat und seine WLAN-Einstellungen werden ab dann zentral verwaltet – eine manuelle Einstellung der WLAN-Parameter am Access Point ist nicht mehr möglich (siehe im Bild oben den Hinweis managed by CAPsMAN).

Standardmäßig wird sämtlicher WLAN-Traffic über den Master ausgeleitet (CAPsMAN forwarding) – das erhöht zwar unter Umständen die Netzwerklast, sorgt aber dafür, dass die Clients in der Regel ohne große Unterbrechung zwischen den einzelnen Access Points wechseln, da diese als ein einziges System erscheinen. Alternativ und in dieser Anleitung unberücksichtigt gibt es auch noch die Möglichkeit des Local Forwarding, bei der der Traffic auf jedem Access Point direkt ausgeleitet wird – das bietet sich beispielsweise bei verteilten Standorten an.

Einstellungen am CAPsMAN-Manager

Standardmäßig deaktiviere ich in meinem Setup ungenutzte Pakete. Auf dem Router, der als Manager fungieren soll, ist das wireless-Paket jedoch zwingend erforderlich, auch wenn das Gerät selbst gar keine eigenen WLAN-Module verbaut hat. Im Zweifelsfall hilft ein

/system package enable wireless

gefolgt von einem

/system reboot

um die Funktionalität wieder zu aktivieren. Anschließend muss eine Bridge zwischen den Access Points und der kabelgebundenen Internetverbindung angelegt werden, beispielsweise mit

/interface bridge add name=br-cap
/interface bridge port add bridge=br-cap interface=ether2

Existiert eine Bridge, fordert RouterOS grundsätzlich, dass alle Dienste darauf und nicht mehr auf das entsprechende ether– oder wlan-Interface gebunden werden. Am sichersten geht das bei eingeschaltetem Safe Mode beispielsweise mit folgenden Befehlen:

/ip dhcp-server set interface=br-cap [find interface=ether2]
/ipv6 dhcp-server set interface=br-cap [find interface=ether2]

/ip address set interface=br-cap [find interface=ether2]
/ipv6 address set interface=br-cap [find interface=ether2]

/ipv6 nd set interface=br-cap [find interface=ether2]
/tool mac-server mac-winbox set interface=br-cap [find interface=ether2]

Obige Befehle eignen sich für meine Grundkonfiguration – je nach Einstellung müssen auch noch andere Dienste entsprechend angepasst werden. Auch die Firewall muss überarbeitet werden, da RouterOS die ether-Regeln bei Vorhandensein einer Bridge automatisch als ungültig markiert. Die folgenden zwei Zeilen können dabei helfen:

/ip firewall filter set in-interface=br-cap [find invalid]
/ipv6 firewall filter set in-interface=br-cap [find invalid]

Die Firewall sollte unbedingt händisch überprüft werden, um keine deaktivierten oder ungültigen Regeln im Systen zu haben – der oben genannte Befehl ist zugegebenermaßen ein sehr krüder Workaround, der durchaus auch mehr kaputtmachen kann als er repariert!

Danach sind die grundsätzlichen Voraussetzungen für CAPsMAN geschaffen. Wie eingangs schon erwähnt, arbeitet das System auf Basis von Zertifikaten. In Teil 2 meiner Einsteigs-Serie bin ich bereits auf die grundlegende Funktionsweise eingegangen – nun möchte ich zusätzlich eine neue Zertifizierungsstelle (CA) anlegen, um die Zertifikate fürs WLAN besser verwalten zu können. Das geht mittels:

/certificate add name="CAPsMAN CA" common-name="CAPsMAN CA" key-usage=key-cert-sign,crl-sign key-size=2048 days-valid=3650
/certificate add name="CAPsMAN" common-name="CAPsMAN" key-size=2048 days-valid=3650

/certificate sign "CAPsMAN CA" name="CAPsMAN CA"
:delay 5s;
/certificate sign "CAPsMAN" ca="CAPsMAN CA" name="CAPsMAN"

/certificate set "CAPsMAN CA" trusted=yes

Die Zeile mit :delay 5s; ist ein Workaround, denn wenn die Zertifikatserstellung im Skript zu lange dauert, dann quittiert RouterOS dies sonst mit einer Fehlermeldung beim Abarbeiten der weiteren Schritte.

Auf Basis dieser Zertifikate wird nun die eigentliche Instanz eingerichtet:

/caps-man manager set enabled=yes certificate="CAPsMAN" ca-certificate="CAPsMAN CA"
/caps-man manager interface set [find] forbid=yes
/caps-man manager interface add interface=br-cap disabled=no

Damit der Manager auch über die IP-Ebene auf Layer3 erreichbar ist, muss letztendlich noch die Firewall angepasst werden. In meinem Setup geht dies mit:

/ip firewall filter add chain=input action=accept in-interface=br-cap protocol=udp src-port=5246,5247 comment="accept CAPsMAN->LAN" place-before=[find comment="accept WinBox->LAN"]
/ip firewall filter add chain=input action=accept in-interface=br-cap protocol=udp dst-port=5246,5247 comment="accept LAN->CAPsMAN" place-before=[find comment="accept WinBox->LAN"]

/ipv6 firewall filter add chain=input action=accept in-interface=br-cap protocol=udp src-port=5246,5247 comment="accept CAPsMAN->LAN" place-before=[find comment="accept WinBox->LAN"]
/ipv6 firewall filter add chain=input action=accept in-interface=br-cap protocol=udp dst-port=5246,5247 comment="accept LAN->CAPsMAN" place-before=[find comment="accept WinBox->LAN"]

Auch hier wieder der Hinweis, dass die Firewall unbedingt händisch überprüft werden sollte!

Bevor jetzt jedoch die Access Points angebunden werden, muss noch ein so genanntes Konfigurationsset zu Provisionierung erstellt werden. Einen Überblick über die möglichen Einstellungen erhält man am einfachsten über die Weboberfläche oder mittels WinBox. Eine gute Basis sind folgende Einstellungen:

/caps-man configuration add name="buero" mode=ap ssid="Buero WLAN" country="germany" channel.band=2ghz-b/g/n datapath.bridge=br-cap datapath.client-to-client-forwarding=yes security.authentication-types=wpa2-psk security.encryption=aes-ccm security.group-encryption=aes-ccm security.passphrase="1234567890"

Das richtet ein Konfigurationsprofil namens „buero“ mit folgenden Parametern ein:

  • die SSID lautet Buero WLAN
  • die Sendeparameter werden auf die deutschen Regularien angepasst
  • der Access Point funkt im 2,4 GHz-Bereich mit 802.11 b/g/n
  • der Access Point wird auf die (vorhin angelegte) Bridge namens br-cap gebunden
  • Verbindungen der Clients untereinander sind erlaubt (in öffentlichen WLANS, beispielsweise bei Hotels oder Gaststätten, sollte diese Funktion deaktiviert werden)
  • als Verschlüsselung kommt WPA2-PSK mit AES zum Einsatz
  • das Passwort lautet 1234567890 (das sollte natürlich unbedingt geändert werden!)

Dieses Konfigurationsprofil muss nun noch auf die einzelnen Access Points angewendet werden, was über die so genannte Provisionierung möglich ist, die anhand der MAC-Adresse des WLAN-Moduls erfolgt. Einem Access Point können auch mehrere Konfigurationsprofile zugeordnet werden, beispielsweise für 2,4 und 5 GHz oder für Gast-WLANs. Die Provisionierung erfolgt dabei über einen Befehl wie

/caps-man provisioning add radio-mac=XX:XX:XX:XX:XX:XX action=create-enabled master-configuration="buero" name-format=prefix name-prefix=br-cap-ap1-

Damit wird:

  • der MAC-Adresse XX:XX:XX:XX:XX:XX
  • das Konfigurationsprofil buero zugewiesen
  • und das CAP-Interface mit dem Präfix br-cap-ap1- versehen

Einstellungen an den CAP-Access Points

Grundsätzlich benötigen die Access Points gar keine Voreinstellung, um für den Betrieb gerüstet zu sein. Viele Endgeräte lassen sich per Tastendruck zur automatischen Suche eines Managers im Netz bewegen, beispielsweise indem man den Reset-Taster für 10 Sekunden betätigt.

Ich nehme dennoch gerne eine Grundkonfiguration vor, um beispielsweise nicht benötigte Pakete zu deaktivieren. Wichtig ist – darüber bin ich am Anfang selbst gestolpert – dass am Access Point keine Bridge eingerichtet sein sollte, wie sie im Standalone-Betrieb eines Hotspots zum Einsatz kommt. Je nach genutzter MAC-Adresse, die sich durch die Reihenfolge der hinzugefügten Bridge-Schnittstellen ergibt, führt das unter Umständen zu Netzwerkschleifen, die ein korrektes Funktionieren verhindern.

Das eigentliche Aktivieren der CAP-Funktionalität geschieht im laufenden Betrieb ganz einfach mittels

/interface wireless cap set enabled=yes interfaces=wlan1 certificate=request discovery-interfaces=ether1 lock-to-caps-man=yes caps-man-certificate-common-names="CAPsMAN" static-virtual=yes

Der Access Point wird angewiesen, das wlan1-Interface per CAPsMAN zu konfigurieren, ein Zertifikat anzufordern und die kabelgebundene Verbindung ether1 für den Kontakt zum Manager zu verwenden. Um die „Übernahme“ durch einen anderen Manager zu verhindern, wird der Access Point zudem angewiesen, nur solche Zertifikate zu akzeptieren, die auf CAPsMAN lauten, dem weiter oben für den Manager vergebenen Namen. Analog kann der Befehl übrigens auch für wlan2 eingegeben werden, sofern der Access Points über mehrere Antennen bzw. Module verfügt.

Kurze Zeit später sollten im Log vom Access Point Hinweise auf die erfolgreiche Anbindung erscheinen. Das Log sieht man mittels

/log print where topics~"caps"

und die Ausgabe sieht beispielsweise so aus:

aug/25 18:54:26 caps,info CAP selected CAPsMAN meinrouter (XX:XX:XX:XX:XX:XX/4/0)
aug/25 18:54:26 caps,info CAP connected to meinrouter (XX:XX:XX:XX:XX:XX/4/0), CommonName ‚CAPsMAN‘
aug/25 18:54:26 caps,info CAP joined meinrouter (XX:XX:XX:XX:XX:XX/4/0)

Ausblick

Geschafft! Der Access Point wird jetzt erfolgreich mittels CAPsMAN verwaltet. Das konfigurierte WLAN sollte nun auf allen entsprechend provisionierten Access Points verfügbar sein.

Das System beherrscht dabei noch weitaus mehr Funktionalität, beispielsweise das zentrale Updaten aller Access Points. Doch das ist ein Thema für einen weiteren Beitrag…

Florian Effenberger

Autor: Florian Effenberger

Florian engagiert sich seit über 13 Jahren für freie Software und ist einer der Gründer der The Document Foundation, der Stiftung hinter LibreOffice

2 Gedanken zu „WLAN zentral verwalten mit CAPsMAN“

  1. Servus Florian,

    danke für den schnörkellosen Artikel.

    Ich werde die Vorgehensweise die Tage mal testen, sobald meine Mikrotik Access Points angekommen sind.

    LG
    Heiko

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht.