TR-069 bei Mikrotik. Testen von Freeacs als Autokonfigurationsserver für RouterOS

In diesem Artikel werde ich versuchen, den Prozess der Installation des Testservers eines hervorragenden Freeacs- Projekts in einem voll funktionsfähigen Zustand Schritt für Schritt zu beschreiben und praktische Techniken für die Arbeit mit Mikrotik aufzuzeigen: Konfiguration durch Parameter, Skriptausführung, Aktualisierung, Installation zusätzlicher Module usw.

Der Zweck des Artikels ist es, Kollegen zu ermutigen, die Verwaltung von Netzwerkgeräten mit schrecklichen Rechen und Krücken in Form von selbstgeschriebenen Skripten, Dude, Ansible usw. aufzugeben. In dieser Hinsicht verursachen sie Feuerwerk und massive Freude auf den Plätzen.

0. Wahl


Warum sind Freeacs, nicht Genie-ACs, die im Mikrotik-Wiki erwähnt werden , lebhafter?
Denn laut Genie-ACs mit Mikrotik gibt es Veröffentlichungen der Spanier. Hier sind ihr PDF und Video von der letztjährigen MUM. Auto Caravans auf Folien sind cool, aber ich möchte mich vom Konzept des Schreibens von Skripten, des Ausführens von Skripten, des Ausführens von Skripten entfernen ...

1. Installieren Sie Freeacs


Wir werden es in Centos7 installieren, und da die Geräte viele Daten übertragen und ACS aktiv mit der Datenbank arbeitet, werden wir nicht mit Ressourcen gierig sein. Für komfortables Arbeiten weisen wir 2 CPU-Kerne, 4 GB RAM und 16 GB ssd raid10-Schnellspeicher zu. Ich werde Freeacs im Proxmox VE lxc-Container installieren, und Sie können mit jedem für Sie geeigneten Tool arbeiten.
Denken Sie daran, mit ACS die richtige Zeit am Gerät einzustellen.

Das System wird ein Testsystem sein, daher werden wir nicht schlau sein und nur das freundlicherweise bereitgestellte Installationsskript verwenden, 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 mit den Anmeldeinformationen admin / freeacs zur Weboberfläche auf dem IP-Computer gelangen


Hier ist eine so schöne minimalistische Oberfläche, und wie cool und schnell sich alles herausstellte

2. Ersteinrichtung der Freeacs


Die Basissteuereinheit für ACS ist eine Einheit oder CPE (Customer Premises Equipment). Und am wichtigsten ist, dass wir zur Verwaltung von Einheiten ihren Einheitentyp benötigen, d. H. Gerätemodell, das eine Reihe anpassbarer Geräteparameter und deren Software definiert. Obwohl wir nicht wissen, wie Sie den neuen Einheitentyp erhalten, fragen Sie am besten die Einheit selbst, indem Sie den Erkennungsmodus aktivieren.

In der Produktion ist dieser Modus absolut unmöglich zu verwenden, aber wir müssen den Motor bald starten und die Fähigkeiten des Systems erkennen. Alle Grundeinstellungen werden in / opt / freeacs- * gespeichert. Öffnen Sie daher

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

wir finden

 discovery.mode = false 

und wechseln zu

 discovery.mode = true 

Darüber hinaus möchten wir die maximale Dateigröße erhöhen, mit der Nginx und MySQL arbeiten. Fügen Sie für MySQL die Zeile zu /etc/my.cnf hinzu

 max_allowed_packet=32M 

und für nginx in /etc/nginx/nginx.conf hinzufügen

 client_max_body_size 32m; 

zum http Abschnitt. Ansonsten können wir mit Firmware nicht mehr als 1M arbeiten.

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

Und in der Rolle des Geräts (CPE) werden wir das hAP kid ACAP lite haben .

Vor der Testverbindung ist es ratsam, das CPE manuell auf die minimale Arbeitskonfiguration zu konfigurieren, damit die Parameter, die Sie in Zukunft konfigurieren möchten, nicht leer sind. Für den Router können Sie den DHCP-Client auf ether1 minimal aktivieren, das Paket tr-069client installieren und Kennwörter festlegen.

3. Wir verbinden Mikrotik


Es wird empfohlen, alle Geräte mit einer gültigen Seriennummer als Login zu verbinden. Dann wird Ihnen in den Protokollen alles klar sein. Jemand rät, WAN MAC zu verwenden - glauben Sie nicht. Jemand verwendet ein gemeinsames Login / Pass-Paar für alle - umgehen Sie sie.

Wir öffnen das tr-069-Protokoll zur Überwachung von „Verhandlungen“.

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

Öffnen Sie die Winbox, Menüpunkt TR-069.
ACS-URL: http://10.110.0.109/tr069/prov (durch Ihre IP ersetzen)
Benutzername: 9249094C26CB (kopieren Sie die Seriennummer von System> Routerboard)
Passwort: 123456 (nicht für die Entdeckung benötigt, aber zu sein)
Periodisches Informationsintervall ändern wir nicht. Wir werden diese Einstellung über unser ACS herausgeben

Nachfolgend sind die Einstellungen für die Initialisierung der Remoteverbindung aufgeführt. Ich konnte jedoch nicht mit mikrotik zusammenarbeiten, um dies zu erreichen. Obwohl die Fernanforderung mit sofort einsatzbereiten Telefonen funktioniert. Es wird notwendig sein zu verstehen.



Nachdem Sie auf die Schaltfläche Übernehmen geklickt haben, werden die Daten im Terminal ausgetauscht. In der Freeacs-Weboberfläche sehen Sie unseren Router mit dem automatisch erstellten Einheitentyp „hAPaclite“.



Der Router ist angeschlossen. Sie können sich den automatisch erstellten Einheitentyp ansehen. Öffnen Sie Easy Provisioning > Unit Type > Unit Type Overview > hAPaclite . Was gibt es nicht nur! Bis zu 928 Parameter (ich habe in der Shell ausspioniert). Ob es viel oder wenig ist, wir werden es später herausfinden, aber im Moment nur einen kurzen Blick darauf. Dies ist, was Einheitentyp bedeutet. Dies ist eine Liste der unterstützten Parameter mit Schlüsseln, aber ohne Werte. Die Werte werden in den folgenden Ebenen festgelegt - Profile und Einheiten.

4. Konfigurieren Sie Mikrotik


Es ist Zeit, den Webinterface- Leitfaden herunterzuladen. Dieser Leitfaden für 2011 ist wie eine Flasche guten, gereiften Weins. Öffnen wir es und lassen wir atmen.

Und wir selbst klicken in der Weboberfläche auf den Stift neben unserem Gerät und wechseln in den Gerätekonfigurationsmodus. Es sieht so aus:



Untersuchen Sie kurz, was auf dieser Seite interessant ist:

Gerätekonfigurationsblock

  • Profil: Dies ist das Profil innerhalb des Einheitentyps. Die Hierarchie lautet wie UnitType > Profile > Unit : UnitType > Profile > Unit . Das heißt, wir können zum Beispiel Profile hAPaclite > hotspot und hAPaclite > branch , jedoch innerhalb des Gerätemodells

Tastenbereitstellung
Die Hinweise weisen darauf hin, dass alle Schaltflächen im Bereitstellungsblock die Konfiguration sofort über ConnectionRequestURL anwenden können. Wie oben erwähnt, funktioniert dies jedoch nicht. Nach dem Klicken auf die Schaltflächen müssen Sie den tr-069-Client auf mikrotik neu starten, um die Bereitstellung manuell zu starten.

  • Freq / Spread: Wie oft pro Woche ±% Konfiguration bereitgestellt werden muss, um die Belastung des Servers und der Kommunikationskanäle zu verringern. Standardmäßig kostet es 7/20, d.h. jeden Tag ± 20% und ein Hinweis wie dieser in Sekunden. Während es keinen Sinn macht, die Häufigkeit der Lieferung zu ändern, tk. Es gibt übermäßiges Rauschen in den Protokollen und nicht immer die erwartete Anwendung der Einstellungen

Blockbereitstellungsverlauf (letzte 48 Stunden)

  • Es sieht aus wie eine Geschichte, wie eine Geschichte, aber wenn Sie auf den Titel klicken, gelangen Sie in ein praktisches Datenbanksuchwerkzeug mit regulären Ausdrücken und Brötchen

Parameter blockieren

Der größte und wichtigste Block, in dem tatsächlich die Parameter für dieses Gerät eingestellt und gelesen werden. Jetzt sehen wir nur die wichtigsten Systemparameter, ohne die ACS nicht mit dem Gerät arbeiten kann. Aber wir erinnern uns, dass wir 928 in Unit Type haben. Schauen wir uns alle Werte an und entscheiden, was alles mit Mikrotik isst.

4.1 Lesen Sie die Parameter


Klicken Sie im Block Bereitstellung auf die Schaltfläche Alle lesen. Im Block - eine rote Inschrift. Die Spalte CPE (aktueller Wert) wird rechts angezeigt. In den Systemeinstellungen wurde ProvisioningMode in READALL geändert.



Und ... nichts passiert außer der Meldung in System.X_FREEACS-COM.IM.Message Kick failed at...

Starten Sie den TR-069-Client neu oder starten Sie den Router neu und aktualisieren Sie die Browserseite weiter, bis Sie die Parameter in den fröhlichen grauen Rechtecken rechts erhalten
Wenn jemand einen Schluck von dem alten Gewürz nehmen möchte, wird dieser Modus im Handbuch als 10.2 Inspektionsmodus beschrieben. Es schaltet sich ein und funktioniert ein wenig falsch, aber die Essenz ist ziemlich beschrieben



Der READALL-Modus selbst wird nach 15 Minuten ausgeschaltet und wir werden versuchen herauszufinden, was nützlich ist und was „on the fly“ korrigiert werden kann, während wir uns in diesem Modus befinden.

Sie können IP-Adressen ändern, Schnittstellen aktivieren / deaktivieren, Firewall-Regeln, die Kommentare enthalten (ansonsten ein komplettes Durcheinander), Wi-Fi usw. Kleinigkeiten.

Das heißt, es ist noch nicht möglich, mikrotik sane nur mit TR-069 zu konfigurieren. Aber Sie können sehr gut überwachen. Verfügbare Statistiken zu Schnittstellen und deren Status, freiem Speicher usw.

4.2 Lieferparameter


Versuchen wir nun, die Parameter auf "natürliche" Weise über tr-069 an den Router zu senden. Das erste Opfer ist Device.DeviceInfo.X_MIKROTIK_SystemIdentity. Wir finden es in den Einheitsparametern Alle. Anscheinend - es ist nicht eingestellt. Dies bedeutet, dass jede Einheit selbst eine Identität haben kann. Hör auf!
Setzen Sie eine Morgendämmerung in die Spalte "Erstellen", setzen Sie den Namen "Mr.White" und klicken Sie auf die Schaltfläche "Parameter aktualisieren". Was als nächstes passieren wird, haben Sie bereits erraten. Bei der nächsten Kommunikationssitzung mit der Zentrale muss der Router seine Identität ändern.



Das reicht uns aber nicht. Ein Parameter wie Identität ist gut zur Hand, wenn Sie nach der gewünschten Einheit suchen. Wir geben den Parameternamen ein und setzen dort die Dämmerung Display (D) und Searchable (S). Der Parameterschlüssel ändert sich in RWSD (Denken Sie daran, dass Namen und Schlüssel auf der höchsten Ebene des Einheitentyps festgelegt sind.)



Der Wert wird jetzt nicht nur in der allgemeinen Suchliste angezeigt, sondern steht auch für die Suche unter Support > Search > Advanced form



Wir initiieren die Bereitstellung und betrachten die Identität. Hallo Mr.White! Jetzt können Sie Ihre Identität nicht mehr ändern, während tr-069client ausgeführt wird



4.3 Wir führen Skripte aus


Da wir herausgefunden haben, dass es ohne sie keinen Weg gibt, führen wir sie aus.

Bevor wir jedoch mit Dateien arbeiten, müssen wir die Direktive public.url in der Datei /opt/freeacs-tr069/config/application-config.conf
Immerhin haben wir immer noch eine Testkonfiguration, die von einem Skript installiert wird. Nicht vergessen?

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


Starten Sie ACS neu und gehen Sie direkt zu Files & Scripts .



Aber was wir jetzt öffnen, gehört zum Einheitentyp, d. H. global für alle hAP ac lite router, egal ob es sich um einen branch router, hotspot oder capsman handelt. Wir brauchen noch kein so hohes Niveau, daher sollten Sie vor der Arbeit mit Skripten und Dateien ein Profil erstellen. Sie können es selbst als "Position" des Geräts bezeichnen.

Machen wir unser Baby zu einem Zeitserver. Ordentlicher Beitrag mit einem separaten Softwarepaket und einer kleinen Anzahl von Parametern. Gehen Sie zu Easy Provisioning > Profile > Create Profile erstellen und erstellen Sie ein Zeitserverprofil unter Einheitentyp: hAPaclite . Wir hatten keine Parameter im Standardprofil, daher gibt es nichts zu kopieren. Kopieren Sie die Parameter von: "Nicht kopieren ..."



Es gibt noch keine Parameter, aber es wird möglich sein, diejenigen festzulegen, die wir später auf unseren Zeitservern sehen möchten, die aus hAPaclite zusammengeschustert wurden. Zum Beispiel die allgemeinen Adressen von NTP-Servern.
Wechseln wir in die Gerätekonfiguration und in das Zeitserverprofil

Schließlich gehen wir zu Files & Scripts , erstellen Skripte und warten hier auf erstaunlich praktische Brötchen.

Um das Skript auf dem Gerät auszuführen, müssen Sie Typ auswählen : TR069_SCRIPT und Name und Zielname müssen die Erweiterung .alter haben
Gleichzeitig können Sie bei Skripten im Gegensatz zu Software entweder die fertige Datei laden oder sie einfach in das Feld Inhalt schreiben / bearbeiten . Versuchen wir gleich dort zu schreiben.

Und um das Ergebnis sofort zu sehen, fügen Sie ether1 einen vlan-Router hinzu

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



Fahren Sie hinein, klicken Sie auf Hochladen und Sie sind fertig. Unser Skript vlan1.alter wartet in den vlan1.alter .

Na, ist es gefahren? Nein. Wir müssen unserem Profil auch eine Gruppe hinzufügen. Gruppen sind nicht in der Gerätehierarchie enthalten, werden jedoch für die Suche nach Einheiten in UnitType oder Profile benötigt und müssen Skripts über Advanced Provisioning ausführen. Normalerweise sind Gruppen Standorten zugeordnet und haben eine verschachtelte Struktur. Machen wir eine Gruppe Russland.



Stellen Sie sich vor, wir konnten die Suche von "Alle Zeitserver der Welt auf hAPaclite" auf "Alle Zeitserver Russlands auf hAPaclite" eingrenzen. Es gibt immer noch eine riesige Schicht von allem, was mit Gruppen interessant ist, aber wir haben keine Zeit. Bereits in Skripte gefahren.

 Advanced Provisioning > Job > Create Job 



Da wir uns schließlich im erweiterten Modus befinden, können Sie hier eine Reihe verschiedener Bedingungen für das Starten des Jobs, Fehlerverhalten, Wiederholungsversuche und Zeitüberschreitungen angeben. Ich empfehle, alles in Handbüchern zu lesen oder später bei der Implementierung in der Produktion zu diskutieren. Geben Sie vorerst einfach n1 in die Stoppregeln ein, damit die Aufgabe beendet wird, sobald sie auf unserer Einheit 1 abgeschlossen ist.

Wir füllen das Notwendige aus und es bleibt nur noch zu rennen!



Drücken Sie START und warten Sie. Jetzt läuft der Zähler der Geräte, die von einem unterentwickelten Skript getötet wurden, zügig! Nein, natürlich. Solche Aufgaben werden für eine lange Zeit gegeben, und dies ist ihr Unterschied zu Skripten, Ansible und so weiter. Die Einheiten selbst bewerben sich nach einem Zeitplan oder wenn sie im Netzwerk angezeigt werden. ACS verfolgt, welche Einheiten bereits Aufgaben erhalten haben und wie sie beendet wurden, und schreibt diese in die Parameter der Einheit. Es gibt 1 Einheit in unserer Gruppe, und wenn es 1001 von ihnen gäbe, würde der Administrator diese Aufgabe ausführen und angeln gehen

Komm schon. Starten Sie den Router bereits neu oder starten Sie den TR-069-Client neu. Alles sollte reibungslos verlaufen und Mr.White wird einen neuen VLAN bekommen. Und unsere Stop-Regelzuweisung wird in den Status PAUSED versetzt. Das heißt, es kann immer noch neu gestartet oder geändert werden. Wenn Sie auf BEENDEN klicken, wird die Aufgabe in das Archiv geschrieben

4.4 Software aktualisieren


Dies ist ein sehr wichtiger Punkt, da die Mikrotik-Firmware modular aufgebaut ist, das Hinzufügen von Modulen jedoch nichts an der allgemeinen Version der Geräte-Firmware ändert. Unser ACS ist normal und ich bin nicht daran gewöhnt.
Jetzt machen wir es schnell und schmutzig und schieben das NTP-Modul sofort in die allgemeine Firmware. Sobald die Version auf dem Gerät aktualisiert ist, können wir jedoch kein weiteres Modul auf die gleiche Weise hinzufügen.
In der Produktion ist es besser, einen solchen Trick nicht anzuwenden und Module, die für Unit Type optional sind, nur mit Skripten zu installieren.

Das erste, was wir tun müssen, ist, die Softwarepakete der erforderlichen Versionen und Architektur vorzubereiten und auf einem zugänglichen Webserver abzulegen. Für den Test wird jeder gehen, den unser Mr.White erreichen kann, und für die Produktion ist es besser, einen Spiegel für die automatische Aktualisierung der erforderlichen Software zusammenzustellen, was nicht unheimlich ist, wenn man ihn ins Internet stellt
Wichtig! Denken Sie daran, immer ein Paket mit tr-069client in Updates aufzunehmen!

Wie sich herausstellte, ist die Pfadlänge zu den Paketen sehr wichtig! Als ich versuchte, so etwas wie http://192.168.0.237/routeros/stable/mipsbe/routeros-mipsbe-6.45.6.npk , geriet mikrotik in eine zyklische Verbindung zur Ressource und gab TRFERCOMPLETE an tr-069 log. Und ich habe eine gewisse Menge Nervenzellen ausgegeben, um herauszufinden, was los war. Deshalb, während wir die Wurzel setzen, bis zur Klärung

Wir sollten also drei npk-Dateien über http verfügbar haben. Es stellte sich für mich so heraus

 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 es in der XML-Datei mit FileType = "1 Firmware Upgrade Image" ausgegeben werden, das wir den Mikrotikern zuführen. Der Name sei ros.xml

Wir folgen den Anweisungen aus dem Mikrotik-Wiki :

 <upgrade version="1" type="links"> <config /> <links> <link> <url>http://192.168.0.241/routeros-mipsbe-6.45.6.npk</url> </link> <link> <url>http://192.168.0.241/ntp-6.45.6-mipsbe.npk</url> </link> <link> <url>http://192.168.0.241/tr069-client-6.45.6-mipsbe.npk</url> </link> </links> </upgrade> 

Das Fehlen von Username/Password für den Zugriff auf den Download-Server ist auffällig. Sie können entweder versuchen, dies wie in Abschnitt A.3.2.8 des tr-069-Protokolls einzugeben:

 <link> <url>http://192.168.0.237/routeros/stable/mipsbe/ntp-6.45.6-mipsbe.npk</url> <Username>user</Username> <Password>pass</Password> </link> 

Oder fragen Sie direkt den offiziellen Mikrotik sowie die maximale Pfadlänge zu * .npk

Wir gehen zu den uns bekannten Files & Scripts und erstellen eine Datei wie SOFTWARE mit dem Namen: ros.xml, dem Zielnamen : ros.xml und der Version: 6.45.6
Achtung! Die Version muss hier in dem Format angegeben werden, in dem sie auf dem Gerät angezeigt und im Parameter System.X_FREEACS-COM.Device.SoftwareVersion .

Wir wählen unsere xm-Datei zum Download aus und Sie sind fertig.



Jetzt haben wir unzählige Möglichkeiten, Ihr Gerät zu aktualisieren. Über den Assistenten im Hauptmenü, über Advanced Provisioning und Aufgaben mit dem SOFTWARE-Typ oder gehen Sie einfach in die Gerätekonfiguration und klicken Sie auf Upgrade. Wir wählen den einfachsten Weg, und selbst dann ist der Artikel geschwollen.



Klicken Sie auf die Schaltfläche, starten Sie die Bereitstellung und Sie sind fertig. Das Testprogramm ist abgeschlossen. Jetzt können wir mehr mit Mikrotik machen.

5. Fazit


Als ich anfing zu schreiben, wollte ich zuerst die Verbindung des IP-Telefons beschreiben und anhand seines Beispiels erklären, wie cool es sein kann, wenn tr-069 einfach und mühelos funktioniert. Aber dann, als ich mich weiterentwickelte und die Materialien durchforstete, dachte ich, dass für denjenigen, der Mikrotik verband, kein Telefon für ein unabhängiges Studium beängstigend sein würde.

Grundsätzlich können die von uns getesteten Freeacs bereits in der Produktion verwendet werden. Dazu müssen Sie jedoch die Sicherheit, SSL, Mikrotik für die automatische Konfiguration nach dem Zurücksetzen konfigurieren, die korrekte Hinzufügung des Einheitentyps debuggen, die Arbeit von Webservices und der Fusion-Shell zerlegen und vieles mehr. Versuchen, erfinden und schreiben Sie eine Fortsetzung!

Vielen Dank für Ihre Aufmerksamkeit! Ich freue mich über Änderungsanträge und Kommentare!

Liste der verwendeten Materialien und nützliche Links:

Der Forenthread, auf den ich zu Beginn der Suche nach dem Thema gestoßen bin
TR-069 CPE WAN Management Protocol Änderung-6
Freeacs Wiki
Parameter tr-069 in Mikrotik und deren Einhaltung von Terminalbefehlen

Update 10.13.2019:

Beim Durchsehen der Informationen über das FreeACS-Projekt stieß ich auf einen sehr interessanten Patch, der von polnischen Leuten vorgeschlagen wurde, die FreeACS für 20.000 Geräte haben.

Der Patch wurde für verschiedene Hardwareversionen erstellt. Bei Mikrotik können Sie jedoch mehrere Einheitentypen für dieselben Router mit unterschiedlichen Softwaremodulen erstellen.
Zum Beispiel hAPaclite-ntp, hAPaclite-ups usw. Und dementsprechend, um die Einschränkung "ein Modell == eine Firmware" zu umgehen

Source: https://habr.com/ru/post/de468241/


All Articles