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 d'un serveur de test d'un grand projet acs gratuits à un état entièrement fonctionnel et montrer des techniques pratiques pour travailler avec mikrotik : configuration via des paramètres, exécution de scripts, mise à jour, installation de modules supplémentaires, etc.

Le but de l'article est de pousser les collègues à refuser de gérer les appareils réseau avec de terribles râteaux et béquilles, sous forme de scripts auto-écrits, Dude, Ansible, etc. Et, à cette occasion, de provoquer un feu d'artifice et une réjouissance massive dans le carrés.

0. Le choix

Pourquoi les freeacs et non les genie-acs mentionnés dans mikrotik-wikicomment plus vivant ?
Parce qu'il existe des publications espagnoles sur les genie-acs avec mikrotik. Les voici pdf и vidéo de la maman de l'année dernière. Les dessins animés automatiques sur les diapositives sont sympas, mais j'aimerais m'éloigner du concept d'écriture de scripts, d'exécution de scripts, d'exécution de scripts…

1. Installation de Freeacs

Nous allons installer dans Centos7, et comme les appareils transmettent beaucoup de données et qu'ACS travaille activement avec la base de données, nous ne serons pas avides de ressources. Pour un travail confortable, nous sélectionnerons 2 cœurs CPU, 4 Go de RAM et 16 Go de stockage rapide SSD raid10. J'installerai freeacs dans le conteneur Proxmox VE lxc et vous pourrez 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 système de test, alors ne soyons pas intelligents et utilisons simplement le script d'installation aimablement fourni, tel quel.

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 par l'ip de la machine, avec les identifiants admin/freeacs

TR-069 chez Mikrotik. Test de Freeacs en tant que serveur de configuration automatique pour RouterOS
Voici une interface minimaliste si agréable, et à quel point tout s'est avéré cool et rapide

2. Configuration initiale de Freeacs

L'unité de contrôle de base pour l'ACS est l'unité ou CPE (Customer Premises Equipment). Et plus important encore, ce dont nous avons besoin pour gérer les unités, c'est leur type d'unité, c'est-à-dire un modèle matériel qui définit un ensemble de paramètres configurables pour une unité et son logiciel. Mais jusqu'à ce que nous sachions comment obtenir correctement un nouveau type d'unité, il serait préférable d'interroger l'unité elle-même à ce sujet en activant le mode découverte.

En production, ce mode est absolument impossible à utiliser, mais il faut démarrer le moteur le plus rapidement possible et voir les capacités du système. Tous les paramètres de base sont stockés dans /opt/freeacs-*. Nous ouvrons donc

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

, nous trouvons

discovery.mode = false

et changer pour

discovery.mode = true

De plus, nous aimerions augmenter la taille maximale des fichiers avec lesquels nginx et mysql fonctionneront. Pour MySQL, ajoutez la ligne à /etc/my.cnf

max_allowed_packet=32M

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

client_max_body_size 32m;

à la rubrique http. Sinon, nous pourrons travailler avec un firmware ne dépassant pas 1M.

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

Et dans le rôle de l'appareil (CPE) nous aurons un bébé bourreau de travail hAP AC léger.

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

3. Connectez Mikrotik

Il est souhaitable 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 - n'y croyez pas. Quelqu'un utilise une paire login/pass commune pour tout le monde - contournez-le.

Ouverture du journal tr-069 pour surveiller les "négociations"

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

Ouvrez Winbox, élément de menu TR-069.
URL du CA : http://10.110.0.109/tr069/prov (remplacez par votre IP)
Nom d'utilisateur : 9249094C26CB (copier la série depuis le système > la carte du routeur)
Mot de passe : 123456 (pas nécessaire pour la découverte, mais pour l'être)
Nous ne modifions pas l'intervalle d'information périodique. Nous émettrons ce paramètre via notre ACS

Vous trouverez ci-dessous les paramètres d'initialisation à distance de la connexion, mais je n'ai pas réussi à faire fonctionner Mikrotik d'un seul coup. Bien que la requête à distance fonctionne immédiatement avec les téléphones. Il faudra le comprendre.

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

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

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

Le routeur est connecté. Vous pouvez consulter le type d'unité généré automatiquement. Nous ouvrons Easy Provisioning > Unit Type > Unit Type Overview > hAPaclite. Qu'est-ce qui n'est pas là ! Jusqu'à 928 paramètres (j'ai espionné le shell). Beaucoup ou un peu - nous le découvrirons plus tard, mais pour l'instant, nous allons juste y jeter un coup d'œil rapide. C'est ce que signifie le type d'unité. Il s'agit d'une liste d'options prises 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 guide de l'interface web Ce guide 2011 est comme une bouteille de bon vin vieilli. Ouvrons-le et laissons-le respirer.

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

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

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

Bloc de configuration de l'unité

  • Profil : Il s'agit du profil dans le type d'unité. La hiérarchie est la suivante : UnitType > Profile > Unit. Autrement dit, nous pouvons créer, par exemple, des profils hAPaclite > hotspot и hAPaclite > branch, mais dans le modèle de l'appareil

Approvisionnement en blocs avec des boutons
Des indices suggèrent 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 appuyé sur les boutons, vous devrez redémarrer le client tr-069 sur Mikrotik pour démarrer manuellement la mise à disposition.

  • Freq/Spread : Combien de fois par semaine pour livrer la configuration ± % afin de réduire la charge sur le serveur et les canaux de communication. Par défaut, cela coûte 7/20, soit chaque jour ± 20 % et indiquez comment cela se passe en quelques secondes. Pour l'instant, cela n'a aucun sens de changer la fréquence de livraison, etc. il y aura du bruit supplémentaire dans les journaux et une application pas toujours attendue des paramètres

Bloc d'historique de provisionnement (dernières 48 heures)

  • En apparence, l'histoire ressemble à une histoire, mais en cliquant sur le titre, vous accédez à un outil de recherche de base de données pratique avec des expressions rationnelles et des goodies.

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 désormais 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 les avons en type d'unité - 928. Voyons toutes les valeurs et décidons avec quoi Mikrotik mange.

4.1 Lecture des paramètres

Dans le bloc Provisioning, cliquez sur le bouton Lire tout. Le bloc a une inscription rouge. Une colonne apparaîtra à droite Valeur CPE (actuelle). Changement de ProvisioningMode en READALL dans les paramètres système.

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

Et… rien ne se passera sauf un 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 joyeuses cases grises à droite.
Si quelqu'un veut prendre une gorgée de l'ancien assaisonné, ce mode est décrit dans le manuel comme 10.2 Mode Inspection. Il s'allume et fonctionne un peu différemment, mais l'essence est décrite assez

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

Le mode READALL s'éteindra au bout de 15 minutes, et nous essaierons de comprendre ce qui est utile ici, et ce qui peut être corrigé à la volée pendant que nous sommes dans ce mode.

Vous pouvez modifier les adresses IP, activer/désactiver les interfaces, les règles de pare-feu, qui sont accompagnées de commentaires (sinon un gâchis complet), le Wi-Fi, etc.

Autrement dit, il n'est pas encore possible de configurer correctement Mikrotik en utilisant uniquement les outils TR-069. Mais vous pouvez très bien surveiller. Des statistiques sur les interfaces et leur état, la mémoire libre, etc. sont disponibles.

4.2 Livraison des paramètres

Essayons maintenant de délivrer 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 de l'unité All. Comme vous pouvez le constater, ce n'est pas défini. Cela signifie que n'importe quelle unité peut elle-même avoir n'importe quelle identité. Assez toléré ça !
Nous insérons un daw dans la colonne de création, définissons le nom Mr.White et appuyons sur 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 d'identité.

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

Mais cela ne nous suffit pas. Il est bon d’avoir toujours un paramètre comme l’identité à portée de main lorsque l’on recherche la bonne unité. Nous fouillons dans le nom du paramètre et y cochons les cases Display (D) et Searchable (S). La clé du paramètre est remplacée par RWSD (rappelez-vous que les noms et les clés sont définis au niveau de type d'unité le plus élevé)

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

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

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

Nous commençons la fourniture et examinons l'identité. Bonjour Monsieur Blanc ! Désormais, vous ne pourrez plus changer votre identité vous-même pendant l'exécution de tr-069client.

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

4.3 Exécution de scripts

Puisque nous avons découvert qu’il n’y a aucun moyen sans eux, réalisons-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 avec un seul script. Vous n'avez pas oublié ?

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

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

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

Mais ce qui est ouvert chez nous appartient désormais au type d'unité, c'est-à-dire globalement à tous les routeurs hAP ac lite, qu'il s'agisse d'un routeur de succursale, d'un hotspot ou d'un capsman. Nous n'avons pas encore besoin d'un niveau aussi élevé, donc 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. Position décente avec un progiciel séparé et un petit nombre de paramètres. Allons à Easy Provisioning > Profile > Create Profile et créez un profil dans Unit Type: hAPaclite serveur de temps. Nous n’avions aucun paramètre dans le profil par défaut, donc il n’y a rien à copier Copier les paramètres de : "ne pas copier..."

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

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

Enfin nous allons à Files & Scripts, créez des scripts, et nous attendons ici des petits pains incroyablement pratiques.

Afin d'exécuter un script sur une unité, nous devons sélectionner Tapez :TR069_SCRIPT а Nom и Nom de la cible doit avoir l'extension .alter
Parallèlement, pour les scripts, contrairement aux logiciels, vous pouvez soit télécharger un fichier terminé, soit simplement l'écrire/modifier sur le terrain Contenu. Essayons d'écrire ici.

Et pour que vous puissiez voir immédiatement le résultat, ajoutez le routeur VLAN à ether1

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

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

On roule, on appuie Téléchargement Et.. Voila. Notre scénario vlan1.alter attendant dans les coulisses.

Eh bien, allons-y ? Non. Nous devons également ajouter un groupe pour 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 l'exécution de scripts via Advanced Provisioning. Habituellement, les groupes sont associés à des emplacements et ont une structure imbriquée. Créons un groupe russe.

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

Imaginez que nous réduisions notre recherche de « Tous les serveurs de temps mondiaux sur hAPaclite » à « Tous les serveurs de temps russes 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. Nous sommes déjà entrés dans les scripts.

Advanced Provisioning > Job > Create Job

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

Puisque nous sommes en mode Avancé, après tout, vous pouvez spécifier ici un tas de conditions différentes pour le démarrage de la tâche, le comportement des erreurs, les répétitions et les délais d'attente. Je recommande de lire tout cela dans les manuels ou d'en discuter plus tard lors de sa mise en œuvre en production. Pour l'instant, définissons simplement n1 sur Stop Rules afin que la tâche s'arrête dès qu'elle est terminée sur notre 1ère unité.

On remplit le nécessaire, et il ne reste plus qu'à lancer !

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

Appuyez sur START et attendez. Désormais, le compteur des appareils tués par le script sous-débogué fonctionnera rapidement ! Bien sûr que non. De telles tâches sont confiées depuis longtemps, et c'est leur différence avec les scripts, Ansible, etc. Les unités elles-mêmes postulent à des tâches selon un calendrier ou au fur et à mesure qu'elles apparaissent sur le réseau, ACS garde une trace des unités qui ont déjà reçu des tâches et de la façon dont elles se sont terminées, et écrit cela dans les paramètres de l'unité. Il y a 1 unité dans notre groupe, et s'il y en avait 1001, l'administrateur commencerait cette tâche et irait à la pêche

Allez. Redémarrez déjà le routeur ou redémarrez le client TR-069. Tout devrait se passer sans problème et M. White recevra un nouveau VLAN. Et notre tâche de règle d'arrêt passera au statut PAUSED. Autrement dit, il peut toujours être redémarré ou modifié. Si vous appuyez sur FINIR, la tâche sera radiée dans les archives

4.4 Mise à jour du logiciel

C'est un point très important, puisque le firmware Mikrotik est modulaire, mais l'ajout de modules ne modifie pas la version globale du firmware de l'appareil. Notre ACS est normal et n’est pas habitué à cela.
Maintenant, nous allons le faire dans le style de quick & dirty, et insérer immédiatement le module NTP dans le firmware général, 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, il est préférable de ne pas utiliser une telle astuce et d'installer les modules facultatifs pour Unit Type uniquement avec des scripts.

Ainsi, la première chose que nous devons faire est de préparer des progiciels avec les versions et l’architecture requises, et de les placer sur un serveur Web disponible. Pour le test, tous ceux qui peuvent joindre notre Mr.White iront, et pour la production, il vaut mieux construire un miroir à mise à jour automatique du logiciel nécessaire, qui n'a pas peur de mettre sur le Web
Important! N'oubliez pas de toujours inclure le package tr-069client dans les mises à jour !

Il s’est avéré que la longueur du chemin d’accès aux paquets est très importante ! Quand j'essaie 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 avec la ressource, envoyant des journaux TRANSFERCOMPLETE répétés au tr-069. Et j'ai gaspillé quelques cellules nerveuses en essayant de comprendre ce qui n'allait pas. Par conséquent, pendant que nous le mettons à la racine, jusqu'à clarification

Nous devrions donc avoir trois fichiers npk disponibles via http. je l'ai eu comme ça

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, cela doit être formaté dans un fichier XML avec FileType = "1 Firmware Upgrade Image", que nous transmettrons à Mikrotik. Que le nom soit ros.xml

Nous faisons selon les instructions de 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>

Un manque est évident Username/Password pour accéder au serveur de téléchargement. Vous pouvez soit tenter de le saisir comme au paragraphe 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 aux responsables de Mikrotik, ainsi que la longueur maximale du chemin vers * .npk

Nous allons au connu Files & Scripts, et créez-y un fichier LOGICIEL avec Nom :ros.xml, Nom de la cible :ros.xml et Version:6.45.6
Attention! La version doit être précisée ici exactement dans le format dans lequel elle est affichée sur l'appareil et est passée en paramètre System.X_FREEACS-COM.Device.SoftwareVersion.

Nous sélectionnons notre fichier xm pour le chargement et vous avez terminé.

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

Nous disposons désormais de nombreuses façons de mettre à jour l'appareil. Via l'assistant dans le menu principal, via Advanced Provisioning et les tâches de type LOGICIEL, ou allez simplement dans la configuration de l'unité et cliquez sur Upgrade. Choisissons le moyen le plus simple, sinon l'article est gonflé.

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

Nous appuyons sur le bouton, lançons la mise à disposition et le tour est joué. Le programme de tests est terminé. Nous pouvons désormais faire plus avec Mikrotik.

5. Заключение

Quand j'ai commencé à écrire, je voulais d'abord décrire la connexion d'un téléphone IP et utiliser son exemple pour expliquer à quel point cela peut être cool lorsque le tr-069 fonctionne facilement et sans effort. Mais ensuite, au fur et à mesure que je progressais et approfondissais le matériel, j'ai pensé que pour ceux qui connectaient le Mikrotik, aucun téléphone ne ferait peur pour l'auto-apprentissage.

En principe, Freeacs, que nous avons testé, peut déjà être utilisé en production, mais pour cela, vous devez configurer la sécurité, SSL, vous devez configurer les microtiques pour la configuration automatique après 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 heureux des corrections et des commentaires!

Liste du matériel utilisé et liens utiles :

Un fil de discussion sur lequel je suis tombé lorsque j'ai commencé à chercher sur le sujet
TR-069 Amendement-6 du protocole de gestion WAN CPE
Wiki Freeacs
Paramètres tr-069 dans Mikrotik et leur correspondance avec les commandes du terminal

Source: habr.com