V tomto článku sa pokúsim krok za krokom opísať proces inštalácie testovacieho servera skvelého projektu. do úplne funkčného stavu a ukázať praktické triky pre prácu s mikrotikmi: konfiguráciu cez parametre, vykonávanie skriptov, aktualizácie, inštaláciu doplnkových modulov atď.
Cieľom článku je povzbudiť kolegov, aby sa vzdali správy sieťových zariadení pomocou hrozných nápadov a patchworku, ako sú vlastné skripty, Dude, Ansible a podobne. A zároveň vyvolať oslavy a hromadné radosť na námestiach.
0. Výber
Prečo freeacs, a nie genie-acs, spomenutý v , ako viac aktívny?
Pretože o genie-acs s mikrotik existujú publikácie zo Španielska. Tu sú ich a z minuloročného MUM. Automatizácia na slidoch - to je skvelé, ale chcel by som sa vyhnúť konceptu písania skriptov, aby sa skripty spúšťali pre ďalšie skripty...
1. Inštalácia freeacs
Inštalovať budeme na Centos7, a pretože zariadenia prenášajú dosť veľa údajov, a ACS aktívne pracuje s databázou - nebudeme šetriť s prostriedkami. Pre pohodlnú prácu vyhradíme 2 jadrá CPU, 4 GB RAM a 16 GB rýchleho úložiska ssd raid10. Ja budem inštalovať freeacs v lxc kontajneri Proxmox VE, a vy môžete pracovať v akomkoľvek vám pohodlnom nástroji.
Nezabudnite nastaviť správny čas na stroji s ACS.
Systém bude testovací, takže si nebudeme komplikovať život a jednoducho využijeme láskavo poskytnutý inštalačný skript, tak ako je.
wget https://raw.githubusercontent.com/freeacs/freeacs/master/scripts/install_centos.sh
chmod +x install_centos.sh
./install_centos.shKeď už skrypt dokončí svoju prácu - okamžite budete mať prístup k webovému rozhraniu cez IP adresu stroja s prihlasovacími údajmi admin/freeacs.

Takéto príjemné minimalistické rozhranie a ako skvele a rýchlo to všetko dopadlo.
2. Počiatočné nastavenie freeacs
Základná jednotka správy pre ACS je jednotka alebo CPE (Customer Premises Equipment). A najdôležitejšie, čo potrebujeme na správu jednotiek - je ich Unit Type, t.j. model zariadenia, ktorý určuje súbor nastaviteľných parametrov jednotky a jej softvéru. Ale pokiaľ nevieme, ako správne založiť nový Unit Type, bude najlepšie opýtať sa na to samotnej jednotky zapnutím Discovery Mode.
V produkčnom prostredí by sa takýto režim používať určite nemal, no musíme rýchlo naštartovať motor a preskúmať možnosti systému. Všetky základné nastavenia sú uložené v /opt/freeacs-*. Preto otvoríme
vi /opt/freeacs-tr069/config/application-config.conf , nájdeme
discovery.mode = falsea zmeníme na
discovery.mode = trueOkrem toho by sme mali zvýšiť maximálne veľkosti súborov, s ktorými budú pracovať nginx a mysql. Pre mysql pridáme do /etc/my.cnf riadok
max_allowed_packet=32M, a pre nginx do /etc/nginx/nginx.conf pridáme
client_max_body_size 32m;do sekcie http. Inak budeme môcť pracovať len s firmvérmi maximálne do 1M.
Reštartujeme, a sme pripravení pracovať s zariadeniami.
A v úlohe zariadenia (CPE) budeme mať malého pracanta .
Pred testovacím pripojením je vhodné ručne nakonfigurovať CPE na minimálnu pracovnú konfiguráciu, aby parametre, ktoré v budúcnosti chcete konfigurovať, boli nenulové. Pre router stačí zapnúť dhcp klienta na ether1, nainštalovať balík tr-069client a nastaviť heslá.
3. Pripájame Mikrotik
Všetky jednotky je vhodné pripojiť s použitím platného sériového čísla ako prihlasovacieho mena. Potom budete mať v logoch všetko jasné. Niektorí odporúčajú používať WAN MAC — neverte im. Niektorí používajú spoločný prihlasovací pár pre všetkých — obchádzajte ich.
Otvoríme log tr-069 na monitorovanie "priebehu rozhovorov"
tail -f /var/log/freeacs-tr069/tr069-conversation.logOtvoríme winbox, menu TR-069.
ACS URL: http://10.110.0.109/tr069/prov (vymeniť za vašu IP)
Používateľské meno: 9249094C26CB (skopírujte sériové číslo z system>routerboard)
Heslo: 123456 (pre discovery nie je potrebné, ale aby bolo)
Periodický interval informovania nemeníme. Toto nastavenie poskytneme cez náš ACS
Nižšie sú nastavenia pre vzdialenú inicializáciu spojenia, ale z krátkeho kontaktu sa mi nepodarilo donútiť mikrotik s týmto pracovať. Aj keď s telefónmi remote request funguje "out of the box". Bude treba sa na to pozrieť.

Po stlačení tlačidla Apply sa v termináli začne výmena údajov a v webovom rozhraní Freeacs uvidíme náš router s automaticky vytvoreným typom jednotky "hAPaclite".

Router je pripojený. Môžete sa pozrieť na automaticky vytvorený typ jednotky. Otvoríme Easy Provisioning > Unit Type > Unit Type Overview > hAPaclite. Čo tam len nie je! Celých 928 parametrov (škúlal som v shell). Je to veľa alebo málo — na tom sa dohodneme neskôr, a zatiaľ sa na to len rýchlo pozrime. Toto je to, čo znamená Typ jednotky. To je zoznam podporovaných parametrov s kľúčmi, ale bez hodnôt. Hodnoty sa zadávajú na nižších úrovniach — v Profiloch a Jednotkách.
4. Konfigurujeme Mikrotik
Prišiel čas stiahnuť Táto príručka je z roku 2011 — ako fľaša dobrého, zrelého vína. Otvorme ju a nechajme dýchať.
A my v webovom rozhraní klikneme na ceruzku vedľa našej jednotky a prejdeme do režimu konfigurácie jednotky. Vyzerá to takto:

Krátko sa pozrieme, čo je zaujímavé na tejto stránke:
Blok Konfigurácia jednotky
- Profil: Toto je profil v rámci Typu jednotky. Hierarchia je takáto:
TypJednotky > Profil > Jednotka. Teda, môžeme zaviesť, napríklad, profilyhAPaclite > hotspotahAPaclite > branch, ale v rámci modelu zariadenia
Blok Provisioning s tlačidlami
Nápovedy naznačujú, že všetky tlačidlá v bloku Provisioning môžu okamžite aplikovať konfiguráciu cez ConnectionRequestURL. Ale, ako som už povedal, to nefunguje, preto po stlačení tlačidiel bude potrebné reštartovať tr-069 klienta na mikrotiku na ručný štart provision.
- Frekvencia/Sprej: Koľkokrát za týždeň doručovať konfiguráciu ± %, aby sa znížila záťaž na server a komunikačné kanály. Podľa predvoleného nastavenia je 7/20, t.j. každý deň ± 20 % a nápoveda, ako to je v sekundách. Zatiaľ nemá zmysel meniť frekvenciu doručovania, pretože to spôsobí nadbytočný šum v logoch a nie vždy očakávanú aplikáciu nastavení.
Blok História provisioning (posledných 48 hodín)
- Na pohľad história, ako história, ale kliknutím na záhlavie — sa dostanete do pohodlného nástroja na vyhľadávanie v databáze, s regexp a ďalšími vychytávkami.
Blok Parametre
Najväčší a najdôležitejší blok, kde sa vlastne nastavujú a čítajú parametre pre danú jednotku. Teraz vidíme iba najdôležitejšie systémové parametre, bez ktorých práca ACS s jednotkou nie je možná. Ale my si pamätáme, že v Typu jednotky ich je — 928. Pozrime sa na všetky hodnoty a rozhodneme, ako to všetko funguje na mikrotiku.
4.1 Čítame parametre
V bloku Provisioning stlačíme tlačidlo Prečítať všetko. V bloku — červený nápis. Vpravo sa objaví stĺpec CPE (aktuálna) hodnota. V systémových parametroch sa ProvisioningMode zmenil na READALL.

A… nič sa nestane, okrem správy v System.X_FREEACS-COM.IM.Message Zlyhanie pri kick....
Reštartujte TR-069 klienta alebo reštartujte router a pokračujte v aktualizácii stránku v prehliadači, kým na pravej strane nezískate parametre v veselých šedých obdĺžnikoch.
Ak niekto chcel ochutnať starý zrelý — tento režim je v manuáli popísaný ako 10.2 Inspection mode. Zapína sa a funguje trochu inak, ale podstata je celkom jasná.

Režim READALL sa sám vypne po 15 minútach, a my sa pokúsime zistiť, čo je tu užitočné a čo môžeme upraviť 'za behu', kým sme v tomto režime.
Môžete meniť IP adresy, zapínať/vypínať rozhrania, pravidlá firewallu, ktoré sú s komentármi (ináč by bol totálny chaos), wifi a podobne drobnosti.
To znamená, že rozumné konfigurovanie mikrotik len s pomocou TR-069 zatiaľ nie je možné. Ale môžeme veľmi dobre monitorovať. Dostupná je štatistika pre rozhrania a ich stav, voľná pamäť atď.
4.2 Doručujeme parametre
Teraz sa pokúsime doručiť parametre do routera cez tr-069, 'prirodzeným' spôsobom. Prvou obeťou bude Device.DeviceInfo.X_MIKROTIK_SystemIdentity. Nájdeme ho v parametroch jednotky All. Ako vidno — nie je nastavený. To znamená, že akákoľvek jednotka môže sama o sebe mať akúkoľvek Identitu. Dosť toho znášania!
Zaškrtneme políčko v stĺpci create, nastavíme meno Mr.White a stlačíme tlačidlo Update parameters. Čo sa potom stane, už tušíte. Pri ďalšej komunikácii so strediskom by mal router zmeniť svoju Identitu.

Ale to nám nestačí. Taký parameter, ako Identita, je vždy dobré mať po ruke pri hľadaní potrebnej jednotky. Klikneme na meno parametra a zaškrtneme dáta Display(D) a Searchable (S). Kľúč parametra sa mení na RWSD (Pamätajte, že mená a kľúče sú nastavené na najvyššej úrovni Unit Type)

Hodnota sa teraz zobrazuje nielen v celkovom zozname vyhľadávania, ale je tiež dostupná na vyhľadávanie v Support > Search > Advanced form

Iniciujeme provision a pozeráme na Identitu. Dobrý deň, Mr.White! Teraz si sami nebudete môcť zmeniť masku, kým funguje tr-069 klient.

4.3 Vykonávame skripty
Keďže sme zistili, že bez nich sa nedá, — poďme ich vykonávať.
Ale predtým, ako začneme pracovať s súbormi — musíme upraviť direktívu public.url v súbore /opt/freeacs-tr069/config/application-config.conf
Veď máme stále testovaciu konfiguráciu, nainštalovanú jedným skriptom. Nezabudli ste?
# --- Public url (used for download f. ex.) ---
public.url = "http://10.110.0.109"
public.url: ${?PUBLIC_URL}Reštartujeme ACS a zamierime priamo do Files & Scripts.

To, čo teraz otvárame, patrí typu jednotky, t.j. globálne všetkým routerom hAP ac lite, či už ide o router pobočky, hotspot alebo CAPsMAN. Takú vysokú úroveň zatiaľ nepotrebujeme, preto predtým, než pracujeme so skriptami a súbormi, je potrebné vytvoriť profil. Môžeme si to nazvať 'pozícia' zariadenia.
Poďme urobiť z nášho miláčika časový server. Dôstojná pozícia s vlastným balíkom softvéru a niekoľkými parametrami. Ideme do Easy Provisioning > Profil > Vytvoriť profil a vytvárame profil v type jednotky: hAPaclite timeserver.Parametre v našom predvolenom profile neexistovali, takže niet čo kopírovať. Kopírovať parametre z: „nekopírovať...“

Tu zatiaľ nie sú žiadne parametre, ale neskôr môžeme zadať tie, ktoré chceme vidieť na našich časových serveroch vytvorených z hAPaclite. Napríklad, spoločné adresy NTP serverov.
Prejdeme do konfigurácie jednotky a presunieme ju do profilu timeserver.
Konečne ideme do Files & Scripts, robiť skripty, a tu nás čakajú úžasne pohodlné možnosti.
Aby sme mohli vykonať skript na jednotke, musíme zvoliť Type: TR069_SCRIPT a Názov a Cieľový názov musí mať príponu .alter.
Pre skripty, na rozdiel od softvéru, môžeme buď nahrať hotový súbor, alebo ho jednoducho napísať/úpdate do poľa Obsah. Poďme sa pokúsiť napísať to priamo tam.
Aby sme hneď videli výsledok — pridáme routeru VLAN na ether1.
/interface vlan
add interface=ether1 name=vlan1 vlan-id=1
Napíšeme, klikneme na Nahrať a hotovo. Náš skript vlan1.alter čaká na svoj čas.
Tak čo, ideme? Nie. Musíme ešte pridať pre náš profil skupinu. Skupiny nie sú súčasťou hierarchie zariadení, ale sú potrebné na vyhľadávanie jednotiek v type jednotky alebo v profile a sú povinné na vykonávanie skriptov cez Advanced Provisioning. Zvyčajne sú skupiny spojené s lokalitami a majú vnorenú štruktúru. Poďme vytvoriť skupinu Rusko.

Predstavte si, práve sme dokázali zúžiť vyhľadávanie z 'Všetky časové servery sveta na hAPaclite' na 'Všetky časové servery Ruska na hAPaclite'. Tam je ešte obrovský objem zaujímavých vecí so skupinami, ale niet času. Pokračujme už do skriptov.
Advanced Provisioning > Práca > Vytvoriť prácu
Keďže sme v režime Advanced, môžeme tu nastaviť množstvo rôznych podmienok začatia úlohy, správania pri chybách, opakovaní a timeoutoch. Odporúčam prečítať si to v príručkách alebo neskôr si to preberieme pri implementácii do produkcie. Zatiaľ nastavíme n1 v Stop rules, aby sa úloha zastavila, akonáhle sa dokončí na našom 1 jednotke.
Vyplňte potrebné a už len spustiť!

Kliknite na ŠTART a počkajte. Teraz sa rýchlo rozbehne počet zabitých nedokončeným skriptom zariadení! Nie, samozrejme. Takéto úlohy sa zadávajú na dlhú dobu, a to je ich odlišnosť od skriptov, Ansible a podobne. Jednotky sa samy prihlasujú na úlohy podľa plánu alebo pri objavení v sieti, ACS sleduje, ktoré jednotky už dostali úlohy a ako ich splnili, a zaznamenáva to do parametrov jednotky. V našej skupine je 1 jednotka, a keby ich bolo 1001 — admin by spustil túto úlohu a odišiel na ryby.
No poďte. Už reštartujte router alebo reštartujte TR-069 klienta. Všetko by malo prebehnúť hladko a Mr.White dostane nový vlan. A naša úloha v Stop rules prejde do stavu PAUSED. To znamená, že ju bude možné znovu spustiť alebo zmeniť. Ak kliknete na UKONČIŤ — úloha sa archivuje.
4.4 Aktualizácia softvéru
Toto je veľmi dôležitý bod, pretože firmvér mikrotika je modulárny, avšak pridanie modulov nemenní celkovú verziu firmvéru zariadenia. Naša ACS je normálna a na to si nezvykol.
Teraz to spravíme v štýle quick&dirty a hneď zahrnieme modul NTP do celkového firmvéru, ale akonáhle sa na zariadení aktualizuje verzia — nebudeme môcť pridať ďalší modul rovnakým spôsobom.
Do produkcie by sa takýto trik nemal používať a inštalovať voliteľné pre typ jednotky moduly len skriptami.
Prvé, čo musíme spraviť, je pripraviť balíčky softvéru potrebných verzií a architektúry a umiestniť ich na nejaký dostupný webový server. Pre test postačí akýkoľvek, na ktorý sa náš Mr.White dostane, a pre produkciu je lepšie vytvoriť automaticky aktualizované zrkadlo potrebného softvéru, ktoré nie je problém vystaviť na webe.
Dôležité! Nezabudnite vždy zahrnúť do aktualizácií balík s tr-069client!
Ako sa ukázalo, dĺžka cesty k balíčkom je veľmi dôležitá! Pri mojich pokusoch použiť niečo typu http://192.168.0.237/routeros/stable/mipsbe/routeros-mipsbe-6.45.6.npk, mikrotik mal v cyklickom pripojení na zdroj, odovzdávajúc v tr-069 log opakované TRANSFERCOMPLETE. A strávil som nejaký čas nervovaním sa, snažiac sa zistiť, čo nie je v poriadku. Preto, zatiaľ to uložme do koreňa, kým nevyjasníme
Takže, máme mať tri npk súbory dostupné cez http. Mne sa podarilo získať
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.npkTeraz to musíme formátovať do xml súboru s FileType="1 Firmware Upgrade Image", ktorý skrmíme mikrotiku. Nech sa volá ros.xml
Robíme podľa inštrukcií z :
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.npkZaujme nás nedostatok Username/Password na prístup k serveru na sťahovanie. Môžeme buď skúsiť to zadať ako v bode A.3.2.8 protokolu tr-069:
http://192.168.0.237/routeros/stable/mipsbe/ntp-6.45.6-mipsbe.npk
user
passAlebo sa opýtať priamo oficiálov mikrotiku, ako aj o maximálnej dĺžke cesty k *.npk
Ideme na nám známe Files & Scripts, a vytvoríme tam súbor typu SOFTWARE s Name:ros.xml, Target Name:ros.xml a Version:6.45.6
Pozor! Verzia tu musí byť uvedená presne v takom formáte, ako je zobrazená na zariadení a prenášaná v parametre System.X_FREEACS-COM.Device.SoftwareVersion.
Vyberieme na sťahovanie náš xm súbor a hotovo.

Teraz máme množstvo spôsobov, ako aktualizovať zariadenie. Cez Wizard v hlavnom menu, cez Advanced Provisioning a úlohy typu SOFTWARE, alebo jednoducho ísť do konfigurácie jednotky a stlačiť Upgrade. Vyberieme najjednoduchšiu cestu, lebo tento článok už aj tak narástol.

Stlačíme tlačidlo, iniciujeme provision a hotovo. Testovacie programovanie skončilo. Teraz vieme robiť s mikrotik viac.
5. Záver
Keď som začínal písať, chcel som najprv opísať pripojenie ip telefónu a na jeho príklade vysvetliť, aké skvelé môže byť, keď tr-069 funguje jednoducho a bez úsilia. Ale potom, ako som pokračoval a hlbšie sa zaoberal materiálmi, si myslím, že kto pripojil mikrotik — už žiadny telefón mu nebude strašný na samostatné štúdium.
V zásade Freeacs, ktorý sme testovali, sa už dá použiť v produkcii, ale na to je potrebné nastaviť bezpečnosť, SSL, nastaviť mikrotiky na automatickú konfiguráciu po resetovaní, odladit správne pridanie typu jednotky, preskúmať fungovanie webových služieb a fusion shell a ešte veľa iného. Skúšajte, vymýšľajte a píšte pokračovanie!
Všetkým, ďakujem za pozornosť! Budem rád za opravy a komentáre!
Zoznam použitých materiálov a užitočných odkazov:
Zdroj: habr.com
