În acest articol, voi încerca să descriu pas cu pas procesul de instalare a serverului de testare pentru acest proiect minunat într-o stare complet funcțională și să arăt tehnici practice pentru lucrul cu mikrotik: configurarea prin parametrii, executarea scripturilor, actualizarea, instalarea modulelor suplimentare etc.
Scopul articolului este de a încuraja colegii să renunțe la gestionarea echipamentelor de rețea folosind metode ineficiente precum scripturi scrise de mână, Dude, Ansible etc. Și, în legătură cu acest lucru, să provoace petreceri și bucurie colectivă pe străzi.
0. Alegerea
De ce freeacs și nu genie-acs, menționat în , ca fiind mai activ?
Pentru că despre genie-acs cu mikrotik există publicații ale spaniolilor. Iată-le și de la MUM-ul de anul trecut. Auto-sharing-ul pe slide-uri este grozav, dar aș dori să mă îndepărtez de conceptul de scriere a scripturilor pentru a rula scripturi... pentru a rula scripturi...
1. Instalarea freeacs
O vom instala pe Centos7, iar având în vedere că dispozitivele transmit o cantitate mare de date și ACS interacționează activ cu baza de date - nu ne vom zgârci la resurse. Pentru o funcționare confortabilă, vom aloca 2 nuclee CPU, 4GB RAM și 16GB de stocare rapidă SSD RAID10. Eu voi instala freeacs într-un container LXC Proxmox VE, iar tu poți lucra cu orice instrument îți este convenabil.
Nu uita să configurezi corect ora pe mașina cu ACS.
Sistemul va fi de testare, așa că nu ne vom complica și pur și simplu vom folosi scriptul de instalare oferit, așa cum este.
wget https://raw.githubusercontent.com/freeacs/freeacs/master/scripts/install_centos.sh
chmod +x install_centos.sh
./install_centos.shDupă ce scriptul se va termina - vei putea accesa imediat interfața web la IP-ul mașinii, cu datele de autentificare admin/freeacs

Iată o interfață minimalistă plăcută, și cât de bine și rapid a mers totul
2. Configurarea inițială a freeacs
Unitatea de bază de gestionare pentru ACS este unitatea sau CPE (Customer Premises Equipment). Și cel mai important, ceea ce ne trebuie pentru a gestiona unitățile este tipul lor de unitate, adică modelul echipamentului, care determină setul de parametri configurabili ai unității și software-ului său. Dar până nu știm cum să introducem corect un nou tip de unitate, cel mai bine este să întrebăm unitatea în sine, activând modul de descoperire.
În producție, un astfel de mod nu trebuie utilizat categoric, dar trebuie să pornim motorul și să vedem capacitățile sistemului. Toate setările principale sunt stocate în /opt/freeacs-*. Așadar, deschidem
vi /opt/freeacs-tr069/config/application-config.conf , găsim
discovery.mode = falseși schimbăm în
discovery.mode = trueÎn plus, este de dorit să creștem dimensiunile maxime ale fișierelor cu care vor lucra nginx și mysql. Pentru mysql adăugăm în /etc/my.cnf linia
max_allowed_packet=32M, iar pentru nginx, în /etc/nginx/nginx.conf adăugăm
client_max_body_size 32m;în secțiunea http. Altfel, putem lucra cu firmware-uri de maximum 1M.
Reporniți, și suntem gata să lucrăm cu dispozitivele.
Iar în rolul dispozitivului (CPE) va fi micul muncitor .
Înainte de conectarea de test, este bine să configurați manual CPE-ul la o configurare minimă de operare, astfel încât parametrii pe care doriți să-i configurați ulterior să nu fie goi. Pentru router, putem activa minim clientul dhcp pe ether1, instala pachetul tr-069client și seta parole.
3. Conectăm Mikrotik
Toate unitățile ar trebui conectate, folosind ca nume de utilizator un număr de serie valid. Atunci veți înțelege totul din jurnale. Unii sfătuiesc să folosească WAN MAC — nu credeți. Alții folosesc o combinație comună de login/parola — evitați-i.
Deschidem log-ul tr-069 pentru a monitoriza "negocierile"
tail -f /var/log/freeacs-tr069/tr069-conversation.logDeschidem winbox, meniul TR-069.
ACS URL: http://10.110.0.109/tr069/prov (înlocuiți cu IP-ul dvs.)
Username: 9249094C26CB (copiați numărul de serie din system>routerboard)
Password: 123456 (nu este necesară pentru discovery, dar este bine să existe)
Periodic inform interval nu îl schimbăm. Această setare o vom da prin ACS-ul nostru
Mai jos sunt setările pentru inițializarea de la distanță a conexiunii, dar nu am reușit să fac mikrotik să funcționeze cu acestea din prima. Deși cu telefoanele, remote request funcționează „din cutie”. Trebuie să ne ocupăm de asta.

După apăsarea butonului Apply — în terminal va începe schimbul de date, iar în interfața web Freeacs va putea fi văzut routerul nostru cu tipul de unitate creat automat „hAPaclite”.

Routerul este conectat. Putem verifica tipul de unitate creat automat. Deschidem Easy Provisioning > Unit Type > Unit Type Overview > hAPaclite. Ce nu există acolo! Întreaga 928 de parametri (am dezvăluit în shell). Mult sau puțin — vom analiza mai târziu, iar acum să aruncăm o privire rapidă. Iată ce înseamnă Tipul Unitatății. Este o listă de parametri acceptați cu chei, dar fără valori. Valorile sunt stabilite la niveluri inferioare — în Profile și Unitate.
4. Configurăm Mikrotik
A sosit timpul să descărcăm Acest manual din 2011 este ca o sticlă de vin bun și învechit. Haideți să-l deschidem și să-l lăsăm să respire.
Iar noi, în interfața web, facem clic pe creionul de lângă unitatea noastră și trecem în modul de configurare a unității. Arată cam așa:

Să discutăm pe scurt ce este interesant pe această pagină:
Bloc Configurarea unității
- Profil: Acesta este un profil în cadrul Tipului de Unitate. Ierarhia este următoarea:
UnitType > Profil > Unitate. Deci, putem crea, de exemplu, profilehAPaclite > hotspotșihAPaclite > branch, dar în cadrul modelului de dispozitiv
Bloc Provisioning cu butoane
Indicațiile sugerează că toate butoanele din blocul Provisioning pot aplica instantaneu configurația prin ConnectionRequestURL. Dar, așa cum am spus mai sus, asta nu funcționează, deci după ce apăsăm butoanele va trebui să repornim clientul tr-069 pe mikrotik pentru a porni manual provision.
- Freq/Spread: De câte ori pe săptămână să livrăm configurația ± %, pentru a reduce sarcina pe server și pe canalele de comunicație. Implicit, este setat pe 7/20, adică în fiecare zi ± 20% și indicația cum este asta în secunde. Deocamdată nu are sens să schimbăm frecvența livrării, deoarece va genera zgomot suplimentar în loguri și nu întotdeauna aplicarea așteptată a setărilor.
Bloc Istoricul Provisioning (ultimele 48 de ore)
- Privind din exterior, istoria arată ca o istorie normală, dar făcând clic pe titlu — ajungi la un instrument de căutare convenabil în baza de date, cu regexp și fantezii.
Bloc Parametrii
Cel mai mare și important bloc, unde, de fapt, sunt stabilite și citite parametrii pentru această unitate. Acum vedem doar cei mai importanți parametrii sistemici, fără de care muncă ACS cu unitatea nu este posibilă. Dar noi ne amintim că în Tipul de Unitate sunt — 928. Haideți să vedem toate valorile și să ne dăm seama cu ce se mănâncă toate acestea la mikrotik.
4.1 Citim parametrii
În blocul Provisioning apăsăm butonul Citire tot. În bloc — inscripția roșie. În dreapta va apărea un coloana CPE (valoare curentă). În parametrii sistemici, ProvisioningMode s-a schimbat în READALL.

Și... nimic nu se va întâmpla, în afara mesajului din System.X_FREEACS-COM.IM.Message Kick failed at....
Reporniți clientul TR-069 sau reporniți routerul și continuați să actualizați pagina browserului până când veți obține parametrii în dreptunghiuri gri prietenoase pe partea dreaptă.
Dacă cineva a dorit să guste un vechi whisky învechit — acest mod este descris în manual ca 10.2 Inspection mode. Se activează și funcționează puțin diferit, dar esența este exprimată destul de bine.

Modul READALL se va dezactiva singur după 15 minute, iar noi vom încerca să înțelegem ce este util aici și ce putem modifica 'on the fly', cât timp suntem în acest mod.
Putem schimba adresele IP, activa/dezactiva interfețele, regulile firewall-ului, care sunt însoțite de comentarii (altfel ar fi haos total), wi-fi-ul și câteva detalii mici.
Adică, nu putem configura în mod rezonabil mikrotik doar cu ajutoare TR-069 deocamdată. Dar putem monitoriza foarte bine. Sunt disponibile statistici despre interfețe și starea lor, memoria liberă etc.
4.2 Livrarea parametrilor
Acum să încercăm să livrăm parametrii în router prin tr-069, 'în mod natural'. Prima victimă va fi Device.DeviceInfo.X_MIKROTIK_SystemIdentity. O găsim în parametrii unității All. După cum se vede — nu este setată. Asta înseamnă că orice unitate poate avea orice Identity de sine stătător. Destul cu această situație!
Bifăm căsuța din coloana create, setăm numele Mr.White și apăsăm butonul Update parameters. Ce va urma, ați ghicit. La următoarea sesiune de comunicare cu centrala, routerul ar trebui să își schimbe identitatea.

Dar nu ne ajunge asta. Un parametru, cum ar fi Identity, este bine să fie mereu la îndemână atunci când căutăm unitatea dorită. Facem clic pe numele parametrului și bifăm căsuțele Display(D) și Searchable (S). Cheia parametrului se schimbă în RWSD (Amintiți-vă, numele și cheile sunt setate la cel mai înalt nivel de tip unitate).

Acum valoarea nu doar că apare în lista generală de căutare, ci este și disponibilă pentru căutare în Support > Search > Advanced form

Inițiem provision și ne uităm la Identity. Bună ziua, Mr.White! Acum nu veți putea schimba identitatea de unul singur, cât timp funcționează tr-069client.

4.3 Executarea scripturilor
Deoarece am aflat că nu putem să facem fără ele, să le executăm.
Dar înainte de a începe să lucrăm cu fișierele — trebuie să modificăm directiva public.url în fișierul /opt/freeacs-tr069/config/application-config.conf
După cum știți, avem încă o configurație de test, instalată de un singur script. Nu am uitat?
# --- Public url (used for download f. ex.) ---
public.url = "http://10.110.0.109"
public.url: ${?PUBLIC_URL}Reporniți ACS și mergem direct la Files & Scripts.

Dar ceea ce se deschide acum pentru noi aparține tipului de unitate, adică global tuturor routerelor hAP ac lite, fie că este vorba de un router de filială, hotspot sau capsman. La un nivel atât de ridicat nu avem nevoie deocamdată, așa că, înainte de a lucra cu scripturi și fișiere, trebuie să creăm un profil. Putem să-l numim „funcția” dispozitivului.
Să facem din micul nostru serverul pentru timp. O funcție demnă, cu un pachet de software separat și câteva setări. Mergem la Easy Provisioning > Profile > Create Profile și creăm un profil în tipul de unitate:hAPaclite timeserver. Setările nu erau în profilul implicit, așa că nu avem nimic de copiat. Copy parameters from: „don’t copy…”

Aici nu sunt deloc setări, dar vom putea specifica cele pe care ne-ar plăcea să le vedem pe serverele noastre de timp realizate din hAPaclite. De exemplu, adresele generale ale serverelor NTP.
Accesăm configurația unității și o mutăm în profilul timeserver.
În sfârșit, mergem la Files & Scripts, pentru a crea scripturi, și aici ne așteaptă funcționalități incredibil de convenabile.
Pentru a rula scriptul pe unitate, trebuie să alegem Type:TR069_SCRIPT și Name și Target Name trebuie să aibă extensia .alter
În acest sens, pentru scripturi, spre deosebire de software, putem încărca un fișier gata făcut sau pur și simplu să-l scriem/ediem în câmpul Content. Să încercăm să scriem direct acolo.
Și pentru a vedea imediat rezultatul — să adăugăm unui VLAN routerului pe ether1.
/interface vlan
add interface=ether1 name=vlan1 vlan-id=1
Introducem, apăsăm Upload și gata. Scriptul nostru vlan1.alter așteaptă să fie executat.
Deci, să începem? Nu. Trebuie să mai adăugăm un grup pentru profilul nostru. Grupurile nu fac parte din ierarhia echipamentului, dar sunt necesare pentru căutarea unităților în UnitType sau Profile și sunt indispensabile pentru executarea scripturilor prin Advanced Provisioning. De obicei, grupurile sunt legate de locații și au o structură ierarhică. Să facem un grup Rusia.

Imaginați-vă că tocmai am reușit să restrângem căutarea de la „Toate serverele de timp din lume pe hAPaclite” la „Toate serverele de timp din Rusia pe hAPaclite”. Există o mulțime de lucruri interesante legate de grupuri, dar nu avem timp. Hai să mergem la scripturi.
Advanced Provisioning > Job > Create Job
Fiindcă suntem în modul Avansat, aici putem specifica o mulțime de condiții de început pentru sarcini, comportament în caz de erori, repetări și timeout-uri. Recomand să citiți totul în manuale sau putem discuta mai târziu în cazul implementării în producție. Până atunci, haideți să setăm n1 în Stop rules, astfel încât sarcina să se oprească imediat ce se finalizează pe unitatea noastră 1.
Completăm cele necesare și ne mai rămâne doar să lansăm!

Apăsăm START și așteptăm. Acum, contorul dispozitivelor necorect configurate va începe să deruleze! Desigur, nu. Astfel de sarcini sunt date pe termen lung, iar aceasta este diferența față de scripturi, Ansible și alte soluții. Unitățile se conectează singure pentru sarcini conform unui program sau pe măsură ce apar în rețea, ACS ține evidența unităților care au primit deja sarcini și cum au fost finalizate, iar aceste informații sunt stocate în parametrii unității. În grupul nostru avem 1 unitate, iar dacă ar fi fost 1001, administratorul ar fi lansat această sarcină și ar fi plecat la pescuit.
Hai, reporniți routerul sau reluați clientul TR-069. Totul ar trebui să decurgă lin și dl. White va primi un nou vlan. Iar sarcina noastră din Stop rule va trece în status PAUSED. Adică, aceasta poate fi reluată sau modificată. Dacă apăsați FINISH, sarcina va fi arhivată.
4.4 Actualizăm software-ul
Acesta este un pas foarte important, deoarece firmware-ul routerului MikroTik este modular, dar adăugarea de module nu schimbă versiunea generală a firmware-ului dispozitivului. ACS-ul nostru este normal și nu suntem obișnuiți cu asta.
Acum vom face în stil quick&dirty și vom include modulul NTP în firmware-ul general, dar de îndată ce versiunea dispozitivului se va actualiza, nu vom putea adăuga încă un modul în același mod.
În producție, este mai bine să nu aplicați acest truc și să instalați modulele opționale pentru Tipul Unității doar prin scripturi.
Așadar, primul lucru pe care trebuie să-l facem este să pregătim pachetele de software cu versiunile și arhitecturile necesare și să le plasăm pe un server web accesibil. Pentru testare, orice server care poate fi accesat de dl. White va funcționa, iar pentru producție este mai bine să adunăm o oglindă autoactualizabilă a software-ului necesar, care poate fi expusă pe web.
Important! Nu uitați să includeți întotdeauna pachetul cu tr-069client în actualizări!
După cum s-a dovedit, lungimea traseului până la pachete este foarte importantă! În încercările mele de a folosi ceva de genul http://192.168.0.237/routeros/stable/mipsbe/routeros-mipsbe-6.45.6.npk, Mikrotik a intrat într-o conexiune ciclică cu resursa, oferind în jurnal tr-069 TRANSFERCOMPLETE repetate. Și am cheltuit un anumit număr de celule nervoase încercând să aflu ce nu este în regulă. Așadar, deocamdată să presupunem că este în regulă până la clarificare.
Deci, trebuie să avem trei fișiere npk disponibile prin http. Așa a ieșit:
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.npkAcum trebuie să formatez acesta într-un fișier xml cu FileType="1 Firmware Upgrade Image", pe care îl vom alimenta Mikrotik-ului. Să fie numit ros.xml.
Facem conform instrucțiunilor din :
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.npkSe observă lipsa Username/Password pentru acces la serverul de încărcare. Poți fie să încerci să scrii asta așa cum la punctul A.3.2.8 din protocolul tr-069:
http://192.168.0.237/routeros/stable/mipsbe/ntp-6.45.6-mipsbe.npk
user
passSau să întrebi direct oficialii Mikrotik despre lungimea maximă a căii până la *.npk.
Ne îndreptăm către cele cunoscute Files & Scripts, și creăm acolo un fișier de tip SOFTWARE cu Name:ros.xml, Target Name:ros.xml și Version:6.45.6
Atenție! Versiunea aici trebuie să fie specificată exact în formatul în care este afișată pe dispozitiv și transmisă în parametrul System.X_FREEACS-COM.Device.SoftwareVersion.
Selectăm fișierul nostru xml pentru a fi încărcat și gata.

Acum avem o mulțime de metode pentru a actualiza dispozitivul. Prin Wizard în meniul principal, prin Advanced Provisioning și sarcini de tip SOFTWARE, sau pur și simplu intrăm în configurația unității și apăsăm Upgrade. Vom alege cea mai simplă cale, căci oricum articolul a crescut.

Apăsăm butonul, inițiem provision și gata. Programul de testare s-a încheiat. Acum știm să facem mai multe cu Mikrotik.
5. Concluzie
Când am început să scriu, am vrut inițial să descriu conexiunea unui telefon IP și să explic pe exemplul său cât de ușor poate fi când tr-069 funcționează fără efort. Dar apoi, pe măsură ce avansam și săpam în materiale, m-am gândit că celui care a conectat Mikrotik-ul nu îi va mai fi frică de niciun telefon pentru a învăța pe cont propriu.
În principiu, Freeacs, pe care l-am testat, poate fi folosit deja în producție, dar trebuie să configurăm securitatea, SSL, să setăm MikroTik-urile pentru autoconfigurare după resetare, să ajustăm adăugarea corectă a tipului de unitate, să deslușim funcționarea webservices și fusion shell, și încă multe altele. Încercați, inovați și scrieți un continuare!
Mulțumesc tuturor pentru atenție! Voi fi bucuros să primesc corecturi și comentarii!
Lista materialelor folosite și linkuri utile:
Sursa: habr.com
