TR-069 in Mikrotik. Wir testen Freeacs als Auto-Configuration-Server für RouterOS

In diesem Artikel werde ich versuchen, den Prozess der Installation eines Testservers für ein fantastisches Projekt Schritt für Schritt zu beschreiben. Freeacs bis hin zu einem voll funktionsfähigen Zustand und praktische Tipps für die Arbeit mit Mikrotik zu zeigen: Konfiguration über Parameter, Ausführung von Skripten, Aktualisierung, Installation zusätzlicher Module usw.

Das Ziel des Artikels ist es, Kollegen dazu zu ermutigen, das Management von Netzwerkgeräten mit furchtbaren Stolpersteinen und Krücken in Form von selbstgeschriebenen Skripten, Dude, Ansible usw. aufzugeben und in diesem Zusammenhang Jubel und Massenfreude auf den Plätzen zu entfesseln.

0. Auswahl

Warum freeacs und nicht genie-acs, das in mikrotik-wiki, als lebendiger angesehen wird?
Weil es zu genie-acs mit Mikrotik Veröffentlichungen von Spaniern gibt. Hier sind sie pdf und das Video von der letzten MUM. Auto-Sharing auf den Folien – das ist großartig, aber ich möchte von dem Konzept weg, Skripte zu schreiben, um Skripte zu starten, um Skripte zu starten…

1. Installation von freeacs

Wir werden es auf Centos7 installieren, und da die Geräte ziemlich viele Daten übertragen und ACS aktiv mit der Datenbank arbeitet – sparen wir nicht an den Ressourcen. Für eine angenehme Nutzung reservieren wir 2 CPU-Kerne, 4 GB RAM und 16 GB schnellen Speicher in SSD RAID10. Ich werde freeacs in einem LXC-Container von Proxmox VE installieren, aber Sie können mit jedem Ihnen passenden Tool arbeiten.
Vergessen Sie nicht, die richtige Zeit auf der Maschine mit ACS einzustellen.

Das System wird testweise sein, daher werden wir es nicht kompliziert machen und einfach das freundlicherweise zur Verfügung gestellte Installationsskript nutzen, so wie es ist.

wget https://raw.githubusercontent.com/freeacs/freeacs/master/scripts/install_centos.sh
chmod +x install_centos.sh
./install_centos.sh

Sobald das Skript abgeschlossen ist, können Sie sofort über die IP der Maschine auf die Weboberfläche mit den Anmeldedaten admin/freeacs zugreifen.

TR-069 in Mikrotik. Wir testen Freeacs als Auto-Configuration-Server für RouterOS
So eine angenehme minimalistische Benutzeroberfläche, und es hat alles so gut und schnell funktioniert.

2. Erste Konfiguration von freeacs

Die grundlegende Verwaltungseinheit für ACS ist das Gerät oder CPE (Customer Premises Equipment). Und das Wichtigste, was wir für die Verwaltung der Geräte benötigen, ist der Gerätetyp, d.h. das Modell der Hardware, das die Menge der konfigurierbaren Parameter des Geräts und seiner Software bestimmt. Aber da wir noch nicht wissen, wie man einen neuen Gerätetyp richtig anlegt, ist es am besten, direkt beim Gerät nachzufragen, indem wir den Entdeckungsmodus aktivieren.

In der Produktion kann so ein Modus absolut nicht verwendet werden, aber wir müssen so schnell wie möglich das System starten und seine Möglichkeiten prüfen. Alle grundlegenden Einstellungen werden in /opt/freeacs-*. gespeichert. Daher öffnen wir

 vi /opt/freeacs-tr069/config/application-config.conf 

, wir finden

discovery.mode = false

und ändern zu

discovery.mode = true

Außerdem sollten wir die maximalen Dateigrößen erhöhen, mit denen nginx und mysql arbeiten. Für mysql fügen wir in /etc/my.cnf die Zeile hinzu

max_allowed_packet=32M

, und für nginx fügen wir in /etc/nginx/nginx.conf hinzu

client_max_body_size 32m;

in den http-Bereich. Andernfalls können wir mit Firmware-Versionen von nicht mehr als 1M arbeiten.

Wir starten neu, und wir sind bereit, mit den Geräten zu arbeiten.

Und als Gerät (CPE) haben wir den kleinen Arbeiter hAP AC lite.

Vor der Testverbindung ist es ratsam, das CPE manuell auf die minimal funktionsfähige Konfiguration einzustellen, damit die Parameter, die Sie in Zukunft konfigurieren möchten, nicht leer sind. Für den Router sollte minimal der DHCP-Client für ether1 aktiviert, das Paket tr-069client installiert und Passwörter gesetzt werden.

3. Mikrotik anschließen

Es ist ratsam, alle Einheiten mit einer gültigen Seriennummer als Login anzuschließen. So sind die Protokolle für Sie verständlich. Einige empfehlen, die WAN-MAC zu verwenden – glauben Sie das nicht. Einige verwenden ein allgemeines Login/Passwort-Paar – meiden Sie diese.

Öffnen Sie das tr-069-Protokoll, um die "Gespräche" zu überwachen.

tail -f /var/log/freeacs-tr069/tr069-conversation.log

Öffnen Sie winbox, Menüpunkt TR-069.
ACS URL: http://10.110.0.109/tr069/prov (ersetzen Sie durch Ihre IP)
Benutzername: 9249094C26CB (serielle Nummer aus system>routerboard kopieren)
Passwort: 123456 (für discovery nicht erforderlich, aber zur Verfügung stehen sollte)
Das Intervall für die periodische Information ändern wir nicht. Diese Einstellung geben wir über unseren ACS weiter.

Im Folgenden kommen die Einstellungen für die Remote-Initialisierung der Verbindung, aber ich konnte den Mikrotik nicht schnell dazu bringen, damit zu arbeiten. Obwohl es mit Telefone Remote-Requests "out of the box" funktioniert. Da muss ich mich noch damit befassen.

TR-069 in Mikrotik. Wir testen Freeacs als Auto-Configuration-Server für RouterOS

Nach dem Klicken auf die Schaltfläche Anwenden wird der Datenaustausch im Terminal beginnen, und im Web-Interface Freeacs können Sie unseren Router mit automatisch erstelltem Unit Type „hAPaclite“ sehen.

TR-069 in Mikrotik. Wir testen Freeacs als Auto-Configuration-Server für RouterOS

Router ist angeschlossen. Man kann den automatisch erstellten Unit Type ansehen. Öffnen Sie Easy Provisioning > Unit Type > Unit Type Overview > hAPaclite. Was es dort nicht alles gibt! Ganze 928 Parameter (ich habe im Shell nachgeschaut). Ob das viel oder wenig ist – das klären wir später, aber jetzt schauen wir einfach mal kurz vorbei. So sieht der Unit Type aus. Es ist eine Liste der unterstützten Parameter mit Schlüsseln, aber ohne Werte. Die Werte werden auf niedrigeren Ebenen in Profilen und Einheiten festgelegt.

4. Mikrotik konfigurieren

Es ist Zeit, das Handbuch für die Weboberfläche herunterzuladen Dieses Handbuch ist aus dem Jahr 2011 – wie eine Flasche guten, gereiften Weins. Lassen Sie uns es öffnen und atmen lassen.

Und selbst, im Web-Interface, klicken wir auf den Stift neben unserem Modul und wechseln in den Konfigurationsmodus des Moduls. So sieht das aus:

TR-069 in Mikrotik. Wir testen Freeacs als Auto-Configuration-Server für RouterOS

Lass uns kurz durchgehen, was es Interessantes auf dieser Seite gibt:

Block Modulkonfiguration

  • Profil: Dies ist das Profil innerhalb des Modultyps. Die Hierarchie ist wie folgt: UnitType > Profil > Modul. Das heißt, wir können beispielsweise Profile erstellen hAPaclite > hotspot und hAPaclite > branch, aber innerhalb des Gerätemodells

Block Bereitstellung mit Tasten
Hinweise deuten darauf hin, dass alle Tasten im Block Bereitstellung die Konfiguration sofort über ConnectionRequestURL anwenden können. Aber, wie ich oben gesagt habe, funktioniert das nicht, daher müssen wir nach dem Drücken der Tasten den tr-069-Client auf mikrotik neu starten, um die Bereitstellung manuell zu starten.

  • Freq/Spread: Wie oft in der Woche die Konfiguration ± % geliefert werden soll, um die Serverlast und Kommunikationskanäle zu reduzieren. Standardmäßig ist es 7/20, d.h. jeden Tag ± 20 % und der Hinweis, wie das in Sekunden ist. Momentan macht es keinen Sinn, die Lieferfrequenz zu ändern, da es zusätzlichen Lärm in den Logs verursachen würde und nicht immer die erwartete Anwendung der Einstellungen erfolgt.

Block Bereitstellungshistorie (letzte 48 Stunden)

  • Auf den ersten Blick sieht die Historie aus wie jede andere Historie, aber wenn man auf den Titel klickt, gelangt man zu einem praktischen Suchwerkzeug für die Datenbank, mit regexp und Extras.

Block Parameter

Der größte und wichtigste Block, in dem die Parameter für dieses Modul festgelegt und gelesen werden. Momentan sehen wir nur die allerwichtigsten Systemparameter, ohne die die Funktionalität von ACS mit dem Modul nicht möglich ist. Aber wir erinnern uns, dass wir in Unit Type - 928. Lass uns alle Werte ansehen und herausfinden, wie es bei mikrotik läuft.

4.1 Parameter lesen

Im Block Bereitstellung drücken wir die Taste Alle lesen. Im Block – rote Beschriftung. Rechts erscheint eine Spalte CPE (aktueller) Wert. Der Systemparameter ProvisioningMode hat sich auf READALL geändert.

TR-069 in Mikrotik. Wir testen Freeacs als Auto-Configuration-Server für RouterOS

Und… es wird nichts passieren, außer einer Nachricht in System.X_FREEACS-COM.IM.Message. Kick fehlgeschlagen bei....

Starten Sie den TR-069-Client neu oder starten Sie den Router neu, und aktualisieren Sie die Webseite im Browser, bis Sie rechts die Parameter in fröhlichen grauen Rechtecken erhalten.
Wenn jemand einen Schluck alten Jahrgang nehmen wollte - dieser Modus wird im Handbuch als 10.2 Inspektionsmodus beschrieben. Er aktiviert sich und funktioniert etwas anders, aber die Essenz ist ganz klar.

TR-069 in Mikrotik. Wir testen Freeacs als Auto-Configuration-Server für RouterOS

Der READALL-Modus schaltet sich nach 15 Minuten selbst aus, und wir werden versuchen herauszufinden, was hier nützlich ist und was wir „on the fly“ anpassen können, während wir in diesem Modus sind.

Es ist möglich, IP-Adressen zu ändern, Schnittstellen ein- und auszuschalten, Firewall-Regeln zu erstellen, die mit Kommentaren versehen sind (ansonsten herrscht völliges Chaos), WLAN und so weiter.

Das heißt, es ist momentan nicht möglich, Mikrotik vernünftig nur mit den Mitteln von TR-069 zu konfigurieren. Aber eine ordentliche Überwachung ist durchaus möglich. Statistiken zu den Schnittstellen, deren Status, freiem Speicher usw. stehen zur Verfügung.

4.2 Parameter bereitstellen

Lass uns jetzt versuchen, die Parameter auf den Router über tr-069 auf "natürlichem" Weg zu übertragen. Das erste Opfer wird Device.DeviceInfo.X_MIKROTIK_SystemIdentity sein. Wir finden ihn in den Parametern des Geräts All. Wie zu sehen ist, ist er nicht festgelegt. Das bedeutet, dass jedes Gerät einen beliebigen Identity-Wert haben kann. Das müssen wir uns nicht gefallen lassen!
Wir setzen ein Häkchen in der Spalte erstellen, geben den Namen Mr.White ein und klicken auf die Schaltfläche Parameter aktualisieren. Was als Nächstes passiert, dürftet ihr euch bereits denken. Bei der nächsten Verbindung mit der Zentrale sollte der Router seine Identität ändern.

TR-069 in Mikrotik. Wir testen Freeacs als Auto-Configuration-Server für RouterOS

Aber das reicht uns nicht. So ein Parameter wie Identity ist immer nützlich, wenn man das richtige Gerät sucht. Wir klicken auf den Namen des Parameters und setzen die Häkchen für Anzeigen (D) und Durchsuchbar (S). Der Schlüssel des Parameters ändert sich auf RWSD (Denkt daran, dass die Namen und Schlüssel auf der höchsten Ebene des Gerätetyps festgelegt werden.)

TR-069 in Mikrotik. Wir testen Freeacs als Auto-Configuration-Server für RouterOS

Der Wert wird jetzt nicht nur in der allgemeinen Suchliste angezeigt, sondern kann auch in Support > Suche > Erweiterte Form

TR-069 in Mikrotik. Wir testen Freeacs als Auto-Configuration-Server für RouterOS

Wir initiieren die Bereitstellung und schauen uns die Identität an. Hallo, Mr.White! Jetzt können Sie Ihre Identität nicht mehr selbst ändern, solange der tr-069client aktiv ist.

TR-069 in Mikrotik. Wir testen Freeacs als Auto-Configuration-Server für RouterOS

4.3 Skripte ausführen

Da wir festgestellt haben, dass wir ohne sie nicht auskommen, lassen Sie sie uns ausführen.

Aber bevor wir mit den Dateien arbeiten, müssen wir die Direktive public.url in der Datei /opt/freeacs-tr069/config/application-config.conf
ändern. Wir haben schließlich immer noch eine Testkonfiguration, die mit einem Skript installiert wurde. Haben wir das vergessen?

# --- Public url (used for download f. ex.) ---
public.url = "http://10.110.0.109"
public.url: ${?PUBLIC_URL}

Wir starten den ACS neu und gehen direkt zu Dateien & Skripte.

TR-069 in Mikrotik. Wir testen Freeacs als Auto-Configuration-Server für RouterOS

Aber das, was wir jetzt öffnen, gehört zum Geräteelementtyp, d.h. global für alle Router hAP ac lite, egal ob es sich um den Router einer Niederlassung, einen Hotspot oder CAPsMAN handelt. So ein hoher Zugriff ist für uns momentan nicht nötig, also müssen wir, bevor wir mit Skripten und Dateien arbeiten, ein Profil erstellen. Wir können es uns auch als "Gerätestelle" nennen.

Lass uns unseren Kleinen zu einem Zeitserver machen. Eine anständige Rolle mit einem eigenen Softwarepaket und wenigen Parametern. Gehe zu Einfache Bereitstellung > Profil > Profil erstellen und erstelle im Gerätetyp: hAPaclite das Profil timeserver. Im Standardprofil hatten wir keine Parameter, also gibt es auch nichts zu kopieren. Parameter kopieren von: «nicht kopieren…»

TR-069 in Mikrotik. Wir testen Freeacs als Auto-Configuration-Server für RouterOS

Hier sind noch keine Parameter vorhanden, aber wir können die festlegen, die wir später auf unseren Zeitservern aus hAPaclite sehen möchten. Zum Beispiel die allgemeinen NTP-Serveradressen.
Wir gehen zur Konfiguration des Geräts und verschieben es in das Profil timeserver.

Endlich gehen wir nach Dateien & Skripte, um Skripte zu erstellen, und hier erwarten uns erstaunlich praktische Funktionen.

Um ein Skript auf dem Gerät auszuführen, müssen wir auswählen Type:TR069_SCRIPT a Name und Zielname müssen die Erweiterung .alter haben.
Dabei können wir für Skripte im Gegensatz zu Software sowohl eine fertige Datei hochladen als auch sie einfach im Feld Inhalt. Lass uns versuchen, es dort direkt zu schreiben.

Und um das Ergebnis sofort sichtbar zu machen, fügen wir dem Router einen VLAN auf ether1 hinzu.

/interface vlan
add interface=ether1 name=vlan1 vlan-id=1

TR-069 in Mikrotik. Wir testen Freeacs als Auto-Configuration-Server für RouterOS

Wir geben ein, klicken auf Upload und fertig. Unser Skript vlan1.alter wartet auf seinen Einsatz.

Na, gehen wir los? Nein. Wir müssen auch für unser Profil eine Gruppe hinzufügen. Gruppen gehören nicht zur Hierarchie der Geräte, sind jedoch notwendig, um Geräte im UnitType oder Profil zu finden und sind erforderlich, um Skripte über das erweiterte Provisioning auszuführen. Normalerweise sind Gruppen mit Standorten verbunden und haben eine hierarchische Struktur. Lass uns eine Gruppe Russland erstellen.

TR-069 in Mikrotik. Wir testen Freeacs als Auto-Configuration-Server für RouterOS

Kannst du dir vorstellen, dass wir gerade die Suche von „Alle Zeitserver der Welt auf hAPaclite“ auf „Alle Zeitserver Russlands auf hAPaclite“ eingegrenzt haben? Da gibt es noch viele interessante Dinge mit Gruppen, aber wir haben keine Zeit. Lass uns schon zu den Skripten gehen.

Erweitertes Provisioning > Job > Job erstellen

TR-069 in Mikrotik. Wir testen Freeacs als Auto-Configuration-Server für RouterOS

Da wir uns schließlich im erweiterten Modus befinden, können hier viele verschiedene Bedingungen für den Beginn des Jobs, das Verhalten bei Fehlern, Wiederholungen und Zeitüberschreitungen angegeben werden. Ich empfehle, dies alles in den Handbüchern nachzulesen oder später bei der Einführung in die Produktion zu besprechen. Bis dahin setzen wir nur n1 in die Stop-Regeln, damit der Job stoppt, sobald er auf unserem 1. Gerät ausgeführt wird.

Wir füllen das Notwendige aus, und jetzt müssen wir nur noch starten!

TR-069 in Mikrotik. Wir testen Freeacs als Auto-Configuration-Server für RouterOS

Wir klicken auf START und warten. Jetzt wird der Zähler der von dem nicht richtig getesteten Skript betroffenen Geräte schnell hochlaufen! Nein, natürlich nicht. Solche Aufträge dauern lange, und das unterscheidet sie von Skripten, Ansible usw. Die Geräte rufen die Aufträge nach einem Zeitplan ab oder sobald sie im Netzwerk erscheinen, und ACS registriert, welche Geräte bereits Aufträge erhalten haben und wie sie abgeschlossen wurden, und zeichnet dies in den Parametern des Geräts auf. In unserer Gruppe gibt es 1 Gerät, und wenn es 1001 wären – der Administrator würde diesen Job starten und dann zum Angeln fahren.

Kommen Sie schon. Starten Sie den Router neu oder starten Sie den TR-069-Client neu. Alles sollte reibungslos ablaufen und Mr.White wird einen neuen VLAN erhalten. Unser Auftrag für die Stoppregel geht in den Status PAUSED. Das heißt, er kann noch einmal gestartet oder geändert werden. Wenn Sie auf BEENDEN klicken, wird der Auftrag archiviert.

4.4 Software aktualisieren

Dies ist ein sehr wichtiger Punkt, da die Firmware des Mikrotik modular ist, aber das Hinzufügen von Modulen die Gesamtausgabe der Firmware des Geräts nicht ändert. Unser ACS ist normal, und wir sind an so etwas nicht gewöhnt.
Jetzt machen wir es im Stil von quick&dirty und packen das NTP-Modul direkt in die gesamte Firmware, aber sobald die Version auf dem Gerät aktualisiert wird, können wir kein weiteres Modul auf die gleiche Weise hinzufügen.
In der Produktion sollte man solchen Trick besser nicht anwenden und optionale Module für den Unit Type nur mit Skripten installieren.

Also, das erste, was wir tun müssen, ist, die Softwarepakete mit den erforderlichen Versionen und der Architektur vorzubereiten und sie auf einen erreichbaren Webserver zu legen. Für den Test geht jeder, den unser Mr.White erreichen kann, aber für die Produktion ist es besser, ein automatisch aktualisiertes Spiegelbild der benötigten Software zu erstellen, das man bedenkenlos im Web bereitstellen kann.
Wichtig! Vergessen Sie nicht, immer das Paket mit dem tr-069client in die Updates aufzunehmen!

Wie sich herausgestellt hat, ist die Länge des Pfades zu den Paketen sehr wichtig! Bei meinen Versuchen, etwas wie http://192.168.0.237/routeros/stable/mipsbe/routeros-mipsbe-6.45.6.npk, stürzte Mikrotik in eine zyklische Verbindung mit der Ressource und gab im tr-069-Log wiederholt TRANSFERCOMPLETE aus. Und ich vergab eine gewisse Anzahl von Nerven, um herauszufinden, was nicht stimmte. Daher lassen wir es vorerst im Wurzelverzeichnis, bis wir Klarheit haben.

Also, wir sollten drei npk-Dateien haben, die über http zugänglich sind. Bei mir ist es so gelaufen:

http://192.168.0.241/routeros-mipsbe-6.45.6.npk
http://192.168.0.241/routeros/stable/mipsbe/ntp-6.45.6-mipsbe.npk
http://192.168.0.241/routeros/stable/mipsbe/tr069-client-6.45.6-mipsbe.npk

Jetzt muss dies in eine xml-Datei mit FileType="1 Firmware Upgrade Image" umgewandelt werden, die wir Mikrotik vorlegen. Lassen Sie den Namen ros.xml sein.

Wir folgen der Anleitung aus mikrotik-wiki:

http://192.168.0.241/routeros-mipsbe-6.45.6.npk
        
        
            http://192.168.0.241/ntp-6.45.6-mipsbe.npk
        
        
            http://192.168.0.241/tr069-client-6.45.6-mipsbe.npk

Die fehlende Benutzername/Passwort für den Zugriff auf den Download-Server fällt ins Auge. Man kann entweder versuchen, dies wie im Punkt A.3.2.8 des Protokolls tr-069 einzutragen:

http://192.168.0.237/routeros/stable/mipsbe/ntp-6.45.6-mipsbe.npk
user
pass

Oder direkt bei den offiziellen MikroTik-Vertretern nach der maximalen Pfadlänge zu *.npk fragen.

Wir gehen zu den uns bekannten Dateien & Skripte, und erstellen dort eine Datei vom Typ SOFTWARE mit Name:ros.xml, Zielname:ros.xml und Version:6.45.6
Achtung! Die Version muss genau im Format angegeben werden, wie sie auf dem Gerät angezeigt wird und im Parameter übermittelt wird System.X_FREEACS-COM.Device.SoftwareVersion.

Wählen Sie unsere xm-Datei zum Herunterladen aus und fertig.

TR-069 in Mikrotik. Wir testen Freeacs als Auto-Configuration-Server für RouterOS

Jetzt haben wir viele Möglichkeiten, das Gerät zu aktualisieren. Über den Wizard im Hauptmenü, über Advanced Provisioning und Aufgaben vom Typ SOFTWARE oder einfach die Konfiguration der Einheit aufrufen und auf Upgrade klicken. Wählen wir den einfachsten Weg, denn der Artikel ist ohnehin schon lang genug geworden.

TR-069 in Mikrotik. Wir testen Freeacs als Auto-Configuration-Server für RouterOS

Wir drücken die Taste, initiieren das Provisioning und fertig. Das Testprogramm ist abgeschlossen. Jetzt können wir mehr mit MikroTik machen.

5. Fazit

Als ich anfing zu schreiben, wollte ich zunächst die Verbindung eines IP-Telefons beschreiben und anhand dieses Beispiels erklären, wie einfach es sein kann, wenn TR-069 problemlos funktioniert. Aber dann dachte ich, als ich mich durch das Material arbeitete, dass jede Person, die MikroTik angeschlossen hat, keine Angst vor dem selbstständigen Lernen haben sollte.

Im Prinzip kann FreeACS, das wir getestet haben, bereits in der Produktion eingesetzt werden, aber dazu müssen Sicherheit, SSL konfiguriert werden, MikroTiks für die automatische Konfiguration nach dem Reset eingestellt werden, die korrekte Hinzufügung des Unit Typs muss optimiert werden, die Funktionsweise von Webservices und Fusion Shell muss durchforstet werden, und noch vieles mehr. Probieren Sie es aus, erfinden Sie Neues und schreiben Sie die Fortsetzung!

Vielen Dank für Ihre Aufmerksamkeit! Ich freue mich über Anmerkungen und Kommentare!

Liste der verwendeten Materialien und nützliche Links:

Das Forum, auf das ich zu Beginn meiner Recherchen gestoßen bin
TR-069 CPE WAN Management Protocol Amendment-6
FreeACS-Wiki
TR-069 Parameter in MikroTik und deren Entsprechung zu Terminalbefehlen

Quelle: habr.com

60GB SSD 8Gb DDR4