In diesem Artikel werde ich versuchen, Schritt für Schritt den Prozess der Installation eines Testservers für ein großartiges Projekt zu beschreiben
Der Zweck des Artikels besteht darin, Kollegen dazu zu bringen, die Verwaltung von Netzwerkgeräten mit schrecklichen Rechen und Krücken in Form von selbstgeschriebenen Skripten, Dude, Ansible usw. zu verweigern. Und bei dieser Gelegenheit ein Feuerwerk und Massenjubel auszulösen Quadrate.
0. Wahl
Warum Freeacs und nicht Genie-ACs erwähnt werden
Weil es spanische Veröffentlichungen zu Genie-ACs mit Mikrotik gibt. Hier sind sie
1. Freeacs-Installation
Wir werden in Centos7 installieren, und da die Geräte viele Daten übertragen und ACS aktiv mit der Datenbank arbeitet, werden wir nicht ressourcengierig sein. Für komfortables Arbeiten wählen wir 2 CPU-Kerne, 4 GB RAM und 16 GB schnellen Speicher SSD RAID10. Ich werde Freeacs im Proxmox VE lxc-Container installieren, und Sie können mit jedem für Sie geeigneten Tool arbeiten.
Vergessen Sie nicht, mit ACS die richtige Uhrzeit an der Maschine einzustellen.
Da es sich bei dem System um ein Testsystem handelt, sollten wir nicht schlau sein und einfach das freundlicherweise bereitgestellte Installationsskript so 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 über die IP des Computers mit den Anmeldeinformationen admin/freeacs sofort auf die Weboberfläche zugreifen
Hier ist so eine schöne minimalistische Benutzeroberfläche und wie cool und schnell alles geworden ist
2. Ersteinrichtung von Freeacs
Die grundlegende Steuerungseinheit für ACS ist die Einheit oder CPE (Customer Premises Equipment). Und was wir am wichtigsten sind, um Einheiten zu verwalten, ist ihr Einheitentyp, d. h. ein Hardwaremodell, das einen Satz konfigurierbarer Parameter für eine Einheit und ihre Software definiert. Aber bis wir wissen, wie man einen neuen Einheitentyp richtig erhält, wäre es am besten, die Einheit selbst danach zu fragen, indem man den Entdeckungsmodus aktiviert.
In der Produktion ist dieser Modus absolut unmöglich zu verwenden, aber wir müssen den Motor so schnell wie möglich starten und uns die Fähigkeiten des Systems ansehen. Alle Grundeinstellungen werden in /opt/freeacs-* gespeichert. Deshalb öffnen wir
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 zu /etc/nginx/nginx.conf hinzufügen
client_max_body_size 32m;
zum http-Bereich. Andernfalls können wir mit Firmware von nicht mehr als 1 Mio. arbeiten.
Wir starten neu und sind bereit, mit Geräten zu arbeiten.
Und in der Rolle des Geräts (CPE) werden wir ein Workaholic-Baby bekommen
Vor einer Testverbindung empfiehlt es sich, das CPE manuell auf die minimale Arbeitskonfiguration zu konfigurieren, damit die Parameter, die Sie in Zukunft konfigurieren möchten, nicht leer sind. Für einen Router können Sie mindestens einen DHCP-Client auf Ether1 aktivieren, das tr-069client-Paket installieren und Passwörter festlegen.
3. Mikrotik anschließen
Es ist wünschenswert, alle Geräte mit einer gültigen Seriennummer als Login zu verbinden. Dann wird Ihnen in den Protokollen alles klar sein. Jemand rät zur Verwendung von WAN MAC – glauben Sie es nicht. Jemand verwendet für alle ein gemeinsames Login/Pass-Paar – umgehen Sie es.
Öffnen des tr-069-Protokolls zur Überwachung von „Verhandlungen“
tail -f /var/log/freeacs-tr069/tr069-conversation.log
Winbox öffnen, Menüpunkt TR-069.
AC-URL: http://10.110.0.109/tr069/prov
(durch Ihre IP ersetzen)
Benutzername: 9249094C26CB (Seriennummer vom System>Routerboard kopieren)
Passwort: 123456 (nicht für die Entdeckung erforderlich, aber notwendig)
Wir ändern das periodische Informationsintervall nicht. Wir werden diese Einstellung über unser ACS vornehmen
Unten sind die Einstellungen für die Remote-Initialisierung der Verbindung aufgeführt, aber ich konnte mikrotik nicht im Handumdrehen dazu bringen, damit zu arbeiten. Obwohl die Remote-Anfrage mit Telefonen sofort funktioniert. Muss es herausfinden.
Nach Betätigung des Apply-Buttons werden im Terminal Daten ausgetauscht und im Freeacs-Webinterface sehen Sie unseren Router mit dem automatisch erstellten Unit Type „hAPaclite“.
Der Router ist verbunden. Sie können sich den automatisch generierten Einheitentyp ansehen. Wir öffnen Easy Provisioning > Unit Type > Unit Type Overview > hAPaclite
. Was nicht da ist! Bis zu 928 Parameter (ich habe die Shell ausspioniert). Viel oder wenig – wir werden es später herausfinden, aber jetzt werfen wir nur einen kurzen Blick darauf. Das ist es, was „Einheitstyp“ bedeutet. Dies ist eine Liste unterstützter Optionen mit Schlüsseln, aber keinen Werten. Die Werte werden in den folgenden Ebenen festgelegt: Profile und Einheiten.
4. Konfigurieren Sie Mikrotik
Es ist Zeit zum Herunterladen
Und wir selbst klicken im Webinterface auf den Stift neben unserem Gerät und gehen in den Gerätekonfigurationsmodus. Es sieht aus wie das:
Lassen Sie uns kurz analysieren, was auf dieser Seite interessant ist:
Einheitenkonfigurationsblock
- Profil: Dies ist das Profil innerhalb des Einheitentyps. Die Hierarchie ist wie folgt:
UnitType > Profile > Unit
. Das heißt, wir können beispielsweise Profile erstellenhAPaclite > hotspot
иhAPaclite > branch
, aber innerhalb des Gerätemodells
Blockbereitstellung mit Knöpfen
Hinweise weisen darauf hin, dass alle Schaltflächen im Bereitstellungsblock die Konfiguration sofort über die ConnectionRequestURL anwenden können. Aber wie ich oben sagte, funktioniert dies nicht. Nachdem Sie die Tasten gedrückt haben, müssen Sie den tr-069-Client auf Mikrotik neu starten, um die Bereitstellung manuell zu starten.
- Freq/Spread: Wie oft pro Woche soll die Konfiguration ± % bereitgestellt werden, um die Belastung des Servers und der Kommunikationskanäle zu reduzieren. Standardmäßig kostet es 7/20, d. h. jeden Tag ± 20 % und geben Sie in Sekunden an, wie es ist. Bisher macht es keinen Sinn, die Lieferhäufigkeit zu ändern, weil. Es kommt zu zusätzlichem Rauschen in den Protokollen und nicht immer erwarteten Einstellungen
Bereitstellungsverlaufsblock (letzte 48 Stunden)
- Vom Aussehen her ähnelt die Geschichte einer Geschichte, aber wenn Sie auf den Titel klicken, gelangen Sie zu einem praktischen Datenbanksuchtool mit regulärem Ausdruck und Extras
Parameterblock
Der größte und wichtigste Block, in dem tatsächlich die Parameter für diese Einheit eingestellt und gelesen werden. Jetzt sehen wir nur noch die wichtigsten Systemparameter, ohne die ACS mit dem Gerät nicht arbeiten kann. Aber wir erinnern uns, dass wir sie im Einheitentyp haben – 928. Sehen wir uns alle Werte an und entscheiden, womit Mikrotik isst.
4.1 Auslesen der Parameter
Klicken Sie im Block „Bereitstellung“ auf die Schaltfläche „Alles lesen“. Der Block hat eine rote Aufschrift. Auf der rechten Seite erscheint eine Spalte CPE-Wert (aktuell).. ProvisioningMode wurde in den Systemeinstellungen auf READALL geändert.
Und… außer einer Meldung in System.X_FREEACS-COM.IM.Message wird nichts passieren Kick failed at...
.
Starten Sie den TR-069-Client neu oder starten Sie den Router neu und aktualisieren Sie die Browserseite so lange, bis Sie die Parameter in den fröhlichen grauen Kästchen auf der rechten Seite sehen
Falls jemand einen Schluck vom altbewährten trinken möchte, wird dieser Modus im Handbuch als 10.2 Inspektionsmodus beschrieben. Es lässt sich einschalten und funktioniert etwas anders, aber das Wesentliche ist durchaus beschrieben
Der READALL-Modus schaltet sich nach 15 Minuten ab und wir werden versuchen herauszufinden, was hier nützlich ist und was im laufenden Betrieb korrigiert werden kann, während wir uns in diesem Modus befinden.
Sie können IP-Adressen ändern, Schnittstellen aktivieren/deaktivieren, Firewall-Regeln, die mit Kommentaren versehen sind (ansonsten ein komplettes Durcheinander), WLAN und so weiter.
Das heißt, es ist noch nicht möglich, Mikrotik nur mit TR-069-Tools sinnvoll zu konfigurieren. Man kann aber sehr gut überwachen. Es stehen Statistiken zu Schnittstellen und deren Status, freiem Speicher usw. zur Verfügung.
4.2 Bereitstellung von Parametern
Versuchen wir nun, die Parameter über tr-069 auf „natürliche“ Weise an den Router zu liefern. Das erste Opfer wird Device.DeviceInfo.X_MIKROTIK_SystemIdentity sein. Wir finden es in den Parametern der Einheit All. Wie Sie sehen, ist es nicht festgelegt. Das bedeutet, dass jede Einheit selbst eine beliebige Identität haben kann. Genug davon, das zu ertragen!
Wir stechen in die Spalte „Erstellen“ ein Häkchen, legen den Namen „Mr.White“ fest und klicken 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.
Aber das reicht uns nicht. Es ist gut, einen Parameter wie „Identität“ immer zur Hand zu haben, wenn man nach der richtigen Einheit sucht. Wir stöbern im Namen des Parameters und setzen dort die Kontrollkästchen Anzeige (D) und Durchsuchbar (S). Der Parameterschlüssel wird in RWSD geändert (denken Sie daran, dass Namen und Schlüssel auf der höchsten Einheitentypebene festgelegt werden).
Der Wert wird nun nicht nur in der allgemeinen Suchliste angezeigt, sondern ist auch für die Suche verfügbar Support > Search > Advanced form
Wir leiten die Bereitstellung ein und schauen uns die Identität an. Hallo Mr.White! Jetzt können Sie Ihre Identität nicht mehr selbst ändern, während tr-069client ausgeführt wird
4.3 Skripte ausführen
Da wir herausgefunden haben, dass es ohne sie nicht geht, wollen wir sie erfüllen.
Bevor wir jedoch mit der Arbeit mit Dateien beginnen, müssen wir die Anweisung korrigieren public.url
im Ordner /opt/freeacs-tr069/config/application-config.conf
Immerhin haben wir noch eine Testkonfiguration mit einem Skript installiert. Nicht vergessen?
# --- Public url (used for download f. ex.) ---
public.url = "http://10.110.0.109"
public.url: ${?PUBLIC_URL}
Starten Sie das ACS neu und gehen Sie direkt zu Files & Scripts
.
Aber was jetzt bei uns eröffnet wird, gehört zum Unit Type, d.h. global an alle hAP ac lite-Router, sei es ein Branch-Router, Hotspot oder Capsman. Ein so hohes Niveau benötigen wir noch nicht, 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. Anständige Position mit einem separaten Softwarepaket und einer kleinen Anzahl von Parametern. Lass uns gehen Easy Provisioning > Profile > Create Profile
und erstellen Sie ein Profil im Einheitentyp:hAPaclite Zeitserver. Wir hatten keine Parameter im Standardprofil, daher gibt es nichts zu kopieren Parameter kopieren von: „nicht kopieren…“
Hier gibt es noch überhaupt keine Parameter, aber es wird möglich sein, diejenigen einzustellen, die wir später auf unseren aus hAPaclite geformten Zeitservern sehen wollen. Zum Beispiel die allgemeinen Adressen von NTP-Servern.
Gehen wir zur Gerätekonfiguration und verschieben sie in das Zeitserverprofil
Endlich gehen wir zu Files & Scripts
, erstellen Sie Skripte, und hier warten erstaunlich praktische Brötchen auf uns.
Um ein Skript auf einer Einheit auszuführen, müssen wir eine Auswahl treffen Typ:TR069_SCRIPT а Name und Vorname и Zielname muss die Erweiterung .alter haben
Gleichzeitig können Sie bei Skripten im Gegensatz zu Software entweder eine fertige Datei hochladen oder sie einfach vor Ort schreiben/bearbeiten Content. Versuchen wir, genau dort zu schreiben.
Und damit Sie das Ergebnis sofort sehen können, fügen Sie den VLAN-Router zu Ether1 hinzu
/interface vlan
add interface=ether1 name=vlan1 vlan-id=1
Wir fahren, wir drücken Hochladen und fertig. Unser Drehbuch vlan1.alter
in den Startlöchern warten.
Also, lasst uns gehen? Nein. Wir müssen auch eine Gruppe für unser Profil 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 sind für die Skriptausführung über Advanced Provisioning erforderlich. Normalerweise sind Gruppen Standorten zugeordnet und haben eine verschachtelte Struktur. Lasst uns eine Russland-Gruppe gründen.
Stellen Sie sich vor, wir hätten unsere Suche von „Alle Weltzeitserver auf hAPaclite“ auf „Alle russischen Zeitserver auf hAPaclite“ eingegrenzt. Es gibt immer noch eine riesige Menge an allem Interessanten in Gruppen, aber wir haben keine Zeit. Kommen wir zu den Drehbüchern.
Advanced Provisioning > Job > Create Job
Da wir uns im erweiterten Modus befinden, können Sie hier schließlich eine Reihe verschiedener Bedingungen für den Start der Aufgabe, Fehlerverhalten, Wiederholungen und Timeouts festlegen. Ich empfehle, dies alles in den Handbüchern zu lesen oder es später bei der Implementierung in der Produktion zu besprechen. Lassen Sie uns vorerst einfach n1 auf Stoppregeln setzen, damit die Aufgabe stoppt, sobald sie in unserer ersten Einheit abgeschlossen ist.
Wir füllen das Notwendige aus und es bleibt nur noch der Start!
Drücken Sie START und warten Sie. Jetzt läuft der Zähler der Geräte, die durch das unzureichend debuggte Skript getötet wurden, zügig! Nein, natürlich. Solche Aufgaben werden für eine lange Zeit erledigt, und das ist ihr Unterschied zu Skripten, Ansible usw. Einheiten selbst beantragen Aufgaben nach einem Zeitplan oder sobald sie im Netzwerk erscheinen. ACS verfolgt, welche Einheiten bereits Aufgaben erhalten haben und wie diese beendet wurden, und schreibt dies in die Parameter der Einheit. Es gibt 1 Einheit in unserer Gruppe, und wenn es 1001 wären, würde der Administrator diese Aufgabe starten und angeln gehen
Aufleuchten. Starten Sie den Router bereits neu oder starten Sie den TR-069-Client neu. Alles sollte reibungslos verlaufen und Mr.White bekommt ein neues VLAN. Und unsere Stop-Regel-Aufgabe wechselt in den Status PAUSED. Das heißt, es kann immer noch neu gestartet oder geändert werden. Wenn Sie auf FERTIG klicken, wird die Aufgabe ins Archiv abgeschrieben
4.4 Aktualisieren der Software
Dies ist ein sehr wichtiger Punkt, da die Mikrotik-Firmware modular aufgebaut ist, das Hinzufügen von Modulen jedoch nichts an der gesamten Firmware-Version des Geräts ändert. Unser ACS ist normal und daran nicht gewöhnt.
Jetzt machen wir es im Quick & Dirty-Stil und pushen das NTP-Modul gleich in die allgemeine Firmware, aber sobald die Version auf dem Gerät aktualisiert ist, können wir auf die gleiche Weise kein weiteres Modul mehr hinzufügen .
In der Produktion ist es besser, auf einen solchen Trick zu verzichten und Module, die für Unit Type optional sind, nur mit Skripten zu installieren.
Als Erstes müssen wir also Softwarepakete mit den erforderlichen Versionen und Architekturen vorbereiten und sie auf einen verfügbaren Webserver stellen. Für den Test wird jeder gehen, der unseren Mr.White erreichen kann, und für die Produktion ist es besser, einen automatisch aktualisierenden Spiegel der erforderlichen Software zu erstellen, dessen Veröffentlichung im Internet nicht beängstigend ist
Wichtig! Vergessen Sie nicht, bei Updates immer das tr-069client-Paket einzubinden!
Wie sich herausstellte, ist die Länge des Pfades zu den Paketen sehr wichtig! Wenn ich versuche, so etwas wie zu verwenden http://192.168.0.237/routeros/stable/mipsbe/routeros-mipsbe-6.45.6.npk
Mikrotik stellte eine zyklische Verbindung mit der Ressource her und sendete wiederholt TRANSFERCOMPLETE-Protokolle an tr-069. Und ich habe einige Nervenzellen verschwendet, um herauszufinden, was los war. Deshalb legen wir es bis zur Klärung in die Wurzel
Wir sollten also drei NPK-Dateien über http verfügbar haben. Ich habe es so hinbekommen
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
Nun muss dies in eine XML-Datei mit FileType = „1 Firmware Upgrade Image“ formatiert werden, die wir an Mikrotik weiterleiten. Der Name sei ros.xml
Wir machen nach den Anweisungen von
<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>
Ein Mangel ist offensichtlich Username/Password
um auf den Download-Server zuzugreifen. Sie können entweder versuchen, es 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 die Mikrotik-Beamten nach der maximalen Pfadlänge zu *.npk
Wir gehen zum Bekannten Files & Scripts
, und erstellen Sie dort eine SOFTWARE-Datei mit Name:ros.xml, Zielname:ros.xml und Version:6.45.6
Aufmerksamkeit! Die Version muss hier genau in dem Format angegeben werden, in dem sie auf dem Gerät angezeigt wird und im Parameter übergeben wird System.X_FREEACS-COM.Device.SoftwareVersion
.
Wir wählen unsere xm-Datei zum Laden aus und fertig.
Jetzt haben wir viele Möglichkeiten, das Gerät zu aktualisieren. Über den Assistenten im Hauptmenü, über „Erweiterte Bereitstellung“ und Aufgaben mit dem Typ „SOFTWARE“ oder gehen Sie einfach zur Gerätekonfiguration und klicken Sie auf „Upgrade“. Wählen wir den einfachsten Weg, sonst quillt der Artikel auf.
Wir drücken den Knopf, leiten die Bereitstellung ein und fertig. Das Testprogramm ist abgeschlossen. Jetzt können wir mehr mit Mikrotik machen.
5. Заключение
Als ich mit dem Schreiben begann, wollte ich zunächst den Anschluss eines IP-Telefons beschreiben und anhand seines Beispiels erklären, wie cool es sein kann, wenn tr-069 einfach und mühelos funktioniert. Aber als ich dann weiterkam und mich mit den Materialien beschäftigte, dachte ich, dass für diejenigen, die den Mikrotik angeschlossen haben, kein Telefon für das Selbststudium unheimlich sein würde.
Im Prinzip können Freeacs, die wir getestet haben, bereits in der Produktion verwendet werden, aber dafür müssen Sie Sicherheit und SSL konfigurieren, Sie müssen Microtics für die automatische Konfiguration nach dem Zurücksetzen konfigurieren, Sie müssen das korrekte Hinzufügen von Unit Type debuggen und zerlegen Arbeit von Webservices und Fusion Shell und vieles mehr. Versuchen, erfinden und schreiben Sie eine Fortsetzung!
Vielen Dank an alle für Ihre Aufmerksamkeit! Über Korrekturen und Kommentare freue ich mich!
Liste der verwendeten Materialien und nützlichen Links:
Source: habr.com