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

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

L'obiettivo dell'articolo è spingere i colleghi a rinunciare alla gestione dei dispositivi di rete tramite quei terribili metodi e soluzioni improvvisate, come script scritti a mano, Dude, Ansible, ecc. E, a riguardo, chiamare saluti e gioia collettiva nelle piazze.

0. Scelta

Perché scegliere freeacs invece di genie-acs, menzionato in mikrotik-wiki, come una soluzione più attiva?
Perché ci sono pubblicazioni degli spagnoli su genie-acs con mikrotik. Ecco loro pdf e video dal MUM dell'anno scorso. Auto-sharig nelle diapositive è fantastico, ma vorrei abbandonare il concetto di scrivere script per eseguire script per eseguire script...

1. Installazione di freeacs

Installeremo in Centos7, e poiché i dispositivi trasferiscono molti dati e ACS lavora attivamente con il database, non risparmieremo sulle risorse. Per un funzionamento confortevole, dedicheremo 2 core CPU, 4GB di RAM e 16GB di veloce storage SSD raid10. Io installerò freeacs in un container LXC su Proxmox VE, mentre voi potete lavorare con qualsiasi strumento vi sia più comodo.
Non dimenticate di impostare correttamente l'ora sulla macchina con ACS.

Il sistema sarà di test, quindi non faremo complicazioni e utilizzeremo semplicemente lo script di installazione fornito cortesemente, così com'è.

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

Non appena lo script sarà completato, potrete immediatamente accedere all'interfaccia web tramite l'IP della macchina, con le credenziali admin/freeacs.

TR-069 su Mikrotik. Testiamo Freeacs come server di auto-configurazione per RouterOS.
Ecco un'interfaccia minimale molto piacevole, ed è fantastico e veloce come tutto sia riuscito.

2. Configurazione iniziale di freeacs

L'unità base di gestione per ACS è un'unità o CPE (Customer Premises Equipment). La cosa più importante di cui abbiamo bisogno per gestire le unità è il loro Tipo di Unità, ovvero il modello dell'attrezzatura che definisce l'insieme delle impostazioni configurabili dell'unità e del suo software. Ma finché non sappiamo come creare correttamente un nuovo Tipo di Unità, è meglio chiedere direttamente all'unità attivando la Modalità di Scoperta.

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

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

, cerchiamo

discovery.mode = false

e cambiamo in

discovery.mode = true

Inoltre, è consigliabile 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

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

client_max_body_size 32m;

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

Riavviamo e siamo pronti a lavorare con i dispositivi.

E nel ruolo di dispositivo (CPE) avremo il piccolo instancabile hAP AC lite.

Prima di una connessione di test, è consigliabile configurare manualmente il CPE fino a una configurazione di base minima, in modo che i parametri che desideri configurare in futuro non siano vuoti. Per il router, è possibile abilitare almeno il client dhcp su ether1, installare il pacchetto tr-069client e impostare le password.

3. Colleghiamo Mikrotik

È preferibile collegare tutte le unità utilizzando come nome utente un numero di serie valido. In questo modo, i log saranno chiari. Alcuni consigliano di utilizzare il MAC WAN — non fidarti. Qualcuno usa una coppia comune di login/password — evitarli.

Apriamo il log tr-069 per monitorare i "dialoghi"

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

Apriamo winbox, nel menu TR-069.
URL ACS: http://10.110.0.109/tr069/prov (sostituire con il tuo IP)
Nome utente: 9249094C26CB (copia il numero di serie da system>routerboard)
Password: 123456 (non necessaria per la discovery, ma deve essere presente)
Non cambiamo l'intervallo di informazione periodica. Questa impostazione verrà fornita tramite il nostro ACS.

Di seguito ci sono le impostazioni per l'inizializzazione remota della connessione, ma non sono riuscito a far funzionare Mikrotik con questo senza approfondire. Anche se con i telefoni la richiesta remota funziona "out of the box". Dobbiamo esaminare.

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

Dopo aver premuto il pulsante Applicare, il terminale inizierà lo scambio di dati e nell'interfaccia web di Freeacs potremo vedere il nostro router con il tipo di unità "hAPaclite" creato automaticamente.

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

Router connesso. Possiamo dare un'occhiata al tipo di unità creato automaticamente. Apriamo Facile Provisioning > Tipo di unità > Panoramica tipo di unità > hAPaclite. C'è davvero di tutto! Ben 928 parametri (ho controllato nella shell). È tanto o poco? Lo scopriremo dopo, ma per ora diamo solo un'occhiata. Ecco cosa significa tipo di unità. È un elenco di parametri supportati con le chiavi, ma senza i valori. I valori sono definiti nei livelli inferiori — nei profili e nelle unità.

4. Configuriamo Mikrotik

È tempo di scaricare il manuale per l'interfaccia web Questo manuale è del 2011 — come una buona bottiglia di vino invecchiato. Apriamolo e lasciamolo respirare.

E noi, nell'interfaccia web, faremo clic sulla matita accanto alla nostra unità e passeremo alla modalità di configurazione dell'unità. Ecco come appare:

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

Facciamo una breve panoramica di cosa c'è di interessante in questa pagina:

Blocco Configurazione unità

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

Blocco di Provisioning con pulsanti
Le indicazioni suggeriscono che tutti i pulsanti nel blocco di Provisioning possono applicare immediatamente la configurazione tramite ConnectionRequestURL. Ma, come detto in precedenza, ciò 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 a settimana inviare la configurazione ± %, per ridurre il carico sul server e sui canali di comunicazione. Di default è impostato su 7/20, ovvero ogni giorno ± 20% e un'indicazione su come ciò si traduce in secondi. Al momento non ha senso cambiare la frequenza di consegna, poiché ci sarà un rumore eccessivo nei log e non sempre un'applicazione attesa delle impostazioni.

Blocco di Cronologia di Provisioning (ultime 48 ore)

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

Blocco Parametri

Il blocco più grande e importante, dove vengono effettivamente impostati e letti i parametri per questo unit. Ora vediamo solo i parametri di sistema più importanti, senza i quali il lavoro dell'ACS con l'unità non è possibile. Ma ricordiamo che nel Tipo di Unità ci sono — 928. Vediamo tutti i valori e decidiamo come gestirli con Mikrotik.

4.1 Leggiamo i parametri

Nella sezione Provisioning, premiamo il pulsante Read all. Nella sezione — c'è una scritta rossa. A destra apparirà una colonna. Valore CPE (attuale). Nelle impostazioni di sistema, ProvisioningMode è cambiato in READALL.

TR-069 su Mikrotik. Testiamo Freeacs come server di auto-configurazione 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 a ricaricare la pagina del browser finché non vedi a destra i parametri in allegri riquadri grigi.
Se qualcuno voleva assaporare un vecchio vino invecchiato — questa modalità è descritta nel manuale come 10.2 Inspection mode. Si attiva e funziona in modo leggermente diverso, ma il concetto è ben descritto.

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

La modalità READALL si disattiverà automaticamente dopo 15 minuti, e proveremo a capire cosa c'è di utile e cosa si può modificare "al volo", mentre siamo in questa modalità.

È possibile modificare gli indirizzi IP, attivare/disattivare interfacce, regole del firewall con commenti (altrimenti è un completo caos), Wi-Fi e piccole cose.

Cioè, non è possibile configurare in modo sensato il Mikrotik solo con i mezzi TR-069 al momento. Ma si può monitorare piuttosto bene. Sono disponibili statistiche sulle interfacce e il loro stato, memoria libera, ecc.

4.2 Forniamo i parametri

Ora proviamo a consegnare i parametri al router tramite tr-069, in modo "naturale". La prima vittima sarà Device.DeviceInfo.X_MIKROTIK_SystemIdentity. Lo troviamo tra i parametri dell'unità All. Come si può vedere, non è impostato. Questo significa che ogni unità può avere qualsiasi Identity. È tempo di smettere di tollerarlo!
Spuntiamo la casella nella colonna create, impostiamo il nome Mr.White e clicchiamo sul pulsante Update parameters. Cosa succederà dopo, lo avete già capito. Durante la prossima sessione di comunicazione con il quartier generale, il router deve cambiare il suo Identity.

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

Ma non ci basta. Un parametro come l'Identity è sempre utile averlo a portata di mano quando si cerca l'unità giusta. Clicchiamo sul nome del parametro e attiviamo le opzioni Display(D) e Searchable(S). La chiave del parametro cambia in RWSD (Ricordate che nomi e chiavi sono impostati al livello più alto del Tipo di Unità).

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

Ora il valore non solo appare nella lista generale di ricerca, ma è anche disponibile per la ricerca in Supporto > Ricerca > Modulo avanzato

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

Iniziamo il provision e osserviamo l'Identity. Salve, Mr.White! Ora non potrete più cambiare da soli l'identità finché il tr-069client è attivo.

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

4.3 Eseguiamo gli script

Dato che 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 prova installata tramite uno script. Non lo abbiamo dimenticato?

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

Riavviamo l'ACS e ci dirigiamo direttamente a File & Script.

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

Ma quello che stiamo aprendo adesso appartiene al Tipo di Unità, ovvero globalmente a tutti i router hAP ac lite, sia essi router di filiale, hotspot o capsman. Non abbiamo bisogno di un livello così elevato per ora, quindi, prima di lavorare con gli script e i file, dobbiamo creare un profilo. Possiamo chiamarlo 'ruolo' del dispositivo.

Facciamo del nostro piccolo un server di tempo. Un ruolo dignitoso 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 il profilo timeserver. Nel nostro profilo di default non c'erano parametri, quindi non c'è nulla da copiare. Copia i parametri da: «non copiare...»

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

Qui non ci sono affatto parametri, ma potremo definirne alcuni che vorremo vedere sui nostri server di tempo, assemblati da hAPaclite. Ad esempio, gli indirizzi NTP server comuni.
Torniamo alla configurazione dell'unità e lo spostiamo nel profilo timeserver.

Finalmente andiamo a File & Script, a creare script, e qui ci aspettano straordinari vantaggi.

Per eseguire uno script sull'unità, dobbiamo selezionare Tipo: TR069_SCRIPT Più di 40.000 clienti in oltre 120 paesi Name e Nome Target devono avere l'estensione .alter
Pertanto, per gli script, a differenza del software, puoi caricare un file pronto oppure scriverlo/modificarlo direttamente nel campo Contenuto. Proviamo a scrivere direttamente lì.

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

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

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

Digitiamo, premiamo Carica ed è fatto. Il nostro script vlan1.alter aspetta il suo momento.

Bene, 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à in UnitType o Profile e sono obbligatori per eseguire script tramite Advanced Provisioning. Di solito, i gruppi sono legati alle posizioni e hanno una struttura gerarchica. Creiamo il gruppo Russia.

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

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

Advanced Provisioning > Job > Crea lavoro

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

Poiché siamo in modalità Advanced, qui è possibile specificare 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 o ne discuteremo più tardi durante l'implementazione in produzione. Per ora, impostiamo solo n1 nelle Stop rules in modo che il compito si fermi non appena venga eseguito sul nostro 1 unità.

Compiliamo i requisiti e non resta che avviare!

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

Clicchiamo su START e aspettiamo. Adesso il contatore delle unità gestite dallo script non del tutto ottimizzato si attiverà! No, ovviamente. Questi compiti richiedono tempo, ed è questa la loro differenza rispetto agli script, Ansible e simili. Le unità richiedono autonomamente i compiti in base a un programma o man mano che si connettono alla rete, l'ACS tiene traccia di quali unità hanno già ricevuto compiti e come sono andati, registrando queste informazioni nei parametri dell'unità. Nella nostra gruppo c'è 1 unità, e se ce ne fossero 1001 — l'amministratore avrebbe avviato questo compito e sarebbe andato a pescare.

Dai. Riavvia il router o riavvia il client TR-069. Tutto dovrebbe funzionare senza problemi e Mr.White riceverà un nuovo VLAN. E il nostro compito nelle Stop rule passerà allo stato PAUSED. Questo significa che potrà ancora essere riavviato o modificato. Se premi FINISH, il compito sarà archiviato.

4.4 Aggiornamento del software

Questo è un punto molto importante, poiché il firmware di MikroTik è modulare, ma l'aggiunta di moduli non cambia la versione generale del firmware del dispositivo. Il nostro ACS è normale e non siamo abituati a questo.
Ora procederemo in modo quick&dirty, e integreremo il modulo NTP nel firmware generale subito, ma non appena la versione del dispositivo sarà aggiornata, non saremo in grado di aggiungere un altro modulo allo stesso modo.
In produzione è meglio non utilizzare questo trucco e installare moduli non obbligatori per il tipo di unità solo tramite script.

Quindi, la prima cosa da fare è preparare i pacchetti software delle versioni e architetture necessarie e caricarli su un server web accessibile. Per i test va bene qualsiasi server a cui possa accedere il nostro Mr. White, ma per la produzione è meglio configurare uno specchio di software auto-aggiornante che non sia un problema esporre al web.
Attenzione! Non dimenticate mai di includere nel vostro aggiornamento il pacchetto con tr-069client!

Come si è scoperto, la lunghezza del percorso verso i pacchetti è molto importante! Durante i miei tentativi di utilizzare qualcosa del genere http://192.168.0.237/routeros/stable/mipsbe/routeros-mipsbe-6.45.6.npk, mikrotik è caduto in connessione ciclica con la risorsa, restituendo nel log tr-069 TRANSFERCOMPLETE ripetuti. E ho speso un certo numero di neuroni cercando di capire cosa non andasse. Quindi, per ora mettiamo nella radice, fino a chiarimenti.

Quindi, dobbiamo avere tre file npk disponibili via http. È venuto 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 daremo al mikrotik. Lasciamo che il nome sia ros.xml

Seguiamo le istruzioni di 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 Username/Password per accedere al server di caricamento. Puoi provare a scrivere questo come al 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

O chiedere direttamente agli ufficiali di MikroTik, come e per la massima lunghezza del percorso per *.npk

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

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

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

Ora abbiamo molti modi per aggiornare il dispositivo. Tramite Wizard nel menu principale, tramite Advanced Provisioning e compiti di tipo SOFTWARE, o semplicemente entrando nella configurazione dell'unità e premendo Aggiorna. Scegliamo il percorso più semplice, visto che l'articolo si è già allungato.

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

Facciamo clic sul pulsante, avviamo il provisioning e il gioco è fatto. Il programma di prova è concluso. Ora sappiamo fare di più con MikroTik.

5. Conclusione

Quando ho iniziato a scrivere, volevo iniziare descrivendo il collegamento di un telefono IP e, utilizzando il suo esempio, spiegare quanto possa essere facile quando TR-069 funziona senza sforzi. Ma poi, procedendo e scavando nei materiali, ho pensato che chi ha collegato un MikroTik non avrà paura di nessun telefono per studiare da solo.

In linea di massima, Freeacs, che abbiamo testato, è già utilizzabile in produzione, ma è necessario configurare la sicurezza, impostare SSL, configurare i MikroTik per l'autoconfigurazione dopo un reset, ottimizzare l'aggiunta dei tipi di unità, comprendere il funzionamento dei web services e del fusion shell, e molto altro. Provate, inventate e scrivete il seguito!

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

Elenco dei materiali utilizzati e link utili:

Il thread del forum su cui mi sono imbattuto all'inizio delle mie ricerche sull'argomento
TR-069 CPE WAN Management Protocol Amendement-6
Wiki di Freeacs
Parametri TR-069 in MikroTik e il loro corrispondente nei 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