TR-069 v Mikrotiku. Testujeme FreeACS jako server autokonfigurace pro RouterOS

V tomto článku se pokusím krok za krokem popsat proces nastavení testovacího serveru skvělého projektu Freeacs do plně funkčního stavu a ukázat praktické způsoby práce s mikrotikem: konfiguraci prostřednictvím parametrů, vykonávání skriptů, aktualizaci, instalaci doplňkových modulů atd.

Cílem článku je povzbudit kolegy k opuštění správy síťových zařízení pomocí strašlivých klacků a berlí, jako jsou vlastní skripty, Dude, Ansible a podobně. A k tomu vyvolat salvování a hromadné veselí na náměstích.

0. Výběr

Proč Freeacs a ne genie-acs, který byl zmíněn v mikrotik-wiki, jakožto živější alternativa?
Protože k genie-acs s mikrotikem existují publikace od Španělů. Tady jsou jejich pdf a video z loňského MUM. Automatické sdílení na slajdech je skvělé, ale rád bych se vyhnul koncepci psaní skriptů pro spouštění skriptů pro spouštění skriptů…

1. Instalace Freeacs

Nainstalujeme to na Centos7, a protože zařízení přenášejí dostatečně velké množství dat, a ACS aktivně pracuje s databází – nebudeme šetřit prostředky. Pro pohodlnou práci vyčleníme 2 jádra CPU, 4GB RAM a 16GB rychlého úložiště ssd raid10. Budu instalovat Freeacs v lxc kontejneru Proxmox VE, ale vy můžete pracovat v jakémkoli nástroji, který vám vyhovuje.
Nezapomeňte správně nastavit čas na stroji s ACS.

Systém bude testovací, proto nebudeme vymýšlet složitosti, a jednoduše využijeme laskavě poskytnutý instalační skript tak, jak je.

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

Jakmile práce skriptu skončí – budete moci okamžitě přistoupit k webovému rozhraní přes ip stroje, se přihlašovacími údaji admin/freeacs

TR-069 v Mikrotiku. Testujeme FreeACS jako server autokonfigurace pro RouterOS
Takto příjemné minimalistické rozhraní, a jak skvěle a rychle to všechno dopadlo

2. První nastavení Freeacs

Základní jednotka správy pro ACS je jednotka nebo CPE (Customer Premises Equipment). A to nejdůležitější, co potřebujeme pro správu jednotek, je jejich Unit Type, tedy model zařízení, který určuje soubor nastavitelného parametru jednotky a jejího softwaru. Ale dokud nevíme, jak správně zavést novou Unit Type, bude nejlepší se ptát samotné jednotky, když zapneme režim Discovery.

V produkčním prostředí je takový režim kategoricky nepřípustný, ale my potřebujeme spíše dostat motor do chodu a podívat se na možnosti systému. Všechny hlavní nastavení jsou uložena v /opt/freeacs-*. Proto otevřeme

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

, nacházíme

discovery.mode = false

a měníme na

discovery.mode = true

Kromě toho bychom chtěli zvýšit maximální velikosti souborů, se kterými budou pracovat nginx a mysql. Pro mysql přidáváme do /etc/my.cnf řádek

max_allowed_packet=32M

, a pro nginx do /etc/nginx/nginx.conf přidáváme

client_max_body_size 32m;

do sekce http. Jinak budeme moci pracovat s firmwarem maximálně 1M.

Restartujeme a jsme připraveni pracovat s zařízeními.

A jako zařízení (CPE) budeme mít malého pracanta hAP AC lite.

Před testovacím připojením je žádoucí ručně nakonfigurovat CPE do minimální provozní konfigurace, aby parametry, které chcete později konfigurovat, nebyly prázdné. Pro router je minimálně nutné aktivovat DHCP klienta na ether1, nainstalovat balíček tr-069client a nastavit hesla.

3. Připojujeme Mikrotik

Všechny jednotky je doporučeno připojovat s platným sériovým číslem jako přihlašovacím jménem. Pak vám budou v logu vše jasné. Někdo radí používat WAN MAC — nevěřte tomu. Někdo používá společný pár login/heslo — vyhněte se jim.

Otevíráme log tr-069 pro sledování "konverzací"

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

Otevíráme winbox, položku TR-069.
ACS URL: http://10.110.0.109/tr069/prov (vyměňte za vaši IP)
Uživatelské jméno: 9249094C26CB (kopírujeme sériové číslo ze system>routerboard)
Heslo: 123456 (pro discovery není potřeba, ale ať je)
Periodicky inform interval neměníme. Tento nastavení poskytneme přes náš ACS

Níže jsou uvedeny nastavení pro vzdálenou inicializaci spojení, ale okamžitě donutit mikrotik s tímto pracovat se mi nepodařilo. Ačkoli u telefonů remote request funguje "z krabice". Je třeba se tím zabývat.

TR-069 v Mikrotiku. Testujeme FreeACS jako server autokonfigurace pro RouterOS

Po stisknutí tlačítka Apply začne v terminálu výměna dat a v webovém rozhraní Freeacs bude možné vidět náš router s automaticky vytvořeným typem jednotky „hAPaclite“.

TR-069 v Mikrotiku. Testujeme FreeACS jako server autokonfigurace pro RouterOS

Router je připojen. Můžete se podívat na automaticky vytvořený typ jednotky. Otevíráme Easy Provisioning > Unit Type > Unit Type Overview > hAPaclite. Co tam všechno není! Celých 928 parametrů (toto jsem zahlédl v shellu). Je to hodně nebo málo — na to se podíváme později, ale zatím jen rychle nahlédneme. To znamená typ jednotky. Je to seznam podporovaných parametrů s klíči, ale bez hodnot. Hodnoty jsou určeny na nižších úrovních — v profilech a jednotkách.

4. Konfigurujeme Mikrotik

Přišel čas stáhnout příručku k webovému rozhraní Tato příručka je z roku 2011 — jako láhev dobrého, zralého vína. Otevřeme ji a necháme ji dýchat.

A my v webovém rozhraní klikneme na tužku vedle našeho zařízení a přejdeme do režimu konfigurace zařízení. Vypadá to takto:

TR-069 v Mikrotiku. Testujeme FreeACS jako server autokonfigurace pro RouterOS

Stručně si přehledneme, co je zajímavého na této stránce:

Blok konfigurace zařízení

  • Profil: Toto je profil uvnitř typu zařízení. Hierarchie je následující: UnitType > Profil > Zařízení. To znamená, že můžeme například vytvořit profily hAPaclite > hotspot a hAPaclite > branch, ale v rámci modelu zařízení

Blok provisioning s tlačítky
Tipy naznačují, že všechna tlačítka v bloku provisioning mohou okamžitě aplikovat konfiguraci přes ConnectionRequestURL. Jak jsem však již zmínil, to nefunguje, takže po stisknutí tlačítek bude nutné restartovat TR-069 klienta na mikrotiku pro ruční spuštění provisioning.

  • Frekvence/Spread: Kolikrát týdně doručit konfiguraci ± %, aby se snížila zátěž na server a komunikační kanály. Defaultně je nastaveno 7/20, tedy každý den ± 20% a tip, jak je to v sekundách. Zatím nemá smysl měnit frekvenci doručení, protože by to dělalo zbytečný šum v logách a nenutně očekávané aplikace nastavení.

Blok historie provisioning (posledních 48 hodin)

  • Na pohled historie, jako historie, ale kliknutím na hlavičku — dostanete se do pohodlného vyhledávacího nástroje v databázi, s regexp a bonusy.

Blok parametry

Největší a nejdůležitější blok, kde se vlastně nastavují a čtou parametry pro toto zařízení. Nyní vidíme pouze ty nejdůležitější systémové parametry, bez kterých není možné, aby ACS pracoval se zařízením. Ale my víme, že v typu zařízení jich je — 928. Podívejme se na všechny hodnoty a zjistíme, s čím to všechno souvisí u mikrotiku.

4.1 Čteme parametry

V bloku provisioningu stiskneme tlačítko Přečíst vše. V bloku — červený nápis. Vpravo se objeví sloupec CPE (aktuální) hodnota. V systémových parametrech se ProvisioningMode změnil na READALL.

TR-069 v Mikrotiku. Testujeme FreeACS jako server autokonfigurace pro RouterOS

A… nic se nestane, kromě zprávy v System.X_FREEACS-COM.IM.Message Kick failed at....

Restartujte klienta TR-069 nebo restartujte router a pokračujte v obnovování stránky prohlížeče, dokud nezískáte vpravo parametry v radostných šedých obdélnících.
Pokud se někdo chce napít starého vyzrálého — tento režim je v manuálu popsán jako 10.2 Režim inspekce. Zapíná se a funguje trochu jinak, ale podstata je docela dobře popsána.

TR-069 v Mikrotiku. Testujeme FreeACS jako server autokonfigurace pro RouterOS

Režim READALL se sám vypne za 15 minut, a my se pokusíme zjistit, co zde je užitečného a co lze upravit „za pochodu“, zatímco jsme v tomto režimu.

Můžete měnit IP adresy, zapínat/vypínat rozhraní, pravidla firewallu, která musí mít komentáře (jinak by byl úplný chaos), Wi-Fi a tak dále.

To znamená, že rozumně konfigurovat Mikrotik prostřednictvím TR-069 zatím nelze. Ale lze jej docela dobře monitorovat. Dostupná je statistika o rozhraních a jejich stavu, volné paměti atd.

4.2 Dodání parametrů

Teď se pokusíme dodat parametry do routeru prostřednictvím TR-069 „přirozeným“ způsobem. První obětí bude Device.DeviceInfo.X_MIKROTIK_SystemIdentity. Najdeme ho v parametrech jednotky All. Jak vidíte — není nastaven. To znamená, že jakákoli jednotka může mít jakoukoli identitu. Už toho máme dost!
Zaškrtneme políčko ve sloupci create, nastavíme jméno Mr.White a klikneme na tlačítko Update parameters. Co se bude dít dál, už jste uhodli. Při dalším spojení s centrální jednotkou by měl router změnit svou identitu.

TR-069 v Mikrotiku. Testujeme FreeACS jako server autokonfigurace pro RouterOS

Ale to nám nestačí. Parametr jako Identita bychom měli mít vždy po ruce při hledání potřebné jednotky. Klikneme na název parametru a zaškrtneme políčka Display (D) a Searchable (S). Klíč parametru se změní na RWSD (Pamatujte, že názvy a klíče se nastavují na nejvyšší úrovni typu jednotky).

TR-069 v Mikrotiku. Testujeme FreeACS jako server autokonfigurace pro RouterOS

Hodnota se nyní nejen zobrazuje v celkovém seznamu hledání, ale je také dostupná pro hledání v Support > Search > Advanced form

TR-069 v Mikrotiku. Testujeme FreeACS jako server autokonfigurace pro RouterOS

Spouštíme provision a díváme se na identitu. Dobrý den, Mr.White! Nyní nebudete moci změnit svůj vzhled, dokud běží tr-069client.

TR-069 v Mikrotiku. Testujeme FreeACS jako server autokonfigurace pro RouterOS

4.3 Provádění skriptů

Když už jsme zjistili, že bez nich se to neobejde, pojďme je provádět.

Ale předtím, než se pustíme do práce s soubory — musíme upravit direktivu public.url v souboru /opt/freeacs-tr069/config/application-config.conf
Přece máme stále testovací konfiguraci nastavenou jedním skriptem. Nezapomněli jste?

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

Restartujeme ACS a jdeme přímo do Files & Scripts.

TR-069 v Mikrotiku. Testujeme FreeACS jako server autokonfigurace pro RouterOS

Ale to, co se nyní otevře, patří typu jednotky, tedy globálně všem routerům hAP ac lite, ať už je to router pobočky, hotspot nebo CAPsMAN. Tak vysokou úroveň nepotřebujeme, proto, než začneme pracovat se skripty a soubory — měli bychom vytvořit profil. Můžeme si ho pojmenovat jako „pozici“ zařízení.

Uděláme z našeho miláčka server času. Důstojná pozice s vlastním balíčkem softwaru a malým počtem parametrů. Jdeme do Easy Provisioning > Profile > Create Profile a vytvoříme v typu jednotky: hAPaclite profil timeserver. V defaultním profilu jsme neměli žádné parametry, takže není co kopírovat. Kopírovat parametry z: «nekopírovat…»

TR-069 v Mikrotiku. Testujeme FreeACS jako server autokonfigurace pro RouterOS

Zatím zde nejsou žádné parametry, ale můžeme zadat ty, které budeme chtít vidět na našich serverech času, vyrobených z hAPaclite. Například společné adresy NTP serverů.
Přejdeme do konfigurace jednotky a přesuneme ji do profilu timeserver.

Konečně jdeme do Files & Scripts, psát skripty, a tady nás čekají úžasně pohodlné funkcionality.

Abychom mohli skript provést na jednotce, musíme vybrat Type:TR069_SCRIPT Více než 40 000 klientů v 120+ zemích Název a Cílové jméno musí mít příponu .alter
Přitom, pro skripty, na rozdíl od softwaru, můžeme buď nahrát hotový soubor, nebo ho jednoduše napsat/upravit v poli Obsah. Zkusme napsat přímo tam.

Abychom hned viděli výsledek — přidáme routeru vlan na ether1.

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

TR-069 v Mikrotiku. Testujeme FreeACS jako server autokonfigurace pro RouterOS

Zadáme, klikneme na Nahrát a hotovo. Náš skript vlan1.alter čeká na svou šanci.

No co, jdeme na to? Ne. Ještě musíme přidat skupinu pro náš profil. Skupiny nepatří do hierarchie zařízení, ale jsou potřeba pro vyhledávání jednotek v UnitType nebo Profilu a jsou povinné pro provádění skriptů prostřednictvím Advanced Provisioning. Obvykle jsou skupiny spojeny s lokalitami a mají vnořenou strukturu. Vytvořme skupinu Rusko.

TR-069 v Mikrotiku. Testujeme FreeACS jako server autokonfigurace pro RouterOS

Představte si, že jsme právě mohli zúžit vyhledávání z «Všechny servery času světa na hAPaclite» na «Všechny servery času Ruska na hAPaclite». Ještě zde existuje obrovské množství zajímavého s skupinami, ale nemáme čas. Pojďme už k skriptům.

Advanced Provisioning > Job > Vytvořit úkol

TR-069 v Mikrotiku. Testujeme FreeACS jako server autokonfigurace pro RouterOS

Jelikož jsme alespoň v pokročilém režimu, můžeme zde stanovit spoustu různých podmínek pro začátek úkolu, chování při chybách, opakování a časové limity. Doporučuji to všechno přečíst v manuálech nebo to později prodiskutujeme při nasazení do produkce. Prozatím pouze nastavíme n1 v Stop rules, aby se úkol zastavil, jakmile se vykoná na naší 1 jednotce.

Vyplňujeme potřebné a zbývá už jen spustit!

TR-069 v Mikrotiku. Testujeme FreeACS jako server autokonfigurace pro RouterOS

Klikneme na START a čekáme. Nyní bude počet zařízení zabitých nedokončeným skriptem rychle běžet! Ne, samozřejmě. Takové úkoly trvají dlouho, a v tom je jejich rozdíl od skriptů, Ansible a podobně. Jednotky samy žádají o úkoly podle rozvrhu nebo podle toho, jak se objevují v síti, ACS sleduje, které jednotky již dostaly úkoly a jak byly dokončeny, a zapisuje to do parametrů jednotky. V naší skupině je 1 jednotka, a kdyby jich bylo 1001 — admin by spustil tento úkol a odjel na ryby.

Tak, restartujte už router nebo znovu spusťte klienta TR-069. Všechno by mělo proběhnout hladce a Mr.White získá nový vlan. Naše úloha podle Stop rule přejde do stavu PAUSED. To znamená, že ji bude možné znovu spustit nebo změnit. Pokud kliknete na FINISH, úloha se archivuje.

4.4 Aktualizace softwaru

To je velmi důležitý bod, protože firmware Mikrotiku je modulární, ale přidání modulů nemění celkovou verzi firmware zařízení. Náš ACS je normální a na to jsme zvyklí.
Teď to uděláme ve stylu quick&dirty a nafofrneme modul NTP do celkového firmware okamžitě, ale jakmile se na zařízení aktualizuje verze, nebudeme moci další modul přidat stejným způsobem.
Na produkci je lepší tento trik nepoužívat a instalovat volitelné moduly pro typ jednotky pouze skripty.

Takže první věc, kterou potřebujeme udělat, je připravit balíčky softwaru v potřebných verzích a architekturách a umístit je na nějaký dostupný webový server. Na testování může být jakýkoliv, ke kterému se dostane náš Mr.White, a pro produkci je lepší sestavit automaticky aktualizované zrcadlo potřebného softwaru, které nebude problém vystavit na web.
Důležité! Nezapomeňte vždy zahrnout do aktualizací balíček s tr-069client!

Jak se ukázalo, délka cesty k balíčkům je velmi důležitá! Při mých pokusech použít něco jako http://192.168.0.237/routeros/stable/mipsbe/routeros-mipsbe-6.45.6.npk, Mikrotik padal do cyklického spojení se zdrojem, vyhazoval v tr-069 logu opakující se TRANSFERCOMPLETE. A strávil jsem nějaký čas, než jsem zjistil, co je špatně. Takže prozatím to dáme do kořenového adresáře, dokud to nevyřešíme.

Takže bychom měli mít tři npk soubory dostupné přes http. U mě to vypadalo takto:

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

Teď to musíme zformátovat do xml souboru s FileType="1 Firmware Upgrade Image", který dáme Mikrotiku. Název může být ros.xml.

Děláme podle pokynů z 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

Nedostatek uhodí do očí Uživatelské jméno/Heslo pro přístup na server pro stahování. Můžete zkusit to napsat, jak je uvedeno v bodě A.3.2.8 protokolu tr-069:

http://192.168.0.237/routeros/stable/mipsbe/ntp-6.45.6-mipsbe.npk
user
pass

Nebo se přímo zeptat oficiálních zástupců Mikrotiku, jaká je maximální délka cesty k *.npk.

Jdeme do známých nám Files & Scripts, a vytvoříme tam soubor typu SOFTWARE s Name:ros.xml, Cílové jméno:ros.xml a Version:6.45.6
Pozor! Verze zde musí být uvedena přesně v takovém formátu, v jakém se zobrazuje na zařízení a předává se v parametru System.X_FREEACS-COM.Device.SoftwareVersion.

Vybereme náš xm-soubor pro stažení a hotovo.

TR-069 v Mikrotiku. Testujeme FreeACS jako server autokonfigurace pro RouterOS

Nyní máme spoustu způsobů, jak aktualizovat zařízení. Přes Wizard v hlavním menu, přes Advanced Provisioning a úkoly typu SOFTWARE, nebo se jednoduše dostat do konfigurace jednotky a stisknout Upgrade. Vybereme tu nejjednodušší cestu, protože i tak článek narostl.

TR-069 v Mikrotiku. Testujeme FreeACS jako server autokonfigurace pro RouterOS

Stiskneme tlačítko, iniciujeme provision a je hotovo. Testovací program byl dokončen. Nyní umíme s Mikrotikem víc.

5. Závěr

Když jsem začal psát, chtěl jsem nejprve popsat připojení IP telefonu a na jeho příkladu vysvětlit, jak skvělé může být, když tr-069 funguje snadno a bez námahy. Ale pak, při postupu a zkoumání materiálů, jsem si uvědomil, že tomu, kdo připojil Mikrotik, už žádný telefon nebude strašný pro samostatné studium.

V zásadě lze Freeacs, který jsme testovali, už použít v produkci, ale je třeba nastavit bezpečnost, SSL, nastavit Mikrotiky pro automatickou konfiguraci po resetu, doladit správné přidání typu jednotky, rozebrat práci webových služeb a fusion shellet, a ještě mnohem víc. Zkoušejte, vymýšlejte a pište pokračování!

Všem, děkuji za pozornost! Budu rád za opravy a komentáře!

Seznam použitých materiálů a užitečných odkazů:

Vlákno fóra, na které jsem narazil na začátku hledání na toto téma.
TR-069 CPE WAN Management Protocol Amendment-6
Wiki Freeacs
Parametry tr-069 v Mikrotiku a jejich shoda s příkazy terminálu.

Zdroj: habr.com

Koupit spolehlivý hosting pro webové stránky s ochranou proti DDoS, VPS VDS servery 🔥 Koupit spolehlivý hosting pro webové stránky s ochranou proti DDoS, VPS VDS servery | ProHoster