U ovom članku ću pokušati korak po korak opisati proces instalacije testnog servera prekrasnog projekta do potpuno funkcionalnog stanja i prikazati praktične metode za rad s mikrotik: konfiguraciju putem parametara, izvršenje skripti, ažuriranje, instalaciju dodatnih modula itd.
Cilj članka je potaknuti kolege da se odmore od upravljanja mrežnim uređajima uz pomoć strašnih zadataka i improvizacija, poput samostalno napisanih skripti, Dude, Ansible i slično. I, povodom toga, izazvati salve i masovno slavlje na trgovima.
0. Odabir
Zašto freeacs, a ne genie-acs, spomenut u , kao živahnija opcija?
Zato što o genie-acs s mikrotik postoje objave Španjolaca. Evo ih i s prošlogodišnjeg MUM. Automatske potplate na slajdovima su kul, ali bih volio otići od koncepta pisanja skripti za pokretanje skripti za pokretanje skripti…
1. Instalacija freeacs
Instalirat ćemo na Centos7, a budući da uređaji šalju dovoljno podataka, a ACS aktivno radi s bazom podataka — nećemo štedjeti na resursima. Za udoban rad odvojit ćemo 2 CPU jezgre, 4GB RAM-a i 16GB brzog SSD RAID10 spremišta. Instalirat ću freeacs u LXC kontejneru Proxmox VE, a vi možete raditi u bilo kojem alatu koji vam odgovara.
Ne zaboravite postaviti pravo vrijeme na mašini s ACS-om.
Sustav će biti testni, pa nećemo komplicirati i jednostavno ćemo koristiti ljubazno ponuđeni skript za instalaciju, onakav kakav jest.
wget https://raw.githubusercontent.com/freeacs/freeacs/master/scripts/install_centos.sh
chmod +x install_centos.sh
./install_centos.shČim se rad skripta završi — odmah ćete moći pristupiti web sučelju putem IP adrese mašine, sa korisničkim podacima admin/freeacs

Takvo je ugodno minimalističko sučelje, i kako je divno i brzo sve ispalo
2. Prva konfiguracija freeacs
Osnovna jedinica upravljanja za ACS je jedinica ili CPE (Oprema korisničkog prostora). A najvažnije što nam treba za upravljanje jedinicama je njihov Unit Type, tj. model opreme koji određuje skup prilagodljivih parametara jedinice i njenog softvera. Ali dok ne znamo kako ispravno uvesti novu jedinicu, najbolje bi bilo pitati samu jedinicu, uključivši Discovery Mode.
U produkciji se takav način korištenja kategorički ne smije koristiti, ali moramo što prije pokrenuti motor i vidjeti mogućnosti sustava. Sve glavne postavke pohranjuju se u /opt/freeacs-*. Stoga, otvaramo
vi /opt/freeacs-tr069/config/application-config.conf , nalazimo
discovery.mode = falsei mijenjamo na
discovery.mode = trueOsim toga, poželjno je povećati maksimalne veličine datoteka s kojima će raditi nginx i mysql. Za mysql dodajemo u /etc/my.cnf redak
max_allowed_packet=32M, a za nginx, u /etc/nginx/nginx.conf dodajemo
client_max_body_size 32m;u http odjeljak. Inače, moći ćemo raditi s firmware-ima ne većim od 1M.
Ponovno pokrećemo i spremni smo za rad s uređajima.
A kao uređaj (CPE) imat ćemo malog radnika .
Prije testnog povezivanja, poželjno je ručno podesiti CPE na minimalnu radnu konfiguraciju kako bi parametri koje kasnije želite konfigurirati bili ispunjeni. Za router minimalno se može uključiti dhcp-klijent na ether1, instalirati paket tr-069client i postaviti lozinke.
3. Povezujemo Mikrotik
Sve jedinice poželjno je povezati koristeći valjanu serijsku broj kao prijavu. Tada će vam u logovima sve biti jasno. Neki savjetuju korištenje WAN MAC-a — ne vjerujte im. Neki koriste zajednički login/password za sve — izbjegavajte ih.
Otvorite log tr-069 za praćenje 'pregovora'
tail -f /var/log/freeacs-tr069/tr069-conversation.logOtvorite winbox, odaberite TR-069 iz izbornika.
ACS URL: http://10.110.0.109/tr069/prov (zamijenite s vašim IP-om)
Korisničko ime: 9249094C26CB (kopirajte serijski broj iz system>routerboard)
Lozinka: 123456 (za discovery nije potrebna, ali neka bude)
Periodični informativni interval ne mijenjamo. Ovu postavku ćemo izraditi putem našeg ACS-a.
Ispod se nalaze postavke za daljinsku inicijalizaciju veze, ali nisam uspio natjerati mikrotik da s tim radi odmah. Iako na telefonima daljinski zahtjev radi 'iz kutije'. Trebat će istražiti.

Nakon što pritisnete gumb Primijeni — podaci će se razmjenjivati u terminalu, a u web sučelju Freeacs moći ćete vidjeti naš router s automatski kreiranom jedinicom tipa 'hAPaclite'.

Router je povezan. Možete zaviriti u automatski kreiranu jedinicu tipa. Otvorite Easy Provisioning > Unit Type > Pregled jedinica > hAPaclite. Što tamo sve nema! Čitavih 928 parametara (vidio sam u shellu). Je li to puno ili malo — razjasnit ćemo kasnije, a sada samo brzo pogledajmo. Ovo je što znači jedinica tipa. To je popis podržanih parametara s ključevima, ali bez vrijednosti. Vrijednosti se postavljaju na nižim razinama — u profilima i jedinicama.
4. Konfiguriramo Mikrotik
Došao je trenutak da preuzmemo Ovo je priručnik iz 2011. godine — poput boce dobrog, starog vina. Otvorimo ga i ostavimo da 'diše'.
A u web sučelju kliknite na olovku pored našeg jedinice i pređite u način konfiguracije jedinice. Izgleda ovako:

Krato ćemo razmotriti što je zanimljivo na ovoj stranici:
Blok Konfiguracija jedinice
- Profil: Ovo je profil unutar Tip jedinice. Hijerarhija je ovakva:
TipJedinice > Profil > Jedinica. To znači da možemo kreirati, na primjer, profilehAPaclite > hotspotihAPaclite > branch, ali unutar modela uređaja
Blok Provisioning s gumbima
Savjeti sugeriraju da svi gumbi u bloku Provisioning mogu odmah primijeniti konfiguraciju putem ConnectionRequestURL. No, kao što sam ranije rekao, to ne radi, stoga će nakon pritiska gumba biti potrebno ponovno pokrenuti tr-069 klijent na mikrotiku za ručno pokretanje provisiona.
- Freq/Spread: Koliko puta tjedno isporučiti konfiguraciju ± %, kako bi se smanjilo opterećenje na poslužitelju i komunikacijskim kanalima. Po defaultu je postavljeno 7/20, tj. svaki dan ± 20% i napomena o tome u sekundama. Još nema smisla mijenjati učestalost isporuke, jer će biti suvišnog šuma u logovima i ne uvijek očekivanog primjena postavki.
Blok Povijest Provisioninga (zadnjih 48 sati)
- Izgleda kao povijest, ali klikom na naslov dolazite do zgodnog alata za pretraživanje po bazi, s regexp-om i dodacima.
Blok Parametri
Najveći i najvažniji blok u kojem se zapravo postavljaju i očitavaju parametri za ovu jedinicu. Trenutno vidimo samo najvažnije sistemske parametre bez kojih rad ACS-a s jedinicom nije moguć. No, mi se sjećamo da mi u Tipu jedinice imamo — 928. Pogledajmo sve vrijednosti i odlučimo s čim se to sve koriste na mikrotiku.
4.1 Očitavanje parametara
U bloku Provisioning pritisnite gumb Očitavanje svih. U bloku — crvena natpis. Desno će se pojaviti stupac CPE (trenutna) vrijednost. U sistemskim parametrima ProvisioningMode promijenio se na READALL.

I… ništa se neće dogoditi, osim poruke u System.X_FREEACS-COM.IM.Message Kick failed at....
Ponovno pokrenite TR-069 klijent ili ponovno pokrenite usmjerivač, i nastavite osvježavati stranicu u pregledniku dok ne dobijete desno parametre u veselih sivih pravokutnicima.
Ako je netko želio gurnuti starog vina — ovaj način je u priručniku opisan kao 10.2 Način inspekcije. Uključuje se i radi malo drugačije, ali suština je sasvim opisana.

Način READALL će se sam isključiti nakon 15 minuta, a mi ćemo pokušati otkriti što ovdje ima korisnog i što možemo promijeniti „u hodu“, dok smo u ovom načinu.
Možete mijenjati IP adrese, uključivati/isključivati sučelja, pravila vatrozida koja sadrže komentare (inače potpuni nered), wi-fi i tako dalje.
Drugim riječima, trenutno nije moguće razumno konfigurirati mikrotik samo pomoću TR-069. No, može se prilično dobro pratiti. Dostupna je statistika o sučeljima i njihovom statusu, slobodnoj memoriji itd.
4.2 Dostava parametara
Sada probajmo dostaviti parametre u usmjerivač putem tr-069, 'prirodnim' putem. Prva žrtva bit će Device.DeviceInfo.X_MIKROTIK_SystemIdentity. Nalazimo ga u parametrima jedinice All. Kao što se može vidjeti - nije postavljen. To znači da bilo koja jedinica može sama imati bilo koji Identity. Dosta je toga!
Označavamo kućicu u stupcu create, postavljamo ime Mr.White i pritiskamo gumb Update parameters. Što će se dogoditi, već ste pogodili. Prilikom sljedeće sesije povezivanja s centralom, usmjerivač bi trebao promijeniti svoj Identity.

Ali nam to nije dovoljno. Takav parametar kao Identity uvijek je dobar za imati pri ruci kada tražite potrebnu jedinicu. Kliknemo na ime parametra i označavamo kućice Display(D) i Searchable(S). Ključ parametra se mijenja u RWSD (Zapamtite, imena i ključevi postavljaju se na najvišoj razini tipa jedinice)

Vrijednost sada ne samo da se prikazuje u općem popisu pretraživanja, već je dostupna i za pretraživanje u Support > Search > Advanced form

Iniciramo provision i gledamo na Identity. Zdravo, Mr.White! Sada nećete moći sami promijeniti identitet dok radi tr-069 client.

4.3 Izvršavanje skripti
S obzirom da smo shvatili da bez njih ne možemo — hajde da ih izvršimo.
Ali prije nego što počnemo raditi s datotekama — trebamo ispraviti direktivu public.url u datoteci /opt/freeacs-tr069/config/application-config.conf
Ima li to i dalje testna konfiguracija postavljena jednim skriptom. Nismo zaboravili?
# --- Public url (used for download f. ex.) ---
public.url = "http://10.110.0.109"
public.url: ${?PUBLIC_URL}Restartamo ACS i idemo izravno na Files & Scripts.

Ali ono što nam se sada otvara pripada tipu jedinice, tj. globalno svim usmjerivačima hAP ac lite, bilo da se radi o usmjerivaču podružnice, hotspotu ili capsmanu. Takva visoka razina nam trenutno nije potrebna, stoga, prije nego što radimo sa skriptama i datotekama — trebamo stvoriti profil. Možemo to nazvati, kao 'funkciju' uređaja.
Pretvorimo naše malo čudo u server vremena. Dignitetna funkcija s posebnim paketom softvera i malim brojem parametara. Idemo u Easy Provisioning > Profile > Create Profile i kreiramo u tipu jedinice: hAPaclite profil timeserver. U defaultnom profilu nismo imali parametre, pa nema što ni kopirati. Kopirajte parametre iz: «ne kopirajte…»

Trenutno nema parametara, ali ćemo moći postaviti one koje želimo vidjeti na našim vremenima, kombiniranima iz hAPaclite. Na primjer, opći NTP serveri.
Prelazimo u konfiguraciju mrežnog uređaja i premještamo ga u profil timeserver
Napokon idemo u Files & Scripts, raditi skripte, i ovdje nas čekaju izuzetno korisne mogućnosti.
Da bismo izvršili skriptu na jedinici, trebamo odabrati Tip: TR069_SCRIPT a Name i Naziv cilja moraju imati ekstenziju .alter
Za skripte, za razliku od softvera, možemo ili učitati gotovu datoteku ili jednostavno napisati/urediti je u polju Sadržaj. Pokušajmo napisati isto tamo.
Kako bismo odmah vidjeli rezultat — dodajmo routeru vlan na ether1
/interface vlan
add interface=ether1 name=vlan1 vlan-id=1
Upisujemo, pritisnemo Učitaj i to je to. Naša skripta vlan1.alter čeka svoj trenutak.
Pa, idemo? Ne. Moramo još dodati grupu za naš profil. Grupe nisu uključene u hijerarhiju opreme, ali su potrebne za pretraživanje jedinica u UnitType ili Profilu i obavezne su za izvršavanje skripti putem Advanced Provisioning. Obično, grupe su povezane s lokacijama i imaju uvučenu strukturu. Napravimo grupu Rusija.

Zamislite, upravo smo suzili pretraživanje s «Sve svjetske vremenske servere na hAPaclite» na «Sve vremenske servere Rusije na hAPaclite». Ima tu još puno zanimljivog u vezi grupa, ali nemamo vremena. Idemo već na skripte.
Napredno provisioniranje > Posao > Kreiraj posao
Budući da smo u Advanced režimu, ovdje možemo navesti niz različitih uvjeta za početak zadatka, ponašanje u slučaju grešaka, ponavljanja i vremenskih ograničenja. Preporučujem da to sve pročitate u priručnicima ili ćemo kasnije o tome raspraviti kada implementiramo u produkciju. Za sada ćemo staviti n1 u pravila obustave, kako bi se zadatak zaustavio čim se izvrši na našoj 1 jedinici.
Ispunjavamo potrebne podatke i ostaje samo pokrenuti!

Pritiskamo POČNI i čekamo. Sada će brojčanik uređaja koje je pokvarena skripta 'ubila' naglo porasti! Ne, naravno. Takvi se zadaci izvode duže, i to je njihova razlika od skripti, Ansible-a i drugih. Jedinice same traže zadatke prema rasporedu ili kad se pojave u mreži, ACS prati koje su jedinice već primile zadatke i kako su ih završile, te to zabilježi u parametrima jedinice. U našoj grupi je 1 jedinica, a da ih je 1001 — admin bi pokrenuo taj zadatak i otišao na ribolov.
Hajde. Ponovo pokrenite ruter ili restartujte TR-069 klijent. Sve bi trebalo proći glatko i Mr.White će dobiti novi vlan. A naš zadatak prema Stop pravilu će preći u status PAUSED. To znači da se još uvek može pokrenuti ponovo ili izmeniti. Ako pritisnete FINISH — zadatak će se prebaciti u arhivu.
4.4 Ažuriramo softver
Ovo je veoma važna tačka, jer je firmver mikrotika modularan, ali dodavanje modula ne menja ukupnu verziju firmvera uređaja. Naš ACS je u redu, i nismo na to navikli.
Sada ćemo to uraditi u bržem i jednostavnijem stilu, i staviti NTP modul u ukupan firmver odmah, ali čim se verzija na uređaju ažurira — nećemo moći dodati još jedan modul na isti način.
Za produkciju, ovakve trikove je bolje ne koristiti i instalirati module koji nisu obavezni za Tip Jedinice samo skriptama.
Dakle, prvo što treba da uradimo — je da pripremimo softverske pakete potrebnih verzija i arhitektura, i postavimo ih na neki dostupan veb server. Za test će poslužiti bilo koji, do kojeg može da dođe naš Mr.White, a za produkciju je bolje postaviti auto-ažurirajuće ogledalo potrebnog softvera, koje nije zastrašujuće postaviti na web.
Važno! Uvek se setite da uključite paket sa tr-069client u ažuriranja!
Kako se ispostavilo, dužina puta do paketa je veoma važna! U mojim pokušajima korišćenja nečega poput http://192.168.0.237/routeros/stable/mipsbe/routeros-mipsbe-6.45.6.npk, mikrotik se srušio u ciklično povezivanje sa resursom, isporučujući u tr-069 log ponavljajuće TRANSFERCOMPLETE. Potrošio sam određeni broj nervnih ćelija pokušavajući da shvatim šta nije u redu. Stoga, za sada ćemo ga staviti u koren, dok ne saznamo.
Dakle, treba da imamo tri npk fajla dostupna putem http. Meni je ispalo ovako:
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.npkSada to treba oblikovati u xml fajl sa FileType="1 Firmware Upgrade Image", koji ćemo nahraniti mikrotiku. Neka se zove ros.xml.
Radimo prema uputstvu iz :
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.npkU oči upada nedostatak Korisničko ime/Lozinka za pristup serveru za preuzimanje. Može se probati da se upiše kao u tački A.3.2.8 protokola tr-069:
http://192.168.0.237/routeros/stable/mipsbe/ntp-6.45.6-mipsbe.npk
user
passIli pitati izravno ovlaštene mikroTik o maksimalnoj dužini puta do *.npk
Prvo idemo u poznate nam Files & Scripts, i tamo kreiramo datoteku tipa SOFTWARE s Naziv:ros.xml, Ciljni naziv:ros.xml i Verzija:6.45.6
Pozor! Verzija mora biti navedena u točnom formatu, onakvom kakav se prikazuje na uređaju i prenosi u parametru System.X_FREEACS-COM.Device.SoftwareVersion.
Odabiremo naš xm-datoteku za preuzimanje i to je to.

Sada imamo mnogo načina za ažuriranje uređaja. Kroz Wizard u glavnom izborniku, preko Advanced Provisioning i zadataka tipa SOFTWARE, ili jednostavno otići u konfiguraciju jedinice i pritisnuti Ažuriraj. Odabrati ćemo najjednostavniji put, jer je članak već narastao.

Pritiskamo gumb, pokrećemo provision i to je to. Testni program je završen. Sada znamo raditi više s mikrotikom.
5. Zaključak
Kad sam počeo pisati, prvo sam želio opisati povezivanje IP telefona, i na njegovom primjeru objasniti kako može biti sjajno kada tr-069 radi lako i bez napora. No, kako je vrijeme prolazilo i kopao sam po materijalima, pomislio sam da onome tko je povezao mikroTik — nijedan telefon više neće biti zastrašujući za samostalno učenje.
U načelu, Freeacs koji smo testirali — već se može primjenjivati u produkciji, ali za to treba postaviti sigurnost, SSL, potrebno je konfigurirati mikroTike za automatsku konfiguraciju nakon resetiranja, usavršiti pravilno dodavanje Unit Type, razjasniti rad web servisa i fusion shell, i još mnogo toga. Isprobajte, izumite, i napišite nastavak!
Sve, hvala na pažnji! Bit ću zahvalan na ispravcima i komentarima!
Popis korištenih materijala i korisne veze:
Izvor: habr.com
