Dans cet article, je vais essayer de décrire étape par étape le processus d'installation d'un serveur de test pour ce magnifique projet jusqu'à un état entièrement fonctionnel, et montrer des astuces pratiques pour travailler avec mikrotik : configuration via paramètres, exécution de scripts, mise à jour, installation de modules supplémentaires, etc.
L'objectif de cet article est d'inciter mes collègues à abandonner la gestion des appareils réseau à l'aide de outils terribles et bricolés, tels que des scripts maisons, Dude, Ansible, etc. Et à cet égard, provoquer des salves d'applaudissements et une joie collective dans les rues.
0. Choix
Pourquoi freeacs et pas genie-acs, mentionné dans , comme une option plus dynamique ?
Parce que pour genie-acs avec mikrotik, il y a des publications des Espagnols. Voici leurs et présentations de l'année dernière à MUM. Les auto-partages sur les diapositives - c'est génial, mais je voudrais m'éloigner du concept d'écrire des scripts pour exécuter des scripts pour exécuter des scripts…
1. Installation de freeacs
Nous allons l'installer sur Centos7, et comme les appareils transmettent beaucoup de données, et que l'ACS travaille activement avec la base de données - nous ne lésinerons pas sur les ressources. Pour un fonctionnement confortable, nous allons allouer 2 cœurs CPU, 4 Go de RAM et 16 Go de stockage rapide ssd raid10. J'installerai freeacs dans un conteneur lxc Proxmox VE, et vous pouvez travailler avec n'importe quel outil de votre choix.
N'oubliez pas de configurer l'heure correcte sur la machine avec l'ACS.
Le système sera de test, donc nous ne compliquerons pas les choses et utiliserons simplement le script d'installation gentiment fourni, tel quel.
wget https://raw.githubusercontent.com/freeacs/freeacs/master/scripts/install_centos.sh
chmod +x install_centos.sh
./install_centos.shDès que le script aura terminé son exécution - vous pourrez immédiatement accéder à l'interface web via l'ip de la machine, avec les identifiants admin/freeacs

Voici une interface minimaliste agréable, et comme tout a bien et rapidement fonctionné
2. Configuration initiale de freeacs
L'unité de gestion de base pour l'ACS est l'unité ou CPE (Customer Premises Equipment). Et le plus important pour gérer les unités, c'est leur Type d'Unité, c'est-à-dire le modèle d'équipement qui définit l'ensemble des paramètres configurables de l'unité et son logiciel. Mais comme nous ne savons pas encore comment ajouter correctement un nouveau Type d'Unité, il est préférable de le demander directement à l'unité en activant le Mode de Découverte.
Ce mode ne doit absolument pas être utilisé en production, mais nous devons rapidement démarrer et explorer les capacités du système. Tous les paramètres principaux sont stockés dans /opt/freeacs-* . Donc, ouvrons
vi /opt/freeacs-tr069/config/application-config.conf , nous trouvons
discovery.mode = falseet nous changeons en
discovery.mode = trueDe plus, nous devrions augmenter les tailles maximales des fichiers avec lesquels nginx et mysql vont fonctionner. Pour mysql, ajoutons la ligne suivante dans /etc/my.cnf
max_allowed_packet=32M, et pour nginx, dans /etc/nginx/nginx.conf, ajoutons
client_max_body_size 32m;dans la section http. Sinon, nous pourrons travailler avec des firmwares de pas plus de 1M.
Redémarrons, et nous sommes prêts à travailler avec les appareils.
Et en tant qu'appareil (CPE), nous aurons le petit travailleur .
Avant la connexion de test, il est conseillé de configurer manuellement le CPE avec une configuration minimale fonctionnelle, afin que les paramètres que vous voudrez configurer à l'avenir ne soient pas vides. Pour le routeur, vous pouvez au minimum activer le client dhcp sur ether1, installer le paquet tr-069client et définir des mots de passe.
3. Connectons le Mikrotik
Il est conseillé de connecter toutes les unités en utilisant un numéro de série valide comme identifiant. Cela vous aidera à comprendre les logs. Certains recommandent d'utiliser le WAN MAC - ne les croyez pas. D'autres utilisent un couple login/pass commun pour tous - évitez-les.
Ouvrons le log tr-069 pour surveiller les « négociations »
tail -f /var/log/freeacs-tr069/tr069-conversation.logOuvrons winbox, section TR-069.
ACS URL : http://10.110.0.109/tr069/prov (remplacez par votre IP)
Nom d'utilisateur : 9249094C26CB (nous copions le numéro de série depuis system>routerboard)
Mot de passe : 123456 (pas nécessaire pour la découverte, mais utile)
Nous ne modifions pas l'intervalle d'information périodique. Ce réglage sera délivré via notre ACS
Ci-dessous, les paramètres pour initialiser la connexion à distance, mais je n'ai pas réussi à faire fonctionner mikrotik avec ça en une fois. Bien que pour les téléphones, la demande à distance fonctionne « prête à l'emploi ». Il faudra approfondir.

Après avoir cliqué sur le bouton Appliquer — des échanges de données commenceront dans le terminal, et dans l'interface web de Freeacs, nous pourrons voir notre routeur avec un Type d'Unité créé automatiquement « hAPaclite ».

Le routeur est connecté. Nous pouvons jeter un œil au Type d'Unité automatiquement créé. Ouvrons Easy Provisioning > Type d'Unité > Vue d'ensemble du Type d'Unité > hAPaclite. Que n'y a-t-il pas ! Au total, 928 paramètres (j'ai jeté un coup d'œil dans le shell). Beaucoup ou peu — nous le découvrirons plus tard, mais pour l'instant, jetons un œil rapide. Voilà ce que signifie Type d'Unité. C'est une liste des paramètres supportés avec des clés, mais sans valeurs. Les valeurs sont définies à des niveaux inférieurs — Profils et Unités.
4. Configurons Mikrotik
Il est temps de télécharger Ce guide date de 2011 — comme une bouteille de bon vin mûri. Ouvrons-le et laissons-le respirer.
Cliquez sur l'icône crayon à côté de notre unité dans l'interface Web et accédez au mode de configuration de l'unité. Cela ressemble à ceci :

Examinons brièvement ce qui est intéressant sur cette page :
Bloc Configuration de l'unité
- Profil : Il s'agit d'un profil au sein du type d'unité. La hiérarchie est la suivante :
UnitType > Profil > Unité. Nous pouvons donc créer, par exemple, des profilshAPaclite > hotspotethAPaclite > branche, mais au sein du modèle de l'appareil
Bloc Provisioning avec des boutons
Les indications suggèrent que tous les boutons du bloc Provisioning peuvent appliquer instantanément la configuration via ConnectionRequestURL. Mais, comme je l'ai dit plus haut, cela ne fonctionne pas, donc après avoir cliqué sur les boutons, il faudra redémarrer le client tr-069 sur le mikrotik pour un démarrage manuel du provision.
- Freq/Spread : Combien de fois par semaine livrer la configuration ± %, afin de réduire la charge sur le serveur et les canaux de communication. Par défaut, c'est 7/20, c'est-à-dire chaque jour ± 20 % avec une indication de ce que cela représente en secondes. Pour l'instant, il n'est pas nécessaire de changer la fréquence de livraison, car cela génèrerait un bruit supplémentaire dans les logs et ne garantit pas toujours l'application des réglages.
Bloc Historique du Provisioning (dernières 48 heures)
- Visuellement, l'historique ressemble à un historique, mais en cliquant sur le titre, vous accédez à un outil de recherche pratique à travers la base de données, avec regexp et fonctionnalités supplémentaires.
Bloc Paramètres
Le bloc le plus grand et le plus important, où les paramètres pour cette unité sont définis et lus. Actuellement, nous ne voyons que les paramètres système les plus importants, sans lesquels le fonctionnement de l'ACS avec l'unité est impossible. Mais nous savons que dans le type d'unité, il y en a — 928. Regardons toutes les valeurs et voyons comment cela se présente sur le mikrotik.
4.1 Lire les paramètres
Dans le bloc Provisioning, appuyez sur le bouton Lire tout. Dans le bloc — un message rouge. Une colonne apparaîtra à droite. Valeur CPE (actuelle). Dans les paramètres système, le ProvisioningMode est passé à READALL.

Et… rien ne se produira, à part un message dans System.X_FREEACS-COM.IM.Message Échec du démarrage à....
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 de joyeux rectangles gris sur la droite.
Si quelqu'un a envie de goûter un vieux cru — ce mode est décrit dans le manuel comme le 10.2 Mode d'inspection. Il s'active et fonctionne un peu différemment, mais le principe est bien décrit.

Le mode READALL s'éteindra de lui-même après 15 minutes, et nous essaierons de voir ce qu'il y a d'utile ici, et ce que nous pouvons ajuster « à la volée », tant que nous sommes en mode.
Il est possible de changer les adresses IP, d'activer/désactiver les interfaces, les règles de pare-feu avec des commentaires (sinon, ce serait le chaos total), le Wi-Fi et d'autres petits détails.
Autrement dit, il n'est pas encore possible de configurer Mikrotik de manière raisonnable uniquement avec les outils TR-069. Mais on peut surveiller assez efficacement. Des statistiques sur les interfaces et leur statut, la mémoire libre, etc., sont disponibles.
4.2 Livraison des paramètres
Essayons maintenant de livrer des paramètres au routeur via TR-069, de manière « naturelle ». La première victime sera Device.DeviceInfo.X_MIKROTIK_SystemIdentity. Nous le trouvons dans les paramètres de l'unité All. Comme on peut le voir, il n'est pas défini. Cela signifie que n'importe quelle unité peut avoir n'importe quelle identité. Il est temps d'y mettre un terme !
Nous cochons la case dans la colonne créer, nous définissons le nom Mr.White et cliquons sur le bouton Mettre à jour les paramètres. Vous devinez déjà ce qui va se passer ensuite. Lors de la prochaine session de communication avec le quartier général, le routeur doit changer son identité.

Mais cela ne suffit pas. Un paramètre comme l'identité est toujours bon à avoir sous la main lors de la recherche de l'unité appropriée. Nous cliquons sur le nom du paramètre et activons les cases Afficher (D) et Recherchable (S). La clé du paramètre change en RWSD (Rappelez-vous, les noms et les clés sont définis au niveau le plus élevé du type d'unité).

La valeur s'affiche désormais non seulement dans la liste générale de recherche, mais est également accessible pour la recherche dans Support > Rechercher > Formulaire avancé

Nous initions la provision et observons l'identité. Bonjour, Mr.White ! Vous ne pourrez pas changer d'apparence tant que le tr-069client est actif.

4.3 Exécution des scripts
Comme nous avons déterminé qu'il n'y a pas d'autre choix, commençons à les exécuter.
Mais avant de commencer à travailler avec les fichiers, nous devons modifier la directive public.url dans le fichier /opt/freeacs-tr069/config/application-config.conf
Nous avons encore la configuration de test installée par un seul script. N'est-ce pas ?
# --- Public url (used for download f. ex.) ---
public.url = "http://10.110.0.109"
public.url: ${?PUBLIC_URL}Nous redémarrons l'ACS et nous dirigeons directement vers Fichiers & Scripts.

Mais ce qui s'ouvre maintenant nous appartient à un type d'unité, c'est-à-dire globalement à tous les routeurs hAP ac lite, qu'il s'agisse du routeur d'un bureau, d'un hotspot ou de CAPsMAN. Nous n'avons pas besoin d'un niveau aussi élevé pour le moment, donc, avant de travailler avec les scripts et les fichiers, nous devrions créer un profil. On peut le nommer comme le « rôle » de l'appareil.
Faisons de notre petit appareil un serveur de temps. Un rôle respectable avec un paquet logiciel distinct et un petit nombre de paramètres. Allons dans Easy Provisioning > Profil > Créer un profil et créons dans le type d'unité : hAPaclite un profil timeserver. Il n'y avait pas de paramètres dans notre profil par défaut, donc il n'y a rien à copier. Copier les paramètres de : «ne pas copier…»

Il n'y a pour l'instant aucun paramètre ici, mais nous pourrons définir ceux que nous souhaiterons voir sur nos serveurs de temps, fabriqués à partir de hAPaclite. Par exemple, des adresses communes de serveurs NTP.
Nous allons dans la configuration de l'unité, et nous déplaçons celle-ci vers le profil timeserver.
Enfin, nous allons dans Fichiers & Scripts, pour créer des scripts, et ici nous avons des fonctionnalités incroyablement pratiques qui nous attendent.
Pour exécuter un script sur l'unité, nous devons choisir Type : TR069_SCRIPT plus Nom et Nom de la cible doivent avoir l'extension .alter
Cependant, pour les scripts, contrairement aux logiciels, on peut soit télécharger un fichier prêt, soit simplement l'écrire/modifier dans le champ Contenu. Essayons d'écrire directement là-bas.
Et pour voir immédiatement le résultat — ajoutons un VLAN au routeur sur ether1.
/interface vlan
add interface=ether1 name=vlan1 vlan-id=1
Nous le saisissons, cliquons sur Télécharger et c'est fait. Notre script vlan1.alter attend son heure.
Alors, on y va? Non. Il faut d'abord ajouter un groupe pour notre profil. Les groupes ne font pas partie de la hiérarchie du matériel, mais sont nécessaires pour rechercher des unités dans UnitType ou Profile et sont obligatoires pour exécuter des scripts via Advanced Provisioning. En général, les groupes sont liés à des emplacements et ont une structure imbriquée. Créons un groupe Russie.

Imaginez, nous venons juste de restreindre la recherche de «Tous les serveurs de temps du monde sur hAPaclite» à «Tous les serveurs de temps de la Russie sur hAPaclite». Il y a encore une énorme quantité d'informations intéressantes sur les groupes, mais nous n'avons pas le temps. Allons directement aux scripts.
Advanced Provisioning > Job > Créer un travail
Puisque nous sommes en mode avancé, nous pouvons indiquer un tas de différentes conditions pour le début de la tâche, le comportement en cas d'erreurs, des répétitions et des délais. Je recommande de lire tout cela dans les guides ou nous en discuterons lors de la mise en production. Pour l'instant, mettons seulement n1 dans les règles d'arrêt, afin que la tâche s'arrête dès qu'elle sera exécutée sur notre première unité.
Nous remplissons ce qu'il faut, et il ne reste plus qu'à lancer !

Nous cliquons sur DÉMARRER et attendons. Maintenant, le compteur des appareils non débogués tués par le script va se mettre à courir ! Non, bien sûr. Ces tâches prennent du temps, et c'est ce qui les différencie des scripts, d'Ansible et autres. Les unités sollicitent elles-mêmes les tâches selon un calendrier ou dès leur apparition sur le réseau, l'ACS surveille quelles unités ont déjà reçu des tâches, comment elles ont été exécutées et le consigne dans les paramètres de l'unité. Dans notre groupe, il y a une unité, mais s'il y en avait 1001 — l'admin aurait lancé cette tâche et serait allé à la pêche.
Allez-y. Redémarrez le routeur ou relancez le client TR-069. Tout devrait se passer sans problème et Mr.White obtiendra un nouveau vlan. Notre tâche sur la Stop rule passera au statut PAUSED. Cela signifie qu'elle pourra encore être redémarrée ou modifiée. Si vous cliquez sur FINISH, la tâche sera archivée.
4.4 Mise à jour du logiciel
C'est un point très important, car le firmware du MikroTik est modulaire, mais l'ajout de modules ne change pas la version globale du firmware de l'appareil. Notre ACS est normal, et il n'est pas habitué à cela.
Nous allons maintenant procéder de manière rapide et efficace, et intégrer le module NTP directement dans le firmware, mais une fois que la version de l'appareil sera mise à jour, nous ne pourrons plus ajouter de module de la même manière.
En production, il vaut mieux ne pas utiliser cette astuce, et n'installer des modules non obligatoires pour le type d'unité que par le biais de scripts.
Donc, la première chose que nous devons faire est de préparer les paquets de logiciel des versions et architectures nécessaires, et de les placer sur un serveur Web accessible. Pour le test, n'importe lequel suffira, tant que notre Mr.White peut y accéder, mais pour la production, il est préférable de créer un miroir de mise à jour automatique du logiciel nécessaire, qui n'a pas peur d'être exposé sur le Web.
Important ! N'oubliez jamais d'inclure le paquet avec tr-069client dans les mises à jour !
Comme il s'est avéré, la longueur du chemin vers les paquets est très importante ! Lors de mes tentatives d'utiliser quelque chose comme http://192.168.0.237/routeros/stable/mipsbe/routeros-mipsbe-6.45.6.npk, le MikroTik plantait dans une boucle de connexion avec la ressource, envoyant dans le journal tr-069 des TRANSFERCOMPLETE répétitifs. Et j'ai perdu un certain nombre de neurones en essayant de comprendre ce qui n'allait pas. Donc, pour l'instant, plaçons-le à la racine, en attendant d'éclaircir la situation.
Donc, nous devrions avoir trois fichiers npk disponibles via http. Voici ce que j'ai obtenu.
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.npkIl faut maintenant formater cela dans un fichier xml avec FileType="1 Firmware Upgrade Image", que nous allons fournir au MikroTik. Laissons-le nommé ros.xml.
Faisons selon les instructions de :
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.npkOn remarque un manque de Nom d'utilisateur/Mot de passe pour accéder au serveur de téléchargement. On peut soit essayer de le saisir comme au point A.3.2.8 du protocole tr-069 :
http://192.168.0.237/routeros/stable/mipsbe/ntp-6.45.6-mipsbe.npk
user
passOu demandez directement aux officiels de MikroTik, ainsi que sur la longueur maximale du chemin vers *.npk
Allons dans les répertoires connus Fichiers & Scripts, et y créons un fichier de type SOFTWARE avec Nom :ros.xml, Nom cible :ros.xml et Version :6.45.6
Attention ! La version doit être spécifiée exactement dans le format dans lequel elle est affichée sur l'appareil et transmise dans le paramètre System.X_FREEACS-COM.Device.SoftwareVersion.
Choisissez notre fichier xm à télécharger et c'est prêt.

Maintenant, nous avons de nombreuses façons de mettre à jour l'appareil. Via l'assistant dans le menu principal, via le provisionnement avancé et des tâches de type SOFTWARE, ou simplement en accédant à la configuration de l'unité et en cliquant sur Upgrade. Choisissons le moyen le plus simple, sinon cet article va déjà devenir trop long.

Nous appuyons sur le bouton, initiant le provisionnement et c'est fait. Le programme de test est terminé. Maintenant, nous savons faire plus avec MikroTik.
5. Conclusion
Quand j'ai commencé à écrire, je voulais d'abord décrire la connexion d'un téléphone IP et à partir de cet exemple, expliquer à quel point il peut être génial lorsque le TR-069 fonctionne facilement et sans effort. Mais ensuite, au fur et à mesure que j'avançais et fouillais dans les documents, j'ai pensé que quiconque ayant connecté MikroTik n'aurait plus aucun téléphone à craindre pour un apprentissage autonome.
En principe, FreeACS que nous avons testé peut déjà être utilisé en production, mais pour cela, il faut configurer la sécurité, SSL, configurer les MikroTik pour l'auto-configuration après réinitialisation, déboguer l'ajout correct du type d'unité, analyser le fonctionnement des webservices et de fusion shell, et encore beaucoup d'autres choses. Essayez, inventez et écrivez la suite !
Merci à tous pour votre attention ! Je serais ravi des corrections et commentaires !
Liste des matériaux utilisés et des liens utiles :
Source : habr.com
