Installation, Bereitstellung und Betrieb von einem Ubiquiti Unifi Controller im Freifunk Netz

Wir setzen an diversen Stellen manchmal die Unifi Geräte in der AC-Version ein. Diese haben aktuell noch keine Unterstützung für Gluon, d.h. wir müssen die Geräte mit der Stock Firmware benutzen. Die Geräte sind selbstständig nicht nutzbar, sondern brauchen eine Konfiguration per Unifi Controller. Diesen Controller kann man entweder in Form von einem “Cloud Key” von Ubiquiti selbst kaufen oder auf einem PC/Server/VM installieren. Die Software selbst gibt es gratis, steht eine Hardware oder eine VM zur Verfügung, kann sie kostenfrei genutzt werden.

Wir hatten erst geplant, an dem jeweiligen Standort einen Raspberry Pi als Unifi Controller zu verwenden. Dies hätte aber dazu geführt, dass jeweils Pis benötigt werden und diese natürlich auch Geld kosten. Ich habe mir dann überlegt ob es nicht möglich wäre, den Controller zentral auf einer VM im Freifunk Netz zu betreiben. Nach ein bisschen probieren und überlegen läuft dies nun auch final, und bisher läuft es super. Da ein paar Abhängigkeiten bestehen, hier eine Erklärung der Installation zum nachmachen 🙂

Der Ort der Installation

In unserem Fall wollte ich die Software nicht auf einem unserer Supernodes online bringen, sondern als eigene VM auf einem unserer Hardware Hosts. Da es sich um ein eigenes System handelt, werden Verbindungen zu den Supernodes benötigt, damit der Controller mit im Batman Netz hängt und die Geräte sehen kann. Nach einer Grundinstallation von Ubuntu in der aktuellen Version und der Installation der Unifi Software beginnt die Anbindung damit, dass L2TP Tunnel zu den Supernodes erstellt werden.

Die Anbindung an die Supernodes

Da wir auf einem Supernode mehrere Instanzen betreiben, wird pro Instanz eine eigene Verbindung benötigt. Damit ist sichergestellt, das wir nur einen einzelnen Controller brauchen und nicht einen pro Instanz / Netzwerk. Hier ein Auszug aus der interfaces-Datei. Wir haben sechs Instanzen, also sechs Verbindungen untereinander. Auf der Gegenseite muss natürlich jeweils auch eine Konfiguration gemacht werden.

### Gateway1
auto <Name>
iface <Name> inet6 manual
  pre-up ip l2tp add tunnel tunnel_id <ID> peer_tunnel_id <ID> encap ip local <localIP> remote <remoteIP> ; exit 0
  pre-up ip l2tp add session tunnel_id <ID> session_id <ID> peer_session_id <ID> name gw1-<Name> ; exit 0
  pre-up ip l2tp add session tunnel_id <ID> session_id <ID> peer_session_id <ID> name gw1-<Name> ; exit 0
  pre-up ip l2tp add session tunnel_id <ID> session_id <ID> peer_session_id <ID> name gw1-<Name> ; exit 0
  pre-up ip l2tp add session tunnel_id <ID> session_id <ID> peer_session_id <ID> name gw1-<Name> ; exit 0
  pre-up ip l2tp add session tunnel_id <ID> session_id <ID> peer_session_id <ID> name gw1-<Name> ; exit 0
  pre-up ip l2tp add session tunnel_id <ID> session_id <ID> peer_session_id <ID> name gw1-<Name> ; exit 0
  post-up ip link set dev gw1-<Name> mtu 1346
  post-up ip link set dev gw1-<Name> mtu 1346
  post-up ip link set dev gw1-<Name> mtu 1346
  post-up ip link set dev gw1-<Name> mtu 1346
  post-up ip link set dev gw1-<Name> mtu 1346
  post-up ip link set dev gw1-<Name> mtu 1346
  post-up ip link set up dev gw1-<Name>
  post-up ip link set up dev gw1-<Name>
  post-up ip link set up dev gw1-<Name>
  post-up ip link set up dev gw1-<Name>
  post-up ip link set up dev gw1-<Name>
  post-up ip link set up dev gw1-<Name>
  post-up batctl -m <BatmanInterface> if add gw1-<Name>
  post-up batctl -m <BatmanInterface> if add gw1-<Name>
  post-up batctl -m <BatmanInterface> if add gw1-<Name>
  post-up batctl -m <BatmanInterface> if add gw1-<Name>
  post-up batctl -m <BatmanInterface> if add gw1-<Name>
  post-up batctl -m <BatmanInterface> if add gw1-<Name>
  post-down ip l2tp del tunnel tunnel_id <ID> peer_tunnel_id <ID> encap ip local <localIP> remote <remoteIP>

Installation von Batman

Damit wir Batman überhaupt nutzen können, müssen wir Batman erst einmal installieren und das entsprechende Modul beim Start des Servers laden. Ich gehe hier immer so vor, dass ich das ensprechende Paket von der Webseite herunterlade und kompiliere. Dort finden sich auch die entsprechenden Dokus zur Installation.

Erstellung der benötigten Interfaces und Bridges

Damit unser Server eine eigene IP in jedem Subnetz hat, über die der Controller mit dem Unifi AP kommunizieren kann, brauchen wir die folgende Konfiguration. Auch hier ein Beispiel für die erste Instanz, für jede weitere Instanz wird ein weiterer Block mit der Konfiguration benötigt:

### Instanz
## Mesh-Bridge
brctl addbr <BridgeInterface>
ip addr add <IP>/20 broadcast <Broadcast> dev <BridgeInterface>
ip link set dev <BridgeInterface> up

## Batman
ip link add dev <BatmanInterface> type batadv
batctl -m <BatmanInterface> it 5000
batctl -m <BatmanInterface> bl 1
ip link set dev <BatmanInterface> up
echo 120 > /sys/class/net/<BatmanInterface>/mesh/hop_penalty
brctl addif <BridgeInterface> <BatmanInterface>

Test der Verbindung

Wenn nun die Tunnel eingerichtet und gestartet sind sollte der Unifi Controller die Gateways auf der internen Adresse erreichen können. Weiterhin sollte der Controller an sich aufrufbar sein. Läuft alles, kann die Anbindung von dem ersten Unifi AP erfolgen.

Anbindung von Unifi Geräten

Normalerweise muss ein Unifi Gerät nur im Netzwerk auftauchen, damit der Controller das Gerät sehen kann und es adoptieren kann. Da die Freifunk-Router aber diese Anfrage unterdrücken, kann der Controller erst einmal nichts sehen. Daher die folgende Vorgehensweise:

Freifunk Router richtig konfigurieren

Damit der Aufbau funktioniert, brauchen wir einen Freifunk Router, der per WAN erfolgreich eine Verbindung zu einem der Supernodes aufgebaut hat. Welches Gateway genutzt wird, kann per Karte eingesehen werden (map.freifunk-winterberg.net). Die LAN Ports des Routers darf kein Mesh machen!

Unifi Gerät anschließen (die eigentliche Magic 😉 )

Nun kann der Ubiquiti AP per Kabel an den Freifunk Router angeschlossen werden. Dieser versucht nun, sich vom DHCP Server (unserem Supernode) eine IP-Adresse zu ziehen. Welche Adresse genau gezogen wird, kann man entweder im DHCP Log sehen oder meist per IP Scanner herausfinden (Tipp: Die MAC des Gerätes steht auf einem Aufkleber unten drunter). Ist die Adresse bekannt, kann man sich mit seinem Notebook oder PC (Wichtig: Der muss auch am Freifunk Router angeschlossen sein, entweder per Kabel oder per WLAN) per SSH auf den Unifi AP verbinden. Bei der Ersteinrichtung hat das Gerät die Benutzer/Passwort-Kombination ubnt/ubnt. Ist die EInwahl auf dem Gerät erfolgreich gemacht, müssen die folgenden Befehle abgesetzt werden:

mca-cli
set-inform http://<IP_des_Unifi_Controllers>:8080/inform

Quelle: UniFi – Layer 3 methods for UAP adoption and management

Nachdem der Befehl abgesetzt wurde, taucht im Unifi Controller ein neues Gerät auf. Dieses muss einmalig adoptiert werden. Dieser Vorgang dauert knapp 60 Sekunden, danach geht der AP in der Software wieder offline. Das ist korrekt so, weil wir den gleichen Befehl wie oben einfach erneut eingeben müssen (Die Ausgabe auf dem Controller meldet das sogar direkt). Danach ist das Gerät mit dem Unifi Controller fest verbunden und kann administriert werden.

Screenshots vom Controller

Hier noch ein paar Screenshots von unserem Controller:

2016-09-01-15_24_38-unifi 2016-09-01-15_24_18-unifi 2016-09-01-15_23_58-unifi 2016-09-01-15_23_36-unifi

Die Geräte können nun noch mit einem Namen versehen werden, es können die Standorte eingetragen werden, pro Gruppe von Geräten kann eine eigene Site mit jeweils eigenen Eigenschaften erstellt werden, man kann zentral neue Firmware-Versionen ausrollen usw…

Was man noch wissen sollte

Ein Freifunk Router kann nicht mehr als 250 Clients bedienen. Daher bei mehr Teilnehmern diese jeweils auf eigene Router verteilen.

About the author: Jan

4 comments to “Installation, Bereitstellung und Betrieb von einem Ubiquiti Unifi Controller im Freifunk Netz”

You can leave a reply or Trackback this post.
  1. Dreher - 19/11/2017 Antworten

    Hallo Jan, bisher habe ich leider wenig Erfahrung mit der Konfiguration von Ubiquiti WLAN Accesspoints und der Software Unifii. Aktuell überlegen wir in unserer Fa. in jedem Raum Accesspoints zu installieren. Kannst du mir sagen, ob die Sendeleistung jedes Gerätes individuell anpassbar ist.
    Vielen Dank für die Antwort
    Andreas Dreher

    • Jan - 20/11/2017 Antworten

      Hi, jedes Gerät kann angepasst werden, entweder in drei Stufen -> Hoch, Mittel oder Niedrig oder alternativ mit einer manuellen dB-Zahl. Ich denke genau das sollte genau das sein, was du suchst 🙂
      Gruß, Jan

  2. Lino - 13/01/2018 Antworten

    Hallo Jan,
    habe die o.a SSH Methode versucht, um der UAC Controler Software einen Admin-PC bekannt zu machen. Das hat aber nicht geklappt. Kennst du einen Weg, über eine IPSec VPN Verbindung einer Frittz!Box den dahinter liegenden UAP AC zu administrieren. Ich habe schon so ziemlich alles versucht, aber kein Durchkommen, der UAP will einfach nicht in der Geräteliste der Controlersoftware auftauchen.
    Danke und Gruß
    Lino

    • Jan - 14/01/2018 Antworten

      Hi,
      wenn du mit einer SSH-Verbindung und einem “set-inform” kein Gerät siehst, dann scheint was anderes nicht zu klappen. Was genau das ist kann ich dir nicht sagen, da ich das Netzwerk nicht kenne.
      Gruß, Jan

Leave a Reply

Your email address will not be published.Email address is required.