TR-069 chez Mikrotik. Test de Freeacs en tant que serveur de configuration automatique pour RouterOS

Dans cet article, je vais essayer de décrire étape par étape le processus d'installation du serveur de test d'un excellent projet Freeacs à un état entièrement fonctionnel, et montrer les techniques pratiques pour travailler avec mikrotik: configuration via les paramètres, exécution de script, mise à jour, installation de modules supplémentaires, etc.

Le but de l'article est d'encourager ses collègues à abandonner la gestion des périphériques réseau à l'aide de râteaux et de béquilles terribles, sous la forme de scripts auto-écrits, Dude, Ansible, etc. Et, à cet égard, provoquent des feux d'artifice et des réjouissances massives dans les carrés.

0. Choix


Pourquoi les freeacs, et non les génies-ac, mentionnés dans le mikrotik-wiki , sont-ils plus vivants?
Parce que selon genie-acs avec mikrotik il y a des publications des Espagnols. Voici leur pdf et vidéo du MUM de l'année dernière. Les caravanes automatiques sur les diapositives sont cool, mais je voudrais m'éloigner du concept d'écriture de scripts, exécuter des scripts, exécuter des scripts ...

1. Installer des freeacs


Nous allons l'installer dans Centos7, et puisque les appareils transmettent beaucoup de données, et ACS travaille activement avec la base de données - nous ne serons pas avides de ressources. Pour un travail confortable, nous allouons 2 cœurs de processeur, 4 Go de RAM et 16 Go de stockage rapide ssd raid10. Je vais installer des freeacs dans le conteneur Proxmox VE lxc, et vous pouvez travailler dans n'importe quel outil qui vous convient.
N'oubliez pas de régler l'heure correcte sur la machine avec ACS.

Le système sera un test, nous ne serons donc pas intelligents et utiliserons simplement le script d'installation fourni avec gentillesse.

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

Dès que le script est terminé, vous pouvez immédiatement accéder à l'interface Web sur la machine IP, avec les informations d'identification admin / freeacs


Voici une si belle interface minimaliste, et à quel point tout cela a été cool et rapide

2. Configuration initiale des freeacs


L'unité de commande de base pour ACS est une unité ou CPE (équipement pour les locaux du client). Et surtout, ce dont nous avons besoin pour gérer les unités est leur type d'unité, c'est-à-dire modèle d'équipement qui définit un ensemble de paramètres d'unité personnalisables et son logiciel. Mais bien que nous ne sachions pas comment obtenir le nouveau type d'unité, il est préférable de demander l'unité elle-même en activant le mode découverte.

En production, ce mode est absolument impossible à utiliser, mais nous devons bientôt démarrer le moteur et voir les capacités du système. Tous les paramètres de base sont stockés dans / opt / freeacs- *. Par conséquent, ouvrez

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

nous trouvons

 discovery.mode = false 

et changer pour

 discovery.mode = true 

De plus, nous aimerions augmenter les tailles de fichiers maximales avec lesquelles nginx et mysql fonctionneront. Pour mysql, ajoutez la ligne à /etc/my.cnf

 max_allowed_packet=32M 

et pour nginx, dans /etc/nginx/nginx.conf, ajoutez

 client_max_body_size 32m; 

à la section http. Sinon, nous ne pouvons pas travailler avec plus de 1M de firmware.

Nous redémarrons et nous sommes prêts à travailler avec des appareils.

Et dans le rôle de l'appareil (CPE), nous aurons le hAP kid ACAP lite .

Avant la connexion de test, il est conseillé de configurer manuellement le CPE à la configuration de travail minimale afin que les paramètres que vous souhaitez configurer à l'avenir ne soient pas vides. Pour le routeur, vous pouvez activer au minimum le client DHCP sur ether1, installer le package tr-069client et définir les mots de passe.

3. Nous connectons Mikrotik


Il est conseillé de connecter toutes les unités en utilisant un numéro de série valide comme identifiant. Ensuite, tout sera clair pour vous dans les journaux. Quelqu'un conseille d'utiliser WAN MAC - ne croyez pas. Quelqu'un utilise une paire de connexion / passe commune pour tout le monde - contournez-les.

Nous ouvrons le journal tr-069 pour le suivi des «négociations»

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

Ouvrez winbox, élément de menu TR-069.
URL ACS: http://10.110.0.109/tr069/prov (remplacer par votre IP)
Nom d'utilisateur: 9249094C26CB (copiez la série du système> carte mère)
Mot de passe: 123456 (non nécessaire pour la découverte, mais pour l'être)
Intervalle d'information périodique que nous ne changeons pas. Nous émettrons ce paramètre via notre ACS

Vous trouverez ci-dessous les paramètres d'initialisation de la connexion à distance, mais je n'ai pas pu travailler avec mikrotik pour y parvenir. Bien que la demande à distance fonctionne avec les téléphones prêts à l'emploi. Il faudra comprendre.



Après avoir cliqué sur le bouton Appliquer, les données seront échangées dans le terminal, et dans l'interface Web Freeacs, vous pouvez voir notre routeur avec le type d'unité «hAPaclite» créé automatiquement.



Le routeur est connecté. Vous pouvez consulter le type d'unité créé automatiquement. Ouvrez Easy Provisioning > Unit Type > Unit Type Overview > hAPaclite . Qu'y a-t-il non seulement! Jusqu'à 928 paramètres (j'ai espionné dans le shell). Que ce soit beaucoup ou un peu, nous le découvrirons plus tard, mais pour l'instant juste un coup d'œil. C'est ce que signifie le type d'unité. Il s'agit d'une liste de paramètres pris en charge avec des clés mais pas de valeurs. Les valeurs sont définies dans les niveaux ci-dessous - Profils et unités.

4. Configurer Mikrotik


Il est temps de télécharger le guide de l' interface Web . Ce guide 2011 est comme une bouteille de bon vin vieilli. Ouvrons-le et partons respirer.

Et nous-mêmes, dans l'interface web, cliquez sur le crayon à côté de notre unité et passez en mode de configuration de l'unité. Cela ressemble à ceci:



Examinez brièvement ce qui est intéressant sur cette page:

Bloc de configuration de l'unité

  • Profil: il s'agit du profil à l'intérieur du type d'unité. La hiérarchie est la suivante: UnitType > Profile > Unit . Autrement dit, nous pouvons obtenir, par exemple, les profils hAPaclite > hotspot et hAPaclite > branch , mais dans le modèle d'appareil

Provisionnement des boutons
Les indications indiquent que tous les boutons du bloc Provisioning peuvent appliquer instantanément la configuration via ConnectionRequestURL. Mais, comme je l'ai dit ci-dessus, cela ne fonctionne pas, donc après avoir cliqué sur les boutons, vous devrez redémarrer le client tr-069 sur mikrotik pour démarrer manuellement l'approvisionnement.

  • Freq / Spread: combien de fois par semaine pour fournir une configuration de ±% afin de réduire la charge sur le serveur et les canaux de communication. Par défaut, cela coûte 7/20, soit tous les jours ± 20% et un indice comme celui-ci en quelques secondes. Bien qu'il soit inutile de modifier la fréquence de livraison, tk. il y aura un bruit excessif dans les journaux et pas toujours l'application attendue des paramètres

Historique de provisionnement des blocs (dernières 48 heures)

  • Cela ressemble à une histoire, comme une histoire, mais en cliquant sur le titre, vous accédez à un outil de recherche de base de données pratique, avec regexp et buns

Bloc de paramètres

Le bloc le plus grand et le plus important, où, en fait, les paramètres de cette unité sont définis et lus. Nous ne voyons maintenant que les paramètres système les plus importants, sans lesquels ACS ne peut pas fonctionner avec l'unité. Mais nous nous souvenons que nous avons 928 unités de type. Examinons toutes les valeurs et décidons de ce que tout cela mange avec Mikrotik.

4.1 Lire les paramètres


Dans le bloc Provisioning, cliquez sur le bouton Read all. Dans le bloc - une inscription rouge. La colonne de valeur CPE (actuelle) apparaît à droite. Dans les paramètres système, ProvisioningMode est devenu READALL.



Et ... rien ne se passera sauf le message dans System.X_FREEACS-COM.IM.Message Kick failed at...

Redémarrez le client TR-069 ou redémarrez le routeur et continuez à actualiser la page du navigateur jusqu'à ce que vous obteniez les paramètres dans les rectangles gris gais à droite
Si quelqu'un veut prendre une gorgée de l'ancien - ce mode dans le manuel est décrit comme 10.2 Mode d'inspection. Il s'allume et fonctionne un peu mal, mais l'essence est décrite assez



Le mode READALL lui-même s'éteindra après 15 minutes, et nous essaierons de déterminer ce qui est utile et ce qui peut être corrigé «à la volée» pendant que nous sommes dans ce mode.

Vous pouvez changer les adresses IP, activer / désactiver les interfaces, les règles de pare-feu, qui ont des commentaires (sinon un désordre complet), le Wi-Fi et ainsi de suite.

Autrement dit, il n'est pas encore possible de configurer mikrotik sane avec TR-069 uniquement. Mais vous pouvez très bien surveiller. Statistiques disponibles sur les interfaces et leur état, mémoire libre, etc.

4.2 Paramètres de livraison


Essayons maintenant de fournir les paramètres au routeur, via tr-069, de manière "naturelle". La première victime sera Device.DeviceInfo.X_MIKROTIK_SystemIdentity. On le retrouve dans les paramètres unitaires All. Apparemment - ce n'est pas réglé. Cela signifie que n'importe quelle unité peut elle-même avoir n'importe quelle identité. Arrête ça!
Poke a daw dans la colonne de création, définissez le nom Mr.White et piquez le bouton Mettre à jour les paramètres. Que se passera-t-il ensuite, vous l'avez déjà deviné. Lors de la prochaine session de communication avec le siège, le routeur doit changer son identité.



Mais cela ne nous suffit pas. Un paramètre tel que l'identité est bon d'avoir toujours à portée de main lors de la recherche de l'unité souhaitée. Nous poussons dans le nom du paramètre et y mettons l'affichage des griffes (D) et consultable (S). La clé de paramètre devient RWSD (n'oubliez pas que les noms et les clés sont définis au niveau le plus élevé du type d'unité)



La valeur est désormais non seulement affichée dans la liste de recherche générale, mais également disponible pour la recherche dans Support > Search > Advanced form



Nous initions la mise à disposition et examinons l'identité. Bonjour Mr.White! Maintenant, vous ne pourrez plus changer votre identité pendant que tr-069client est en cours d'exécution



4.3 Nous exécutons des scripts


Puisque nous avons découvert qu’il n’y avait aucun moyen sans eux, exécutons-les.

Mais avant de commencer à travailler avec des fichiers, nous devons corriger la directive public.url dans le fichier /opt/freeacs-tr069/config/application-config.conf
Après tout, nous avons toujours une configuration de test installée par un script. N'oubliez pas?

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


Redémarrez ACS et dirigez-vous directement vers Files & Scripts .



Mais ce que nous ouvrons maintenant appartient au type d'unité, c'est-à-dire globalement à tous les routeurs hAP ac lite, qu'il s'agisse d'un routeur de branche, d'un hotspot ou d'un capsman. Nous n'avons pas encore besoin d'un niveau aussi élevé, par conséquent, avant de travailler avec des scripts et des fichiers, vous devez créer un profil. Vous pouvez l'appeler vous-même, comme la «position» de l'appareil.

Faisons de notre bébé un serveur de temps. Poste décent avec un progiciel séparé et un petit nombre de paramètres. Accédez à Easy Provisioning > Profile > Create Profile et créez un profil de serveur de temps dans Type d'unité: hAPaclite . Nous n'avions pas de paramètres dans le profil par défaut, il n'y a donc rien à copier Copier les paramètres de: "ne pas copier ..."



Il n'y a pas encore de paramètres, mais il sera possible de définir ceux que nous voulons voir plus tard sur nos serveurs de temps, bricolé à partir de hAPaclite. Par exemple, les adresses communes des serveurs NTP.
Passons à la configuration de l'unité et déplaçons-la dans le profil du serveur de temps

Enfin, nous allons dans Files & Scripts , faisons des scripts, et ici nous attendons des petits pains incroyablement pratiques.

Pour exécuter le script sur l'unité, nous devons sélectionner Type: TR069_SCRIPT et Nom et Nom cible doivent avoir l'extension .alter
Dans le même temps, pour les scripts, contrairement aux logiciels, vous pouvez soit charger le fichier fini, soit simplement l'écrire / le modifier dans le champ Contenu. Essayons d'écrire ici.

Et pour voir immédiatement le résultat - ajoutez un routeur vlan à ether1

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



Entrez, cliquez sur Télécharger et vous avez terminé. Notre script vlan1.alter attend dans les coulisses.

Eh bien, l'a conduit? Non. Nous devons également ajouter un groupe à notre profil. Les groupes ne sont pas inclus dans la hiérarchie des équipements, mais sont nécessaires pour rechercher des unités dans UnitType ou Profile et sont requis pour exécuter des scripts via Advanced Provisioning. Habituellement, les groupes sont associés à des emplacements et ont une structure imbriquée. Faisons un groupe Russie.



Imaginez, nous avons pu restreindre la recherche de «Serveurs de tous les temps du monde sur hAPaclite» à «Serveurs de tous les temps de la Russie sur hAPaclite». Il y a encore une énorme couche de tout ce qui est intéressant avec les groupes, mais nous n'avons pas le temps. Déjà conduit dans des scripts.

 Advanced Provisioning > Job > Create Job 



Puisque nous sommes après tout en mode avancé, vous pouvez spécifier ici un tas de conditions différentes pour démarrer le travail, le comportement d'erreur, les tentatives et les délais d'attente. Je recommande de tout lire dans les manuels ou d'en discuter plus tard lors de sa mise en œuvre en production. Pour l'instant, il suffit de mettre n1 dans les règles Stop pour que la tâche s'arrête dès qu'elle est terminée sur notre 1 unité.

Nous remplissons le nécessaire, et il ne reste plus qu'à courir!



Appuyez sur START et attendez. Maintenant, le compteur d'appareils tués par un script sous-développé fonctionnera rapidement! Non, bien sûr. De telles tâches sont données depuis longtemps, et c'est leur différence avec les scripts, Ansible et ainsi de suite. Les unités elles-mêmes postulent pour des tâches selon un calendrier ou lorsqu'elles apparaissent sur le réseau, ACS garde la trace des unités qui ont déjà reçu des tâches, et comment elles se sont terminées, et les écrit dans les paramètres de l'unité. Il y a 1 unité dans notre groupe, et s'il y en avait 1001, l'administrateur exécuterait cette tâche et irait pêcher

Allez. Redémarrez déjà le routeur ou redémarrez le client TR-069. Tout devrait bien se passer et Mr.White obtiendra un nouveau vlan. Et notre affectation de règle d'arrêt passera au statut PAUSED. Autrement dit, il peut toujours être redémarré ou modifié. Si vous cliquez sur TERMINER, la tâche sera écrite dans l'archive

4.4 Mettre à jour le logiciel


C'est un point très important, car le firmware Mikrotik est modulaire, mais l'ajout de modules ne change pas la version générale du firmware de l'appareil. Notre ACS est normal, et je n'y suis pas habitué.
Maintenant, nous allons le faire dans un style rapide et sale, et pousser le module NTP dans le firmware général tout de suite, mais dès que la version sera mise à jour sur l'appareil, nous ne pourrons pas ajouter un autre module de la même manière.
En production, une telle astuce est préférable de ne pas appliquer et d'installer des modules facultatifs pour le type d'unité uniquement avec des scripts.

Donc, la première chose que nous devons faire est de préparer les packages logiciels des versions et de l'architecture requises, et de les mettre sur un serveur Web accessible. Pour le test, tout le monde ira que notre Mr.White peut atteindre, et pour la production, il est préférable d'assembler un miroir de mise à jour automatique du logiciel nécessaire, ce qui n'est pas effrayant à mettre sur le web
Important! N'oubliez pas de toujours inclure un package avec tr-069client dans les mises à jour!

Il s'est avéré que la longueur du chemin vers les paquets est très importante! Lorsque j'ai essayé d'utiliser quelque chose comme http://192.168.0.237/routeros/stable/mipsbe/routeros-mipsbe-6.45.6.npk , mikrotik est tombé dans une connexion cyclique à la ressource, donnant le TRFERCOMPLETE au journal tr-069. Et j'ai passé une certaine quantité de cellules nerveuses à essayer de comprendre ce qui n'allait pas. Par conséquent, pendant que nous mettons à la racine, jusqu'à clarification

Donc, nous devrions avoir trois fichiers npk disponibles via http. Il s'est avéré donc pour moi

 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 

Maintenant, il doit être publié dans le fichier xml avec FileType = "1 Firmware Upgrade Image", dont nous alimentons la microtique. Que le nom soit ros.xml

Nous suivons les instructions du 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> 

L'absence de nom d' Username/Password de Username/Password pour accéder au serveur de téléchargement est frappante. Vous pouvez soit essayer de saisir ceci comme dans la clause A.3.2.8 du protocole tr-069:

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

Ou demandez directement au Mikrotik officiel, ainsi que la longueur maximale du chemin vers * .npk

Nous allons aux Files & Scripts nous connaissons et créons un fichier comme SOFTWARE avec le nom: ros.xml, le nom cible: ros.xml et la version: 6.45.6
Attention! La version ici doit être spécifiée dans le format dans lequel elle est affichée sur l'appareil et transmise dans le paramètre System.X_FREEACS-COM.Device.SoftwareVersion .

Nous sélectionnons notre fichier xm à télécharger et vous avez terminé.



Nous avons maintenant une tonne de façons de mettre à niveau votre appareil. Via l'assistant du menu principal, le provisionnement avancé et les tâches de type LOGICIEL, ou accédez simplement à la configuration de l'unité et cliquez sur Mettre à niveau. Nous choisissons le moyen le plus simple, et même alors, l'article est gonflé.



Cliquez sur le bouton, lancez la mise à disposition et vous avez terminé. Le programme de test est terminé. Maintenant, nous pouvons faire plus avec mikrotik.

5. Conclusion


Quand j'ai commencé à écrire, je voulais d'abord décrire la connexion de l'ip-phone, et en utilisant son exemple pour expliquer à quel point cela peut être cool lorsque le tr-069 fonctionne facilement et sans effort. Mais ensuite, en progressant et en fouillant dans les documents, j'ai pensé que pour celui qui avait connecté Mikrotik, aucun téléphone ne ferait peur pour une étude indépendante.

En principe, les Freeacs que nous avons testés peuvent déjà être utilisés en production, mais pour cela, vous devez configurer la sécurité, SSL, vous devez configurer Mikrotik pour la configuration automatique après la réinitialisation, vous devez déboguer l'ajout correct du type d'unité, démonter le travail des services Web et du shell de fusion, et bien plus encore. Essayez, inventez et écrivez une suite!

Merci à tous pour votre attention! Je serai ravi des amendements et commentaires!

Liste des matériaux utilisés et liens utiles:

Le fil de discussion que j'ai rencontré au début des recherches sur le sujet
TR-069 CPE WAN Management Protocol Amendement-6
Wiki Freeacs
Paramètres tr-069 dans Mikrotik, et leur conformité avec les commandes du terminal

Mise à jour 10.13.2019:

En parcourant les informations sur le projet FreeACS, je suis tombé sur un patch très intéressant proposé par des Polonais qui ont FreeACS desservant des appareils 20K.

Le patch est fait pour différentes versions de matériel, mais dans le cas des microtics, il vous permettra de créer plusieurs types d'unités pour les mêmes routeurs avec un ensemble différent de modules logiciels.
Par exemple, hAPaclite-ntp, hAPaclite-ups, etc. Et, en conséquence, pour contourner la restriction "un modèle == un firmware"

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


All Articles