TR-069 al Mikrotik. Testare Freeacs come server di configurazione automatica per RouterOS

In questo articolo cercherò di descrivere passo dopo passo il processo di installazione di un server di prova di un grande progetto freeacs a uno stato completamente funzionale e mostra tecniche pratiche per lavorare con mikrotik: configurazione tramite parametri, esecuzione di script, aggiornamento, installazione di moduli aggiuntivi, ecc.

Lo scopo dell'articolo è quello di spingere i colleghi a rifiutarsi di gestire i dispositivi di rete utilizzando terribili rastrelli e stampelle, sotto forma di script autoprodotti, Dude, Ansible, ecc. E, in questa occasione, provocare fuochi d'artificio e gioia di massa nel piazze.

0. Scelta

Perché freeacs e non genie-acs sono menzionati in mikrotik-wikiquanto più vivo?
Perché ci sono pubblicazioni spagnole su genie-acs con mikrotik. Eccoli pdf и video dalla mamma dell'anno scorso. I cartoni animati automatici sulle diapositive sono interessanti, ma mi piacerebbe allontanarmi dal concetto di scrivere script, eseguire script, eseguire script...

1. Installazione di Freeacs

Installeremo in Centos7 e poiché i dispositivi trasmettono molti dati e ACS lavora attivamente con il database, non saremo avidi di risorse. Per un lavoro confortevole, selezioneremo 2 core CPU, 4 GB di RAM e 16 GB di memoria SSD raid10 veloce. Installerò freeacs nel contenitore Proxmox VE lxc e potrai lavorare con qualsiasi strumento conveniente per te.
Non dimenticare di impostare l'ora corretta sulla macchina con ACS.

Il sistema sarà di prova, quindi non facciamo i furbi e usiamo 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

Appena terminato lo script potrai accedere subito all'interfaccia web tramite l'ip della macchina, con le credenziali admin/freeacs

TR-069 al Mikrotik. Testare Freeacs come server di configurazione automatica per RouterOS
Ecco un'interfaccia minimalista così bella e quanto tutto si è rivelato bello e veloce

2. Configurazione iniziale di Freeacs

L'unità di controllo di base per ACS è l'unità o CPE (Customer Premises Equipment). E, cosa più importante, ciò di cui abbiamo bisogno per gestire le unità è il loro Tipo di unità, ad es. un modello hardware che definisce una serie di parametri configurabili per un'unità e il suo software. Ma anche se non sappiamo come avviare correttamente un nuovo tipo di unità, sarebbe meglio chiedere informazioni all'unità stessa attivando la modalità Discovery.

Nella produzione, questa modalità è assolutamente impossibile da utilizzare, ma è necessario avviare il motore il prima possibile e verificare le capacità del sistema. Tutte le impostazioni di base sono memorizzate in /opt/freeacs-*. Pertanto, apriamo

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

, noi troviamo

discovery.mode = false

e cambia in

discovery.mode = true

Inoltre, vorremmo aumentare le dimensioni massime dei file con cui funzioneranno nginx e mysql. Per mysql, aggiungi la riga a /etc/my.cnf

max_allowed_packet=32M

e per nginx, aggiungi a /etc/nginx/nginx.conf

client_max_body_size 32m;

alla sezione http. Altrimenti, saremo in grado di lavorare con firmware non superiore a 1M.

Riavviamo e siamo pronti a lavorare con i dispositivi.

E nel ruolo del dispositivo (CPE) avremo un bambino maniaco del lavoro hAP AC lite.

Prima di una connessione di prova, è consigliabile configurare manualmente il CPE alla configurazione minima di funzionamento in modo che i parametri che si desidera configurare in futuro non siano vuoti. Per un router, puoi abilitare minimamente un client DHCP su ether1, installare il pacchetto tr-069client e impostare le password.

3. Collegare Microtik

È preferibile connettere tutte le unità utilizzando un numero di serie valido come login. Quindi tutto ti sarà chiaro nei log. Qualcuno consiglia di utilizzare WAN MAC: non crederci. Qualcuno usa una coppia login/pass comune per tutti: ignorali.

Apertura del log tr-069 per monitorare le "negoziazioni"

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

Apri Winbox, voce di menu TR-069.
URL dell'AC: http://10.110.0.109/tr069/prov (sostituisci con il tuo IP)
Nome utente: 9249094C26CB (copia seriale dal sistema>routerboard)
Password: 123456 (non necessaria per la scoperta, ma per esserlo)
Non modifichiamo l'intervallo di informazione periodica. Pubblicheremo questa impostazione tramite il nostro ACS

Di seguito sono riportate le impostazioni per l'inizializzazione remota della connessione, ma non sono riuscito a far funzionare mikrotik in un batter d'occhio. Sebbene la richiesta remota funzioni immediatamente con i telefoni. Dovrò capirlo.

TR-069 al Mikrotik. Testare Freeacs come server di configurazione automatica per RouterOS

Dopo aver premuto il pulsante Applica, i dati verranno scambiati nel terminale e nell'interfaccia web di Freeacs potrai vedere il nostro router con il tipo di unità creato automaticamente "hAPaclite".

TR-069 al Mikrotik. Testare Freeacs come server di configurazione automatica per RouterOS

Il router è connesso. Puoi esaminare il tipo di unità generato automaticamente. Noi apriamo Easy Provisioning > Unit Type > Unit Type Overview > hAPaclite. Cosa non c'è! Ben 928 parametri (ho spiato la shell). Molto o poco: lo scopriremo più tardi, ma per ora diamo solo una rapida occhiata. Questo è ciò che significa Tipo di unità. Questo è un elenco di opzioni supportate con chiavi ma senza valori. I valori sono impostati nei livelli seguenti: Profili e Unità.

4. Configura Mikrotik

È ora di scaricare guida all'interfaccia web Questa guida del 2011 è come una bottiglia di buon vino invecchiato. Apriamolo e lasciamolo respirare.

E noi stessi, nell'interfaccia web, facciamo clic sulla matita accanto alla nostra unità e andiamo alla modalità di configurazione dell'unità. Sembra questo:

TR-069 al Mikrotik. Testare Freeacs come server di configurazione automatica per RouterOS

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

Blocco di configurazione dell'unità

  • Profilo: questo è il profilo all'interno del tipo di unità. La gerarchia è questa: UnitType > Profile > Unit. Cioè, possiamo creare, ad esempio, profili hAPaclite > hotspot и hAPaclite > branch, ma all'interno del modello del dispositivo

Blocco del provisioning con bottoni
I suggerimenti suggeriscono che tutti i pulsanti nel blocco Provisioning possono applicare immediatamente la configurazione tramite ConnectionRequestURL. Ma, come ho detto sopra, questo non funziona, quindi dopo aver premuto i pulsanti, dovrai riavviare il client tr-069 su mikrotik per avviare manualmente il provisioning.

  • Freq/Spread: quante volte alla settimana fornire la configurazione ± % per ridurre il carico sul server e sui canali di comunicazione. Di default costa 7/20, cioè ogni giorno ± 20% e indica com'è in secondi. Finora non ha senso modificare la frequenza di consegna, perché. ci sarà rumore extra nei registri e non sempre sarà prevista l'applicazione delle impostazioni

Blocco della cronologia del provisioning (ultime 48 ore)

  • In apparenza, la storia è come una storia, ma facendo clic sul titolo si accede a un comodo strumento di ricerca nel database con regexp e gadget

Blocco parametri

Il blocco più grande e importante, dove, appunto, vengono impostati e letti i parametri di questa unità. Ora vediamo solo i parametri di sistema più importanti, senza i quali ACS non può funzionare con l'unità. Ma ricordiamo che li abbiamo in Tipo Unità - 928. Vediamo tutti i valori, e decidiamo con cosa mangia Mikrotik.

4.1 Lettura dei parametri

Nel blocco Provisioning, fare clic sul pulsante Leggi tutto. Il blocco ha un'iscrizione rossa. Apparirà una colonna sulla destra Valore CPE (corrente).. Modificato ProvisioningMode in READALL nelle impostazioni di sistema.

TR-069 al Mikrotik. Testare Freeacs come server di configurazione automatica per RouterOS

E... non accadrà 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 ottieni i parametri nelle allegre caselle grigie sulla destra
Se qualcuno vuole bere un sorso del vecchio stagionato, questa modalità è descritta nel manuale come 10.2 Modalità Ispezione. Si accende e funziona in modo leggermente diverso, ma l'essenza è abbastanza descritta

TR-069 al Mikrotik. Testare Freeacs come server di configurazione automatica per RouterOS

La modalità READALL si spegnerà dopo 15 minuti e cercheremo di capire cosa è utile qui e cosa può essere corretto al volo mentre siamo in questa modalità.

Puoi modificare gli indirizzi IP, abilitare / disabilitare le interfacce, le regole del firewall, che sono con commenti (altrimenti un disastro completo), Wi-Fi e così via piccole cose.

Cioè, non è ancora possibile configurare in modo sensato mikrotik utilizzando solo gli strumenti TR-069. Ma puoi monitorare molto bene. Sono disponibili statistiche sulle interfacce e il loro stato, memoria libera, ecc.

4.2 Fornitura dei parametri

Proviamo ora a consegnare i parametri al router, tramite tr-069, in maniera “naturale”. La prima vittima sarà Device.DeviceInfo.X_MIKROTIK_SystemIdentity. Lo troviamo nei parametri dell'unità All. Come puoi vedere, non è impostato. Ciò significa che qualsiasi unità può avere essa stessa una qualsiasi Identità. Basta tollerarlo!
Mettiamo un daw nella colonna di creazione, impostiamo il nome Mr.White e premiamo il pulsante Aggiorna parametri. Cosa succederà dopo, lo hai già indovinato. Alla successiva sessione di comunicazione con la sede, il router dovrà cambiare Identità.

TR-069 al Mikrotik. Testare Freeacs come server di configurazione automatica per RouterOS

Ma questo non ci basta. Un parametro come Identità è bene averlo sempre a portata di mano quando si cerca l'unità giusta. Inseriamo il nome del parametro e inseriamo lì le caselle di controllo Visualizza (D) e Ricercabile (S). La chiave del parametro viene modificata in RWSD (ricorda, i nomi e le chiavi sono impostati al livello più alto del tipo di unità)

TR-069 al Mikrotik. Testare Freeacs come server di configurazione automatica per RouterOS

Il valore ora non viene solo visualizzato nell'elenco di ricerca generale, ma è anche disponibile per la ricerca Support > Search > Advanced form

TR-069 al Mikrotik. Testare Freeacs come server di configurazione automatica per RouterOS

Avviamo la fornitura e guardiamo all'identità. Ciao signor White! Ora non sarai in grado di modificare tu stesso la tua identità mentre tr-069client è in esecuzione

TR-069 al Mikrotik. Testare Freeacs come server di configurazione automatica per RouterOS

4.3 Esecuzione di script

Poiché abbiamo scoperto che senza di essi non esiste alcuna via, realizziamoli.

Ma prima di iniziare a lavorare con i file, dobbiamo correggere la direttiva public.url in archivio /opt/freeacs-tr069/config/application-config.conf
Dopotutto, abbiamo ancora una configurazione di prova installata con uno script. Non hai dimenticato?

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

Riavvia l'ACS e vai direttamente a Files & Scripts.

TR-069 al Mikrotik. Testare Freeacs come server di configurazione automatica per RouterOS

Ma ciò che viene aperto da noi ora appartiene al Tipo Unità, cioè a livello globale a tutti i router hAP ac lite, siano essi router di filiale, hotspot o capsman. Non abbiamo ancora bisogno di un livello così elevato, quindi, prima di lavorare con script e file, dovresti creare un profilo. Puoi chiamarla tu stesso, come la "posizione" del dispositivo.

Rendiamo il nostro bambino un server del tempo. Posizione decente con un pacchetto software separato e un numero limitato di parametri. Andiamo a Easy Provisioning > Profile > Create Profile e creare un profilo in Tipo unità: hAPaclite server del tempo. Non avevamo parametri nel profilo predefinito, quindi non c'è nulla da copiare Copia parametri da: "non copiare..."

TR-069 al Mikrotik. Testare Freeacs come server di configurazione automatica per RouterOS

Qui non ci sono ancora parametri, ma sarà possibile impostare quelli che vorremo vedere in seguito sui nostri time server modellati da hAPaclite. Ad esempio, gli indirizzi generali dei server NTP.
Andiamo alla configurazione dell'unità e spostiamola nel profilo timeserver

Finalmente andiamo a Files & Scripts, crea script e qui stiamo aspettando panini incredibilmente convenienti.

Per eseguire uno script su un'unità, dobbiamo selezionare Tipo:TR069_SCRIPT а Nome и Nome dell'obiettivo deve avere l'estensione .alter
Allo stesso tempo, per gli script, a differenza del software, puoi caricare un file finito o semplicemente scriverlo / modificarlo sul campo Contenuto. Proviamo a scrivere proprio lì.

E per poter vedere immediatamente il risultato, aggiungi il router vlan a ether1

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

TR-069 al Mikrotik. Testare Freeacs come server di configurazione automatica per RouterOS

Guidiamo, premiamo Caricare e fatto. La nostra sceneggiatura vlan1.alter aspettando nelle ali.

Bene, andiamo? NO. Dobbiamo anche aggiungere un gruppo per il nostro profilo. I gruppi non sono inclusi nella gerarchia delle apparecchiature, ma sono necessari per cercare unità in UnitType o Profile e sono necessari per l'esecuzione dello script tramite Advanced Provisioning. Di solito, i gruppi sono associati alle posizioni e hanno una struttura nidificata. Facciamo un gruppo Russia.

TR-069 al Mikrotik. Testare Freeacs come server di configurazione automatica per RouterOS

Immagina di aver ristretto la ricerca da "Tutti i server dell'ora mondiale su hAPaclite" a "Tutti i server dell'ora russi su hAPaclite". C'è ancora un enorme strato di tutto ciò che è interessante con i gruppi, ma non abbiamo tempo. Entriamo negli script.

Advanced Provisioning > Job > Create Job

TR-069 al Mikrotik. Testare Freeacs come server di configurazione automatica per RouterOS

Dato che siamo in modalità Avanzata, qui puoi specificare una serie di condizioni diverse per l'avvio dell'attività, comportamento in caso di errore, ripetizioni e timeout. Consiglio di leggere tutto questo nei manuali o di discuterne in seguito quando lo implementeremo in produzione. Per ora, impostiamo semplicemente n1 sulle regole di arresto in modo che l'attività si interrompa non appena viene completata sulla nostra prima unità.

Compiliamo il necessario e resta solo da lanciare!

TR-069 al Mikrotik. Testare Freeacs come server di configurazione automatica per RouterOS

Premi START e attendi. Ora il contatore dei dispositivi uccisi dallo script con debug insufficiente funzionerà rapidamente! Ovviamente no. Tali compiti vengono assegnati per molto tempo e questa è la loro differenza rispetto agli script, Ansible e così via. Le unità stesse richiedono attività in base a una pianificazione o man mano che appaiono sulla rete, ACS tiene traccia di quali unità hanno già ricevuto attività e come sono terminate, e lo scrive nei parametri dell'unità. C'è 1 unità nel nostro gruppo e se ce ne fossero 1001, l'amministratore avvierebbe questa attività e andrebbe a pescare

Dai. Riavviare già il router o riavviare il client TR-069. Tutto dovrebbe andare liscio e Mr.White otterrà un nuovo vlan. E la nostra attività della regola di interruzione passerà allo stato IN PAUSA. Cioè, può ancora essere riavviato o modificato. Se si preme FINE, l'attività verrà cancellata nell'archivio

4.4 Aggiornamento del software

Questo è un punto molto importante, poiché il firmware di Mikrotik è modulare, ma l'aggiunta di moduli non modifica la versione complessiva del firmware del dispositivo. La nostra ACS è normale e non è abituata a questo.
Adesso lo faremo in stile quick & dirty, e inseriremo subito il modulo NTP nel firmware generale, ma non appena la versione sarà aggiornata sul dispositivo, non potremo aggiungere un altro modulo allo stesso modo .
In produzione, è meglio non utilizzare questo trucco e installare moduli opzionali per Unit Type solo tramite script.

Quindi, la prima cosa che dobbiamo fare è preparare i pacchetti software con le versioni e l'architettura richieste e inserirli su qualche server web disponibile. Per il test andrà chiunque riesca a contattare il nostro Mr.White, e per la produzione è meglio costruire uno specchio con aggiornamento automatico del software necessario, che non fa paura mettere sul web
Importante! Non dimenticare di includere sempre il pacchetto tr-069client negli aggiornamenti!

Come si è scoperto, la lunghezza del percorso verso i pacchetti è molto importante! Quando provo a usare qualcosa di simile http://192.168.0.237/routeros/stable/mipsbe/routeros-mipsbe-6.45.6.npk, mikrotik è entrato in una connessione ciclica con la risorsa, inviando ripetuti log TRANSFERCOMPLETE a tr-069. E ho sprecato alcune cellule nervose cercando di capire cosa c'era che non andava. Pertanto, mentre lo mettiamo alla radice, fino al chiarimento

Quindi, dovremmo avere tre file npk disponibili tramite http. Ho capito 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 questo deve essere formattato in un file xml con FileType = "1 Firmware Upgrade Image", che forniremo a Mikrotik. Lascia che il nome sia ros.xml

Facciamo secondo le istruzioni di 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>

Una mancanza è evidente Username/Password per accedere al server di download. Puoi provare ad inserirlo come nel paragrafo A.3.2.8 del protocollo 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>

Oppure chiedi direttamente ai funzionari Mikrotik, nonché la lunghezza massima del percorso verso * .npk

Andiamo al conosciuto Files & Scriptse creare lì un file SOFTWARE con Nome e Cognome:ros.xml, Nome dell'obiettivo:ros.xml e Versione:6.45.6
Attenzione! La versione qui deve essere specificata esattamente nel formato in cui viene visualizzata sul dispositivo e viene passata nel parametro System.X_FREEACS-COM.Device.SoftwareVersion.

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

TR-069 al Mikrotik. Testare Freeacs come server di configurazione automatica per RouterOS

Ora abbiamo molti modi per aggiornare il dispositivo. Attraverso la procedura guidata nel menu principale, attraverso il provisioning avanzato e le attività di tipo SOFTWARE, oppure semplicemente vai alla configurazione dell'unità e fai clic su Aggiorna. Scegliamo la strada più semplice, altrimenti l'articolo si gonfia.

TR-069 al Mikrotik. Testare Freeacs come server di configurazione automatica per RouterOS

Premiamo il pulsante, avviamo la fornitura e il gioco è fatto. Il programma di test è stato completato. Ora possiamo fare di più con mikrotik.

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

Quando ho iniziato a scrivere, volevo prima descrivere la connessione di un telefono IP e utilizzare il suo esempio per spiegare quanto può essere bello quando tr-069 funziona facilmente e senza sforzo. Ma poi, man mano che andavo avanti e approfondivo i materiali, ho pensato che per coloro che collegavano il Mikrotik, nessun telefono avrebbe fatto paura allo studio autonomo.

In linea di principio, Freeacs, che abbiamo testato, può già essere utilizzato in produzione, ma per questo è necessario configurare la sicurezza, SSL, è necessario configurare i microtici per l'autoconfigurazione dopo il ripristino, è necessario eseguire il debug della corretta aggiunta di Unit Type, smontare il lavoro di servizi web e shell di fusione e molto altro ancora. Prova, inventa e scrivi un seguito!

A tutti, grazie per la vostra attenzione! Sarò felice di correzioni e commenti!

Elenco dei materiali utilizzati e link utili:

Un thread del forum in cui mi sono imbattuto quando ho iniziato a cercare sull'argomento
TR-069 Emendamento al protocollo di gestione WAN CPE-6
wiki di freeacs
Parametri tr-069 in Mikrotik e loro corrispondenza ai comandi del terminale

Fonte: habr.com