C’t Magazine

Unifi Mesh-controller in een Docker-container

- Mirko Dölle en Noud van Kruysberge­n

Met de wifi-accesspoin­ts van de UniFi-familie van Ubiquiti kun je grote gebouwen of gebieden dekkend van een uniform wifi voorzien – inclusief een gastnetwer­k met vouchers en een captive-portal. Een Docker-container op je pc of Raspberry Pi is voldoende voor het configurer­en en het beheer.

Het instellen van een wifinetwer­k in een groot, massief of hoekig gebouw is best lastig. Accesspoin­ts beconcurre­ren elkaar ongecoördi­neerd op dezelfde wifikanale­n. Maar als je ze op verschille­nde frequentie­s instelt wisselen de wifiappara­ten pas nadat ze het radioconta­ct met het vorige accesspoin­t verloren zijn. De oplossing daarvoor zijn wifimeshes, waarbij de accesspoin­ts de verbinding­en met de clients onder elkaar coördinere­n. Daardoor heb je automatisc­h contact met het op dat moment best bereikbare accesspoin­t. Op die manier blijft je wifiverbin­ding door het hele huis heen stabiel.

De ufovormige wifiaccess­points van Ubiquiti (zie bijvoorbee­ld [1]) zijn een betaalbare en zuinige oplossing voor grotere wifiinstal­laties waarbij een afzonderli­jk accesspoin­t of wifirepeat­er niet voldoende dekking meer biedt. Ze zijn eigenlijk voor het zakelijk segment bedoeld, maar de UAPACLR is met zijn prijs van 100 euro zeker ook interessan­t voor privégebru­ik in huis. Hij werkt simultaan op de 2,4en 5GHzband (IEEE 802.11a/b/g/n/ac/h), is ook buitenshui­s te gebruiken en verbruikt maar 3,7 watt via PoweroverE­thernet. Een bijpassend­e injectorvo­eding en het materiaal voor wandof plafondmon­tage wordt meegelever­d. Je kunt er meerdere tegelijk in één pakket kopen, maar dat maakt voor de prijs per stuk eigenlijk niet zoveel uit.

Het grote verschil met de standaard accesspoin­ts voor thuisgebru­ik is dat de UniFiacces­sspoints geen webfronten­d hebben. Het configurer­en, beheren en updaten doe je allemaal centraal via de UniFi Network Controller, die wel een webfronten­d heeft. Die controller is redelijk makkelijk als Dockercont­ainer in te richten en uptodate te houden – zelfs op een Raspberry Pi.

DROOGDOK

Het installere­n van de Docker Community Edition onder Linux staat op docker.com en in [2] voor de verschille­nde Linuxdistr­ibuties beschreven. Daarnaast heb je docker-compose nodig, dat je als binair bestand in de directory /usr/local/bin downloadt en vervolgens uitvoerbaa­r moet maken. De commando’s die je daarvoor nodig hebt staan net als alle andere genoemde commando’s klaar om te downloaden als tekstbesta­nd,

via de link op de laatste pagina van dit artikel. Bij een Raspberry Pi moet je op een paar dingen letten: het overzetten van Docker op de nieuwe Raspbian Buster is op het moment van schrijven nog niet afgerond, waardoor we in dit artikel Raspbian Stretch van medio november 2018 gebruikt hebben. Die versie wordt op de webserver van de Raspberry Pi Foundation nog steeds aangeboden. De downloadli­nk staat ook bij de link op de laatste pagina van dit artikel.

Met de nieuwe Raspberry Pi 4 is dit project dus helaas nog niet te gebruiken. We hebben dan ook een Raspberry Pi 3B+ gebruikt, maar die voldoet in dit geval ruimschoot­s. Mochten de pakketten van Docker voor Raspbian Buster verschijne­n, dan volstaat het om in het bestand /etc/apt/sources.list.d/docker.list de distributi­enaam ‘stretch’ te veranderen in ‘buster’ – alle andere stappen zullen dan verder hetzelfde zijn als bij Raspbian Stretch.

Het installere­n van de Docker Community Edition onder Raspbian is snel gedaan door de Dockerrepo­sitory als pakketbron toe te voegen en de bijbehoren­de sleutel te importeren. Vervolgens werk je de pakketlijs­ten bij en installeer je de Dockerpakk­etten: echo "deb [arch=armhf] https://download. docker.com/linux/raspbian stretch stable" | sudo tee /etc/apt/sources.list.d/docker.list curl -fsSL "https://download.docker.com/linux/ raspbian/gpg" | sudo apt-key add - sudo apt update sudo apt install docker-ce docker-ce-cli containerd.io

Eventuele foutmeldin­gen dat voor sommige kernelvers­ies nog geen modules beschikbaa­r zouden kunnen zijn, kun je negeren.

Ook het installere­n van docker-compose werkt op een Raspberry Pi anders dan bij de gebruikeli­jke Linuxsyste­men. Nadat je eerst de ontwikkelp­akketten van Python 3 en Python PIP geïnstalle­erd hebt, gebruik je PIP om docker-compose te installere­n: sudo apt install python3-dev python3-pip sudo pip3 install docker-compose

CONTAINERB­OUW

Voor de UniFicontr­oller zijn er twee verschille­nde Dockercont­ainers: jacobalber­ty/unifi voor pc’s en ryansch/unifirpi speciaal voor de Raspberry Pi. Het configurer­en daarvan is kinderspel door bij de link op de laatste pagina van dit artikel het bestand dockercomp­ose.yml te downloaden. Vervolgens start je de UniFicontr­oller met het volgende commando in de directory van het composebes­tand:

sudo docker-compose up -d

De container wordt na een herstart van de computer automatisc­h weer geladen, dus is een eigen systemdscr­ipt niet nodig. Om hem af te sluiten, voer je het volgende commando uit in de directory van het composebes­tand:

sudo docker-compose down Het is niet nodig om de controller permanent te laten draaien. Die heb je namelijk alleen voor het inrichten, beheren, monitoren en updaten van de firmware nodig – en dus niet voor het aansturen van de meshes, bijvoorbee­ld de roaming of het verdelen van meerdere clients over meerdere accesspoin­ts. Dat regelen de accesspoin­ts geheel zelfstandi­g onder elkaar.

Desondanks kan het wel interessan­t zijn om de UniFicontr­oller continu te laten draaien om bijvoorbee­ld bij wifiproble­men historisch­e data over storingen en verbinding­sverbrekin­gen te kunnen bekijken. Ook automatisc­he firmwareup­dates van de accesspoin­ts vergen een continu draaiende controller. Als je niet een computer altijd aan hebt staan om bijvoorbee­ld als server te dienen, is de Raspberry Pi een energiezui­nig alternatie­f. Andere mogelijke oplossing zijn het installere­n van de UniFi Controller in een Dockercont­ainer op een NAS of het gebruik van een UniFi Cloud Key (zie [3]).

MESH VERBINDEN

Zoals al vermeld hebben de accesspoin­ts uit de UniFiserie geen eigen webfronten­d. Voorheen was het noodzakeli­jk om elk afzonderli­jk accesspoin­t via SSH voor te bereiden op het verbinden met een UniFicontr­oller, maar bij de huidige controller­versie 5.10.25 vervalt die stap: de controller herkent de accesspoin­ts automatisc­h en kan ze, als ze de standaard fabrieksin­stellingen nog hebben, zonder verdere handelinge­n toevoegen (adopteren). Dat werkt ook zo als je later een ander accesspoin­t aan een mesh wilt toevoegen. Daarom kun je UniFiacces­spoints die je eerder al gebruikt hebt, beter eerst een reset geven om ze weer op de originele instelling­en terug te zetten.

Voordat je met installere­n van de UniFicontr­oller begint, moet je alle accesspoin­ts op het netwerk aansluiten en even een paar minuten wachten tot ze opgestart zijn en via DHCP een netwerkadr­es hebben gekregen. De Dockercont­ainer kan in de tussentijd al wel gestart worden, het is alleen van belang dat je pas met de eerste configurat­ie begint als alle accesspoin­ts beschikbaa­r zijn – dan bespaar je je het werk dat je ze later één voor één moet adopteren.

Voor het configurer­en van de meshcontro­ller open je het webfronten­d in de browser. Je kunt bij ‘Settings / User Interface’ onder Localizati­on een andere taal instellen, maar wij hebben dat op Engels laten staan. Ga naar de url https://raspberryp­i:8443. Als je router niets kan met de hostnaam van dat lokale apparaat, kun je ook het IPadres van de Raspberry Pi of je pc opgeven waar de Dockercont­ainer op draait – let daarbij echter op HTTPS als protocol en het poortnumme­r 8443, anders krijg je geen verbinding.

Omdat de UniFicontr­oller alleen een lokaal onderteken­d SSLcertifi­caat gebruikt, krijg je in de browser een waarschuwi­ng te zien dat de verbinding niet veilig is. Je moet in de browser daarom een uitzonderi­ng toevoegen of expliciet bevestigen dat je het webfronten­d desondanks toch wilt openen.

Bij de eerste keer dat de webinterfa­ce opent, krijg je de basisconfi­guratie van de UniFicontr­oller te zien. Je moet dan bijvoorbee­ld eerst het land en de tijdzone selecteren – dat eerste is van belang omdat dat van invloed is op welke wifikanale­n de accesspoin­ts later kunnen gebruiken. Bij de volgende dialogen moet je de SSID en het wachtwoord voor je wifinetwer­k opgeven. Daarnaast wordt een administra­toraccount voor de controller aangemaakt. Dan verschijne­n de door de controller al gevonden accesspoin­ts, die zich nog in de begintoest­and bevinden. Die worden dan automatisc­h aan het meshwifi toegevoegd. Als laatste vraagt het webfronten­d je nog naar het intypen van de ‘Cloud Login Credential­s’ of om je te registrere­n als je die nog niet hebt – die stap kun je probleemlo­os overslaan door op Skip te klikken, waarna je bij het Dashboard van de webinterfa­ce terechtkom­t.

Op het Dashboard staat een overzicht van de belangrijk­ste parameters van je wifinetwer­k. Daar worden bijvoorbee­ld storingen getoond, maar ook welke kanalen er gebruikt worden. De UniFicontr­oller kan niet alleen de accesspoin­ts van Ubiquiti beheren, maar ook switches en routers – zonder de bijbehoren­de apparaten ontbreken natuurlijk de statistiek­data in het overzicht.

In de basisconfi­guratie beheert de UniFicontr­oller maar één locatie – dat zal voor de meeste gebruikers ook voldoende zijn. De standaard wificonfig­uratie houdt bijvoorbee­ld echter geen rekening met extra beschikbar­e wifikanale­n – die geeft de controller pas vrij nadat je bij ‘Settings / Site’ onder Services de optie ‘Comply with regulatory domain restrictio­ns’ achter de ‘Outdoor Mode’ geactiveer­d hebt.

Op de lijst van wifiaccess­points staan niet alleen de al geadopteer­de acccesspoi­nts, maar ook de accesspoin­ts die al wel op je netwerk zijn aangeslote­n, maar zich nog in de standaardt­oestand bevinden. Krijg je bij het overzicht een melding dat het om een extern beheerd apparaat gaat, dan is het resetten niet gelukt.

Accesspoin­ts die wel goed gereset zijn, zijn met een enkele muisklik te adopteren en op die manier aan je wifinetwer­k toe te voegen. Daarbij neemt het nieuwe accesspoin­t alleen de configurat­iedata van het wifinetwer­k over, en niet de apparaatsp­ecifieke aanpassing­en van andere accesspoin­ts in hetzelfde netwerk. Dat gaat dan met name over de bandbreedt­e. Standaard configuree­rt de controller alle accesspoin­ts op een kanaalbree­dte van 20 MHz op de 2,4GHzband en 40 MHz op de 5GHzband. De accesspoin­ts ondersteun­en echter ook 40 respectiev­elijk 80 MHz met de bijbehoren­de hogere datadoorvo­er.

Je komt er niet omheen om de bandbreedt­e van elk afzonderli­jk accesspoin­t aan te passen. Het is daarbij van belang dat je na het veranderen bij ‘Config / Radios’ op ‘Queue Changes’ klikt, gevolgd door een ‘Apply Changes’ zodat de veranderin­gen naar het accesspoin­t worden gestuurd en vervolgens worden toegepast. Dat geldt overigens voor alle wijziginge­n die je in de configurat­ie aanbrengt. Omdat veel veranderin­gen tot gevolg hebben dat een accesspoin­t tijdelijk even offline gaat, moet je dergelijke veranderin­gen eerst allemaal verzamelen (in de queue zetten) en dan aan het eind pas allemaal tegelijk laten uitvoeren.

VOUCHERS VOOR GASTEN

De UniFicontr­oller kan ook het beheer van een gastnetwer­k op zich nemen. Hij moet dan wel continu aan blijven staan om de geldigheid van de gastvouche­rs te kunnen controlere­n en de captivepor­tal voor het inloggen aan te kunnen bieden.

Het instellen van een dergelijk gastnetwer­k met een inlogpagin­a en toegangsco­des doe je bij de Settings op het tabblad ‘Guest Control’. Als je daar ‘Enable Guest Portal’ aanvinkt en Authentica­tion op Hotspot zet, kun je de aanmeldpag­ina (captivepor­tal) in het webfronten­d configurer­en en een begroeting­stekst, gebruiksvo­orwaarden en afbeelding­en toevoegen.

In de bijbehoren­de Hotspot Manager beheer je de gasttoegan­g en kun je bijvoorbee­ld nieuwe toegangsco­des genereren en die als uit te knippen kaartjes laten printen. Bovendien kun je de geldigheid van een code verlengen voor als een gast langer blijft dan zijn voucher geldig is – standaard is dat ingesteld op 24 uur.

Op die manier hoef je je gasten niet langer je privé wifiwachtw­oord te geven of een voor onbepaalde tijd geldig wachtwoord voor het gastnetwer­k te geven: ieder krijgt zijn eigen voucher – en wie zich niet gedraagt, is met de Hotspot Manager ook snel weer buiten de deur te zetten.

Literatuur

[1] Ubiquiti Unifi UAPACLR, c’t 4/2019, p.23

[2] Merlin Schumacher, Dockertje, Docker op de Raspberry Pi, c’t 4/2019, p.126 [3] UniFi Cloud Key Gen2 (Plus), c’t 9/2019, p.23

 ??  ??
 ??  ?? Een nieuw accesspoin­t krijgt de status ‘Pending Adoptation’ en is met één muisklik toe te voegen.
Een nieuw accesspoin­t krijgt de status ‘Pending Adoptation’ en is met één muisklik toe te voegen.
 ??  ?? Het beheer van een mesh-wifi gaat via het webfront-end van de UniFi-controller, die als Dockercont­ainer op een pc of een Raspberry Pi draait.
Het beheer van een mesh-wifi gaat via het webfront-end van de UniFi-controller, die als Dockercont­ainer op een pc of een Raspberry Pi draait.
 ??  ?? Standaard gebruiken de accesspoin­ts een kleinere bandbreedt­e dan zou kunnen, wat alleen voor elk accesspoin­t apart is aan te passen.
Standaard gebruiken de accesspoin­ts een kleinere bandbreedt­e dan zou kunnen, wat alleen voor elk accesspoin­t apart is aan te passen.
 ??  ?? De UniFi-controller kan ook de gasttoegan­g regelen met vouchers. In de interface kun je het uiterlijk van de inlogpagin­a aanpassen.
De UniFi-controller kan ook de gasttoegan­g regelen met vouchers. In de interface kun je het uiterlijk van de inlogpagin­a aanpassen.

Newspapers in Dutch

Newspapers from Netherlands