TR-069 su Mikrotik. Testiamo Freeacs come server di autoconfigurazione per RouterOS

In questo articolo, cercherò di descrivere passo dopo passo il processo di installazione di un server di test del meraviglioso progetto Freeacs fino a uno stato completamente funzionante e mostrare pratiche tecniche per lavorare con mikrotik: configurazione tramite parametri, esecuzione di script, aggiornamenti, installazione di moduli aggiuntivi, ecc.

L'obiettivo dell'articolo è spingere i colleghi a rinunciare alla gestione dei dispositivi di rete mediante terribili soluzioni e stratagemmi, come script scritti a mano, Dude, Ansible, ecc. E, a questo proposito, invocare fuochi d'artificio e gioia collettiva nelle piazze.

0. Scelta

Perché freeacs e non genie-acs, menzionato in mikrotik-wiki, come più attivo?
Perché ci sono pubblicazioni di spagnoli su genie-acs con mikrotik. Ecco il loro pdf e video dallo scorso MUM. Le auto-condivisioni nelle diapositive sono fantastiche, ma vorrei allontanarmi dal concetto di scrivere script, per eseguire script, per eseguire script…

1. Installazione di freeacs

Installeremo su Centos7 e poiché i dispositivi trasferiscono una quantità considerevole di dati e l'ACS lavora attivamente con il database, non risparmieremo risorse. Per un funzionamento confortevole, assegneremo 2 core CPU, 4GB RAM e 16GB di archiviazione veloce SSD raid10. Installerò freeacs in un contenitore lxc Proxmox VE, mentre voi potete lavorare con qualsiasi strumento vi sia più comodo.
Non dimenticate di impostare l'ora corretta sulla macchina con ACS.

Il sistema sarà di test, quindi non ci complicheremo e utilizzeremo semplicemente lo script di installazione gentilmente fornito, così com'è.

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

Non appena il lavoro dello script sarà completato, potrete subito accedere all'interfaccia web tramite l'ip della macchina, con le credenziali admin/freeacs

TR-069 su Mikrotik. Testiamo Freeacs come server di autoconfigurazione per RouterOS
Ecco un'interfaccia minimalista molto gradevole, e quanto è stato semplice e veloce.

2. Configurazione iniziale di freeacs

L'unità base di gestione per l'ACS è un'unità o CPE (Customer Premises Equipment). E la cosa più importante di cui abbiamo bisogno per gestire le unità è il loro Unit Type, cioè il modello di attrezzatura, che determina l'insieme dei parametri configurabili dell'unità e del suo software. Ma finché non sappiamo come creare correttamente un nuovo Unit Type, sarà meglio chiedere direttamente all'unità, attivando la modalità di scoperta.

In produzione, tale modalità non può essere utilizzata categoricamente, ma dobbiamo piuttosto avviare il motore e vedere le possibilità del sistema. Tutte le impostazioni principali sono memorizzate in /opt/freeacs-*. Quindi, apriamo

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

, troviamo

discovery.mode = false

e cambiamo in

discovery.mode = true

Inoltre, sarebbe preferibile aumentare le dimensioni massime dei file con cui lavoreranno nginx e mysql. Per mysql, aggiungiamo in /etc/my.cnf la riga

max_allowed_packet=32M

, e per nginx, in /etc/nginx/nginx.conf aggiungiamo

client_max_body_size 32m;

nella sezione http. Altrimenti, potremo lavorare con firmware non superiori a 1M.

Riavviamo e siamo pronti a lavorare con i dispositivi.

E come dispositivo (CPE) avremo il piccolo laborioso hAP AC lite.

Prima della connessione di prova, sarebbe preferibile configurare manualmente il CPE fino alla configurazione minima operativa, affinché i parametri che in futuro desidererete configurare siano non vuoti. Per il router, è possibile attivare almeno il client dhcp su ether1, installare il pacchetto tr-069client e impostare le password.

3. Colleghiamo Mikrotik

Tutti gli unit devono essere collegati utilizzando come login un numero di serie valido. Allora vi sarà tutto chiaro nei log. Alcuni consigliano di utilizzare il MAC WAN — non credeteci. Alcuni usano una coppia di login/password comune per tutti — evitateli.

Apriamo il log tr-069 per monitorare le "negoziazioni"

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

Apriamo winbox, nel menu TR-069.
ACS URL: http://10.110.0.109/tr069/prov (sostituire con il vostro IP)
Username: 9249094C26CB (copiare il numero di serie da system>routerboard)
Password: 123456 (non necessaria per il discovery, ma da avere)
Non cambiamo il Periodic inform interval. Questa impostazione la daremo tramite il nostro ACS

Di seguito ci sono le impostazioni per l'inizializzazione remota della connessione, ma ho avuto difficoltà a far funzionare Mikrotik con queste. Sebbene per i telefoni la richiesta remota funzioni "out of the box". Dobbiamo approfondire.

TR-069 su Mikrotik. Testiamo Freeacs come server di autoconfigurazione per RouterOS

Dopo aver premuto il pulsante Apply, ci sarà uno scambio di dati nel terminale, e nell'interfaccia web di Freeacs vedremo il nostro router con il tipo di unità "hAPaclite" creato automaticamente.

TR-069 su Mikrotik. Testiamo Freeacs come server di autoconfigurazione per RouterOS

Router collegato. Possiamo dare uno sguardo al tipo di unità creato automaticamente. Apriamo Easy Provisioning > Unit Type > Unit Type Overview > hAPaclite. Cosa non c'è lì! Ben 928 parametri (ho sbirciato nello shell). È tanto o poco? Lo scopriremo dopo, intanto diamo un'occhiata veloce. Ecco cosa significa Tipo di Unità. È un elenco di parametri supportati con le chiavi, ma senza valori. I valori sono impostati nei livelli inferiori — nei Profili e nelle Unità.

4. Configuriamo Mikrotik

È tempo di scaricare il manuale dell'interfaccia web Questo manuale del 2011 è come una bottiglia di buon vino invecchiato. Apriamolo e lasciamolo respirare.

E noi, nell'interfaccia web, cliccheremo sulla matita accanto alla nostra unità e passeremo alla modalità di configurazione dell'unità. Si presenta così:

TR-069 su Mikrotik. Testiamo Freeacs come server di autoconfigurazione per RouterOS

Esaminiamo brevemente cosa c'è di interessante in questa pagina:

Blocco Configurazione Unit

  • Profilo: È un profilo all'interno del Tipo di Unità. La gerarchia è la seguente: UnitType > Profilo > Unità. Quindi, possiamo ad esempio creare profili hAPaclite > hotspot e hAPaclite > ramo, ma all'interno del modello di dispositivo

Blocco Provisioning con pulsanti
Le indicazioni suggeriscono che tutti i pulsanti nel blocco Provisioning possono applicare immediatamente la configurazione tramite ConnectionRequestURL. Ma, come ho detto precedentemente, non funziona, quindi dopo aver premuto i pulsanti sarà necessario riavviare il client tr-069 su mikrotik per avviare manualmente il provisioning.

  • Freq/Spread: Quante volte alla settimana consegnare la configurazione ± %, per ridurre il carico sul server e sui canali di comunicazione. Per impostazione predefinita è 7/20, cioè ogni giorno ± 20% e un'indicazione di come questo si traduce in secondi. Al momento non ha senso cambiare la frequenza di consegna, poiché ci sarà rumore nei log e spesso non ci si aspetta l'applicazione delle impostazioni.

Blocco Cronologia Provisioning (ultime 48 ore)

  • A prima vista è una cronologia, proprio come una cronologia, ma cliccando sul titolo — si accede a uno strumento di ricerca utile nel database, con regexp e funzionalità extra.

Blocco Parametri

Il blocco più grande e importante, dove, in realtà, vengono impostati e letti i parametri per questa unità. Attualmente vediamo solo i parametri di sistema più importanti, senza i quali il funzionamento dell'ACS con l'unità non sarebbe possibile. Ma noi ricordiamo che nel Tipo di Unità ci sono — 928. Diamo un'occhiata a tutti i valori e decidiamo di cosa tratta tutto questo su mikrotik.

4.1 Leggiamo i parametri

Nel blocco Provisioning premiamo il pulsante Leggi tutto. Nel blocco — una scritta rossa. A destra apparirà una colonna CPE (valore attuale). I parametri di sistema ProvisioningMode sono cambiati in READALL.

TR-069 su Mikrotik. Testiamo Freeacs come server di autoconfigurazione per RouterOS

E… non succederà nulla, tranne un messaggio in System.X_FREEACS-COM.IM.Message Kick failed at....

Riavvia il client TR-069 o riavvia il router e continua ad aggiornare la pagina del browser finché non ricevi i parametri a destra in rettangoli grigi vivaci.
Se qualcuno desidera assaporare un vecchio vintage, questa modalità è descritta nel manuale come 10.2 Modalità di ispezione. Si attiva e funziona in modo leggermente diverso, ma il concetto è descritto abbastanza bene.

TR-069 su Mikrotik. Testiamo Freeacs come server di autoconfigurazione per RouterOS

La modalità READALL si spegnerà da sola dopo 15 minuti, e noi cercheremo di capire cosa c'è di utile e cosa possiamo modificare "al volo", mentre siamo in questa modalità.

Possiamo modificare gli indirizzi IP, attivare/disattivare le interfacce, le regole del firewall, che hanno commenti (altrimenti sarebbe un completo caos), il wi-fi e così via.

Quindi, attualmente non è possibile configurare in modo sensato un mikrotik solo con gli strumenti di TR-069. Ma si può monitorare piuttosto bene. È disponibile la statistica sulle interfacce e il loro stato, la memoria disponibile, ecc.

4.2 Fornire i parametri

Ora proviamo a fornire i parametri al router tramite tr-069, in modo "naturale". La prima vittima sarà Device.DeviceInfo.X_MIKROTIK_SystemIdentity. Lo troviamo nei parametri dell'unità All. Come si può vedere, non è impostato. Questo significa che qualsiasi unità può avere qualsiasi Identità. È tempo di smettere di tollerarlo!
Mettiamo un segno nella colonna crea, impostiamo il nome Mr.White e premiamo il pulsante Aggiorna parametri. Cosa succederà dopo lo avrete già capito. Durante la prossima sessione di comunicazione con la sede, il router dovrebbe cambiare la sua Identità.

TR-069 su Mikrotik. Testiamo Freeacs come server di autoconfigurazione per RouterOS

Ma non ci basta. Un parametro come l'Identità è sempre utile tenerlo a portata di mano quando si cerca l'unità desiderata. Clicchiamo sul nome del parametro e mettiamo i segni nelle opzioni Visualizza(D) e Ricercabile(S). La chiave del parametro cambia in RWSD (Ricordate, i nomi e le chiavi sono impostati al livello più alto del Tipo di Unità).

TR-069 su Mikrotik. Testiamo Freeacs come server di autoconfigurazione per RouterOS

Il valore ora appare non solo nell'elenco generale di ricerca, ma è anche disponibile per la ricerca in Supporto > Ricerca > Modulo avanzato

TR-069 su Mikrotik. Testiamo Freeacs come server di autoconfigurazione per RouterOS

Iniziamo il provisioning e guardiamo l'Identità. Ciao, Mr.White! Ora non potrai cambiare la tua maschera mentre il client tr-069 è attivo.

TR-069 su Mikrotik. Testiamo Freeacs come server di autoconfigurazione per RouterOS

4.3 Eseguiamo script

Poiché abbiamo scoperto che non possiamo farne a meno, iniziamo a eseguirli.

Ma prima di iniziare a lavorare con i file, dobbiamo modificare la direttiva public.url nel file /opt/freeacs-tr069/config/application-config.conf
Abbiamo ancora una configurazione di test, impostata da uno script. Non lo dimenticate.

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

Riavviamo ACS e ci dirigiamo direttamente a Files & Scripts.

TR-069 su Mikrotik. Testiamo Freeacs come server di autoconfigurazione per RouterOS

Ma ciò che ci viene mostrato ora appartiene al Tipo di Unità, ossia globalmente a tutti i router hAP ac lite, che sia un router di filiale, un hotspot o un capsmann. Per ora, non abbiamo bisogno di un livello così alto, quindi prima di lavorare con script e file, dobbiamo creare un profilo. Possiamo chiamarlo «posizione» del dispositivo.

Facciamo del nostro piccolo un server temporale. Una posizione dignitosa con un pacchetto software separato e un numero limitato di parametri. Andiamo in Easy Provisioning > Profilo > Crea Profilo e creiamo nel Tipo di Unità:hAPaclite un profilo timeserver. Non avevamo parametri nel profilo di default, quindi non abbiamo nulla da copiare. Copia parametri da: «non copiare…»

TR-069 su Mikrotik. Testiamo Freeacs come server di autoconfigurazione per RouterOS

Qui non ci sono ancora parametri, ma potremo specificare quelli che in seguito vorremo vedere sui nostri server temporali, creati da hAPaclite. Ad esempio, gli indirizzi NTP server comuni.
Andiamo nella configurazione dell'unità e lo spostiamo nel profilo timeserver.

Finalmente andiamo in Files & Scripts, per fare script, e qui ci aspettano opzioni estremamente comode.

Per eseguire uno script sull'unità, dobbiamo scegliere Tipo:TR069_SCRIPT e Name e Nome di Destinazione devono avere estensione .alter
Tuttavia, per gli script, a differenza del software, è possibile caricare un file pronto o semplicemente scriverlo/modificarlo nel campo Contenuto. Proviamo a scrivere direttamente lì.

E per vedere subito il risultato, aggiungiamo una VLAN al router su ether1.

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

TR-069 su Mikrotik. Testiamo Freeacs come server di autoconfigurazione per RouterOS

Scriviamo, premiamo Upload ed è fatto. Il nostro script vlan1.alter aspetta il suo momento.

Beh, partiamo? No. Dobbiamo anche aggiungere un gruppo per il nostro profilo. I gruppi non fanno parte della gerarchia dell'hardware, ma sono necessari per cercare unità nel Tipo di Unità o nel Profilo e sono obbligatori per eseguire script tramite Advanced Provisioning. Di solito, i gruppi sono legati a località e hanno una struttura gerarchica. Creiamo un gruppo Russia.

TR-069 su Mikrotik. Testiamo Freeacs come server di autoconfigurazione per RouterOS

Immaginate che siamo appena riusciti a ristrettare la ricerca da «Tutti i server temporali del mondo su hAPaclite» a «Tutti i server temporali della Russia su hAPaclite». C'è un'enorme quantità di informazioni interessanti sui gruppi, ma non abbiamo tempo. Andiamo già agli script.

Advanced Provisioning > Lavoro > Crea Lavoro

TR-069 su Mikrotik. Testiamo Freeacs come server di autoconfigurazione per RouterOS

Poiché siamo in modalità Avanzata, è possibile impostare una serie di diverse condizioni per l'inizio del compito, il comportamento in caso di errori, ripetizioni e timeout. Ti consiglio di leggere tutto questo nei manuali, oppure possiamo discuterne in seguito durante l'implementazione in produzione. Per ora, mettiamo solo n1 nelle Stop rules, affinché il compito si fermi non appena sarà completato sul nostro 1 unità.

Compiliamo ciò che è necessario e non resta che avviare!

TR-069 su Mikrotik. Testiamo Freeacs come server di autoconfigurazione per RouterOS

Clicchiamo su START e aspettiamo. Adesso il contatore degli oggetti non correttamente testati inizierà a correre! No, naturalmente. Questi compiti vengono assegnati a lungo termine e questa è la loro differenza rispetto agli script, ad Ansible e simili. Le unità richiedono autonomamente compiti secondo un programma prestabilito o quando compaiono in rete, l'ACS tiene traccia di quali unità hanno già ricevuto compiti e di come sono stati completati, registrando queste informazioni nei parametri dell'unità. Nella nostra gruppo c'è 1 unità, se ce ne fossero 1001, l'amministratore avrebbero avviato questo compito ed è andato a pesca.

Dai, riavvia già il router o riavvia il client TR-069. Tutto dovrebbe andare liscio e Mr.White riceverà un nuovo vlan. E il nostro compito nelle Stop rules passerà allo stato PAUSED. Cioè, potrà ancora essere riavviato o modificato. Se premi FINISH, il compito sarà archiviato.

4.4 Aggiorniamo il software

Questo è un punto molto importante, poiché il firmware del Mikrotik è modulare, ma l'aggiunta di moduli non cambia la versione complessiva del firmware del dispositivo. Il nostro ACS è a posto e non è abituato a situazioni del genere.
Ora lo faremo in stile quick&dirty, e integreremo il modulo NTP nel firmware generale immediatamente, ma non appena la versione del dispositivo verrà aggiornata, non potremo aggiungere un altro modulo in questo modo.
In produzione, è meglio non utilizzare questo trucco e installare i moduli non obbligatori per il tipo di unità solo tramite script.

Quindi, la prima cosa che dobbiamo fare è preparare i pacchetti software con le versioni e le architetture necessarie e metterli su un web server accessibile. Per il test va bene qualsiasi server che il nostro Mr.White riesca a raggiungere, ma per la produzione è meglio allestire uno specchio di software auto-aggiornante che non fa male esporre al web.
Importante! Non dimenticate mai di includere negli aggiornamenti il pacchetto con il tr-069client!

Come si è scoperto, la lunghezza della strada verso i pacchetti è molto importante! Nei miei tentativi di utilizzare qualcosa di simile http://192.168.0.237/routeros/stable/mipsbe/routeros-mipsbe-6.45.6.npk, mikrotik è caduto in un ciclo di connessione con la risorsa, restituendo nel log tr-069 ripetuti TRANSFERCOMPLETE. E ho speso un certo numero di cellule nervose cercando di capire cosa non andasse. Pertanto, per ora lasciamo nel root, fino a chiarimenti

Quindi, dobbiamo avere tre file npk disponibili via http. È andata così

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

Ora bisogna formattare questo in un file xml con FileType="1 Firmware Upgrade Image", che daremo in pasto al mikrotik. Chiamiamolo ros.xml

Facciamo secondo le istruzioni da mikrotik-wiki:

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.npk

Salta all'occhio la mancanza di Nome utente/Password per accedere al server di download. Si può provare a scrivere questo come nel punto A.3.2.8 del protocollo tr-069:

http://192.168.0.237/routeros/stable/mipsbe/ntp-6.45.6-mipsbe.npk
user
pass

Oppure chiedere direttamente agli ufficiali di mikrotik, così come sulla lunghezza massima del percorso fino a *.npk

Andiamo nei noti Files & Scripts, e creiamo lì un file di tipo SOFTWARE con Nome:ros.xml, Nome di destinazione:ros.xml e Versione:6.45.6
Attenzione! La versione qui deve essere indicata esattamente nel formato in cui appare sul dispositivo e viene trasmessa nel parametro System.X_FREEACS-COM.Device.SoftwareVersion.

Selezioniamo per il download il nostro file xm e il gioco è fatto.

TR-069 su Mikrotik. Testiamo Freeacs come server di autoconfigurazione per RouterOS

Ora abbiamo molte strade per aggiornare il dispositivo. Attraverso Wizard nel menu principale, tramite Advanced Provisioning e compiti di tipo SOFTWARE, oppure semplicemente accedendo alla configurazione dell'unità e premendo Aggiorna. Scegliamo il percorso più semplice, altrimenti l'articolo è già troppo lungo.

TR-069 su Mikrotik. Testiamo Freeacs come server di autoconfigurazione per RouterOS

Premiamo il pulsante, iniziamo il provisioning e siamo a posto. Il programma di prova è completato. Ora sappiamo fare di più con mikrotik.

5. Conclusione

Quando ho cominciato a scrivere, in realtà volevo prima descrivere il collegamento di un telefono IP e usare il suo esempio per spiegare quanto possa essere fantastico quando il tr-069 funziona facilmente e senza sforzi. Ma poi, man mano che proseguivo e scavavo nei materiali, ho pensato che per chi ha collegato un mikrotik — nessun telefono sarà una sfida per l'autoapprendimento.

In linea di principio, Freeacs, che abbiamo testato, è già utilizzabile in produzione, ma è necessario configurare la sicurezza, SSL, impostare i router MikroTik per l'autoconfigurazione dopo il reset, perfezionare l'aggiunta corretta del Tipo di Unità, esaminare il funzionamento dei webservices e del fusion shell, e molto altro. Provate, inventate, e scrivete un seguito!

A tutti, grazie per l'attenzione! Sarò felice di ricevere correzioni e commenti!

Elenco dei materiali utilizzati e link utili:

La discussione del forum che ho trovato all'inizio delle mie ricerche sull'argomento
TR-069 CPE WAN Management Protocol Amendement-6
Wiki di Freeacs
Parametri tr-069 in MikroTik e loro corrispondenza con i comandi del terminale

Fonte: habr.com

Acquista hosting affidabile per siti web con protezione DDoS, VPS VDS server 🔥 Acquista hosting affidabile per siti web con protezione DDoS, VPS VDS server | ProHoster