TR-069 w Mikrotik. Testujemy Freeacs jako serwer autokonfiguracji dla RouterOS

W tym artykule spróbuję krok po kroku opisać proces instalacji testowego serwera świetnego projektu Freeacs do w pełni działającego stanu i pokazać praktyczne sposoby pracy z mikrotik: konfiguracje przez parametry, wykonywanie skryptów, aktualizacje, instalacja dodatkowych modułów i tak dalej.

Celem artykułu jest zachęcenie kolegów do rezygnacji z zarządzania urządzeniami sieciowymi przy użyciu strasznych pułapek i obejść, jakimi są własnoręcznie napisane skrypty, Dude, Ansible itd. I z tego powodu, wywołać salwy i masowe radości na placach.

0. Wybór

Dlaczego freeacs, a nie genie-acs, wspomniany w mikrotik-wiki, jako bardziej dynamiczny?
Ponieważ w przypadku genie-acs w odniesieniu do mikrotik są publikacje Hiszpanów. Oto ich pdf i wideo z zeszłorocznego MUM. Automatyczne sharje na slajdach — to świetne, ale chciałbym odejść od koncepcji pisania skryptów, aby uruchomić skrypty, aby uruchomić skrypty...

1. Instalacja freeacs

Zainstalujemy na Centos7, a ponieważ urządzenia przesyłają sporo danych, a ACS aktywnie współpracuje z bazą danych — nie będziemy skąpić zasobów. Dla komfortowej pracy przeznaczymy 2 rdzenie CPU, 4 GB RAM i 16 GB szybkiego magazynu ssd raid10. Będę instalować freeacs w kontenerze lxc Proxmox VE, a wy możecie pracować w dowolnym dla was wygodnym narzędziu.
Nie zapomnij ustawić prawidłowego czasu na maszynie z ACS.

System będzie testowy, dlatego nie będziemy komplikować rzeczy i po prostu skorzystamy z grzecznie udostępnionego skryptu instalacyjnego, tak jak jest.

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

Gdy tylko działanie skryptu się zakończy — będziecie mogli natychmiast wejść w interfejs webowy pod ip maszyny, z danymi logowania admin/freeacs

TR-069 w Mikrotik. Testujemy Freeacs jako serwer autokonfiguracji dla RouterOS
Oto taki miły, minimalistyczny interfejs i jak wspaniale i szybko wszystko się udało

2. Wstępna konfiguracja freeacs

Podstawową jednostką zarządzania dla ACS jest jednostka lub CPE (Customer Premises Equipment). A co najważniejsze, co potrzebujemy do zarządzania jednostkami — to ich Typ Jednostki, czyli model urządzenia, który określa zbiór konfigurowalnych parametrów jednostki i jej oprogramowania. Ale dopóki nie wiemy, jak poprawnie wprowadzić nowy Typ Jednostki, najlepiej będzie zapytać o to samą jednostkę, włączając tryb wykrywania.

W produkcji taki tryb jest kategorycznie niedozwolony, ale musimy jak najszybciej uruchomić silnik i zobaczyć możliwości systemu. Wszystkie podstawowe ustawienia są przechowywane w /opt/freeacs-*. Dlatego otwieramy

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

, znajdujemy

discovery.mode = false

i zmieniamy na

discovery.mode = true

Ponadto chcielibyśmy zwiększyć maksymalne rozmiary plików, z którymi będą pracować nginx i mysql. Dla mysql dodajemy w /etc/my.cnf linię

max_allowed_packet=32M

, a dla nginx, w /etc/nginx/nginx.conf dodajemy

client_max_body_size 32m;

do sekcji http. W przeciwnym razie będziemy mogli pracować z firmware'ami nie większymi niż 1M.

Restartujemy, i jesteśmy gotowi do pracy z urządzeniami.

A w roli urządzenia (CPE) użyjemy małego pracusia hAP AC lite.

Przed testowym połączeniem warto ręcznie skonfigurować CPE do minimalnej funkcjonalnej konfiguracji, aby parametry, które w przyszłości zechcesz skonfigurować, były niepuste. Dla routera minimalnie można włączyć klienta DHCP na ether1, zainstalować pakiet tr-069client i ustawić hasła.

3. Podłączamy Mikrotik

Wszystkie jednostki warto podłączać, używając jako loginu ważnego numeru seryjnego. Wtedy w logach wszystko będzie jasne. Niektórzy radzą używać WAN MAC — nie wierzcie. Niektórzy używają wspólnej pary login/hasło — omijajcie ich szerokim łukiem.

Otwieramy log tr-069 do monitorowania „rozmów”

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

Otwieramy winbox, punkt menu TR-069.
ACS URL: http://10.110.0.109/tr069/prov (zamień na swój IP)
Username: 9249094C26CB (kopiujemy numer seryjny z system>routerboard)
Password: 123456 (nie jest potrzebne dla discovery, ale aby było)
Okresowy interwał informacyjny nie zmieniamy. Tę konfigurację wydamy przez nasz ACS

Poniżej znajdują się ustawienia do zdalnej inicjalizacji połączenia, ale nie udało mi się zmusić mikrotika do działania z tym od ręki. Chociaż z telefonami remote request działa „od ręki”. Trzeba będzie to zbadać.

TR-069 w Mikrotik. Testujemy Freeacs jako serwer autokonfiguracji dla RouterOS

Po naciśnięciu przycisku Zastosuj — w terminalu nastąpi wymiana danych, a w interfejsie sieciowym Freeacs można będzie zobaczyć nasz router z automatycznie utworzonym typem jednostki „hAPaclite”.

TR-069 w Mikrotik. Testujemy Freeacs jako serwer autokonfiguracji dla RouterOS

Router podłączony. Można zajrzeć do automatycznie utworzonego typu jednostki. Otwieramy Easy Provisioning > Unit Type > Unit Type Overview > hAPaclite. Czego tam tylko nie ma! Całych 928 parametrów (podglądałem w shellu). Dużo to czy mało — rozpatrzymy później, a na razie tylko pobieżnie spojrzymy. Oto, co oznacza rodzaj jednostki. To lista wspieranych parametrów z kluczami, ale bez wartości. Wartości są określane na niższych poziomach — w profilach i jednostkach.

4. Konfigurujemy Mikrotik

Nadszedł czas na pobranie instrukcji dotyczącej interfejsu webowego To instrukcja z 2011 roku — jak butelka dobrego, dojrzałego wina. Otwórzmy ją i pozwólmy jej odetchnąć.

A my, w interfejsie webowym klikniemy na ołówek obok naszego jednostki i przejdziemy do trybu konfiguracji jednostki. Wygląda to tak:

TR-069 w Mikrotik. Testujemy Freeacs jako serwer autokonfiguracji dla RouterOS

Krótko omówimy, co ciekawego znajduje się na tej stronie:

Blok konfiguracji jednostki

  • Profil: Jest to profil wewnątrz typu jednostki. Hierarchia jest następująca: TypJednostki > Profil > Jednostka. To znaczy, że możemy utworzyć, na przykład, profile hAPaclite > hotspot i hAPaclite > branch, ale w obrębie modelu urządzenia

Blok Provisioning z przyciskami
Podpowiedzi sugerują, że wszystkie przyciski w bloku Provisioning mogą natychmiast zastosować konfigurację poprzez ConnectionRequestURL. Ale, jak wspomniałem wcześniej, to nie działa, więc po naciśnięciu przycisków trzeba będzie ponownie uruchomić klienta tr-069 na mikrotik, aby ręcznie rozpocząć provision.

  • Freq/Spread: Jak często w tygodniu dostarczać konfigurację ± %, aby zmniejszyć obciążenie serwera i kanałów komunikacyjnych. Domyślnie ustawione na 7/20, t.j. każdego dnia ± 20% i podpowiedź, jak to przekłada się na sekundy. Na razie nie ma sensu zmieniać częstotliwości dostarczania, ponieważ spowoduje to dodatkowy hałas w logach i nie zawsze oczekiwane zastosowanie ustawień.

Blok historii provisioning (ostatnie 48 godzin)

  • Z wyglądu historia, jak historia, ale klikając na nagłówek - trafiasz do wygodnego narzędzia wyszukiwania po bazy danych, z regexp i dodatkami.

Blok parametry

Największy i najważniejszy blok, w którym zadawane i odczytywane są parametry dla tej jednostki. Obecnie widzimy tylko najważniejsze parametry systemowe, bez których praca ACS z jednostką jest niemożliwa. Ale pamiętamy, że w typie jednostki mamy ich - 928. Zobaczmy wszystkie wartości i zdecydujmy, jak to wszystko działa na mikrotiku.

4.1 Odczytujemy parametry

W bloku Provisioning naciskamy przycisk Odczytaj wszystkie. W bloku - czerwona napisana. Po prawej stronie pojawi się kolumna CPE (aktualna) wartość. W parametrach systemowych ProvisioningMode zmienił się na READALL.

TR-069 w Mikrotik. Testujemy Freeacs jako serwer autokonfiguracji dla RouterOS

I... nic się nie wydarzy, oprócz wiadomości w System.X_FREEACS-COM.IM.Message Kick failed at....

Uruchom ponownie klienta TR-069 lub zrestartuj router, i kontynuuj odświeżanie strony przeglądarki, aż po prawej stronie pojawią się parametry w radosnych szarych prostokątach.
Jeśli ktoś chciałby spróbować starego, dojrzałego - ten tryb jest opisany w instrukcji jako 10.2 Tryb inspekcji. Włącza się i działa trochę inaczej, ale zasada jest dość jasno opisana.

TR-069 w Mikrotik. Testujemy Freeacs jako serwer autokonfiguracji dla RouterOS

Tryb READALL wyłączy się samoczynnie po 15 minutach, a my spróbujemy zrozumieć, co jest tu użytecznego, i co można dostosować "na bieżąco", podczas gdy jesteśmy w tym trybie.

Można zmieniać adresy IP, włączać/wyłączać interfejsy, reguły zapory, które zawierają komentarze (inaczej będzie całkowity bałagan), Wi-Fi i takie drobnostki.

A więc, na razie nie można sensownie konfigurować Mikrotik tylko przy użyciu TR-069. Ale można całkiem nieźle monitorować. Dostępna jest statystyka dotycząca interfejsów i ich statusu, dostępnej pamięci itp.

4.2 Dostarczanie parametrów

Spróbujmy teraz dostarczyć parametry do routera przez TR-069, ‚naturalną’ drogą. Pierwszą ofiarą będzie Device.DeviceInfo.X_MIKROTIK_SystemIdentity. Znajdujemy go w parametrach jednostki All. Jak widać — nie jest ustawiony. Oznacza to, że każda jednostka może mieć dowolny identyfikator. Dość tego znoszenia!
Zaznaczamy pole w kolumnie create, wpisujemy nazwę Mr.White i klikamy przycisk Update parameters. Co się stanie dalej, zapewne już się domyślasz. Przy kolejnej sesji połączenia z centralką, router powinien zmienić swój identyfikator.

TR-069 w Mikrotik. Testujemy Freeacs jako serwer autokonfiguracji dla RouterOS

Ale to nam nie wystarczy. Taki parametr jak identyfikator dobrze mieć zawsze pod ręką przy poszukiwaniu odpowiedniej jednostki. Klikamy na nazwę parametru i zaznaczamy pola Display(D) i Searchable(S). Klucz parametru zmienia się na RWSD (Pamiętaj, że nazwy i klucze są ustalane na najwyższym poziomie typu jednostki)

TR-069 w Mikrotik. Testujemy Freeacs jako serwer autokonfiguracji dla RouterOS

Wartość teraz nie tylko jest wyświetlana w ogólnym spisie wyszukiwania, ale również dostępna do wyszukiwania w Support > Search > Advanced form

TR-069 w Mikrotik. Testujemy Freeacs jako serwer autokonfiguracji dla RouterOS

Inicjujemy provision i patrzymy na identyfikator. Witaj, Mr.White! Teraz nie będziesz mógł sam zmienić swojego oblicza, dopóki działa tr-069client.

TR-069 w Mikrotik. Testujemy Freeacs jako serwer autokonfiguracji dla RouterOS

4.3 Wykonywanie skryptów

Skoro ustaliliśmy, że bez nich się nie da, — przejdźmy do ich wykonywania.

Ale zanim przystąpimy do pracy z plikami — musimy poprawić dyrektywę public.url w pliku /opt/freeacs-tr069/config/application-config.conf
W końcu mamy nadal testową konfigurację, zainstalowaną jednym skryptem. Nie zapomnieliśmy?

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

Restartujemy ACS i udajemy się bezpośrednio do Files & Scripts.

TR-069 w Mikrotik. Testujemy Freeacs jako serwer autokonfiguracji dla RouterOS

Ale to, co teraz się otwiera, należy do typu jednostki, tzn. globalnie do wszystkich routerów hAP ac lite, niezależnie od tego, czy jest to router oddziału, hotspot czy CAPsMAN. Taki wysoki poziom nie jest nam jeszcze potrzebny, więc przed pracą ze skryptami i plikami — warto stworzyć profil. Możesz to nazwać ‚stanowiskiem’ urządzenia.

Zróbmy z naszego malucha serwer czasu. Godne stanowisko z osobnym pakietem oprogramowania i niewielką ilością parametrów. Idziemy do Easy Provisioning > Profile > Create Profile i tworzymy w typie jednostki: hAPaclite profil timeserver. W naszym domyślnym profilu nie było parametrów, więc nie ma czego kopiować. Kopiuj parametry z: „nie kopiuj…”

TR-069 w Mikrotik. Testujemy Freeacs jako serwer autokonfiguracji dla RouterOS

Na razie nie ma tu żadnych parametrów, ale będziemy mogli ustawić te, które później chcemy widzieć na naszych serwerach czasu, zbudowanych na hAPaclite. Na przykład, ogólne adresy serwerów NTP.
Przechodzimy do konfiguracji jednostki i przenosimy ją do profilu timeserver

Wreszcie idziemy do Files & Scripts, tworzyć skrypty, a tutaj czekają na nas niesamowicie wygodne dodatki.

Aby wykonać skrypt na jednostce, musimy wybrać Typ: TR069_SCRIPT więcej niż Nazwa i Nazwa docelowa powinny mieć rozszerzenie .alter
Przy tym, w przypadku skryptów, w przeciwieństwie do oprogramowania, możemy zarówno załadować gotowy plik, jak i po prostu napisać/edytować go w polu Treść. Spróbujmy napisać to od razu tam.

Aby od razu było widać efekt — dodamy routerowi vlan na ether1

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

TR-069 w Mikrotik. Testujemy Freeacs jako serwer autokonfiguracji dla RouterOS

Wpisujemy, klikamy Prześlij i gotowe. Nasz skrypt vlan1.alter czeka na swoją kolej.

No co, zaczynamy? Nie. Musimy jeszcze dodać dla naszego profilu grupę. Grupy nie wchodzą w hierarchię sprzętu, ale są potrzebne do wyszukiwania jednostek w UnitType lub Profile i są obowiązkowe do wykonywania skryptów za pomocą Advanced Provisioning. Zazwyczaj grupy są powiązane z lokalizacjami i mają zagnieżdżoną strukturę. Stwórzmy grupę Rosja.

TR-069 w Mikrotik. Testujemy Freeacs jako serwer autokonfiguracji dla RouterOS

Wyobrażacie sobie, właśnie udało nam się zawęzić wyszukiwanie z „Wszystkie serwery czasu na świecie na hAPaclite” do „Wszystkie serwery czasu w Rosji na hAPaclite”. Jest jeszcze ogromna ilość interesujących rzeczy związanych z grupami, ale nie mamy na to czasu. Zaczynajmy w skryptach.

Advanced Provisioning > Job > Utwórz zadanie

TR-069 w Mikrotik. Testujemy Freeacs jako serwer autokonfiguracji dla RouterOS

Ponieważ jesteśmy w trybie Advanced, można tutaj wskazać masę różnych warunków rozpoczęcia zadania, zachowań w przypadku błędów, powtórzeń i timeoutów. Zalecam przeczytać to wszystko w podręcznikach lub omówimy to później podczas wdrażania. Na razie po prostu ustawimy n1 w Stop rules, aby zadanie zatrzymało się, gdy tylko zostanie wykonane na naszej 1 jednostce.

Wypełniamy to, co potrzebne, i pozostaje tylko uruchomić!

TR-069 w Mikrotik. Testujemy Freeacs jako serwer autokonfiguracji dla RouterOS

Klikamy START i czekamy. Zaraz zacznie szybko biec licznik zniszczonych urządzeń przez niedopracowany skrypt! Nie, oczywiście. Takie zadania trwają długo, a to różni je od skryptów, Ansible itd. Jednostki same zwracają się o zadania według harmonogramu lub w miarę pojawiania się w sieci, ACS prowadzi ewidencję, które jednostki już otrzymały zadania, jak się zakończyły i zapisuje to w parametrach jednostki. W naszej grupie jest 1 jednostka, a gdyby było ich 1001 — administrator uruchomiłby to zadanie i pojechał na ryby.

No dalej. Uruchom ponownie router lub zrestartuj klienta TR-069. Wszystko powinno przebiegać gładko i Mr.White otrzyma nowy vlan. A nasze zadanie w Stop rule przejdzie w status PAUSED. To znaczy, będzie można je jeszcze uruchomić ponownie lub zmienić. Jeśli naciśniesz FINISH — zadanie zostanie zapisane w archiwum.

4.4 Aktualizacja oprogramowania

To jest bardzo ważny punkt, ponieważ oprogramowanie routera MikroTik jest modułowe, ale dodanie modułów nie zmienia ogólnej wersji oprogramowania urządzenia. Nasz ACS działa prawidłowo, i nie jesteśmy do tego przyzwyczajeni.
Teraz zrobimy to w stylu quick&dirty, i wstawimy moduł NTP bezpośrednio do ogólnego oprogramowania, ale jak tylko wersja urządzenia się zaktualizuje — nie będziemy mogli dodać kolejnego modułu w ten sam sposób.
W produkcji lepiej nie stosować takiego triku, a instalować opcjonalne moduły dla typu jednostki tylko za pomocą skryptów.

Tak więc, pierwszą rzeczą, którą musimy zrobić, jest przygotowanie pakietów oprogramowania w odpowiednich wersjach i architekturze, i umieszczenie ich na dostępnej stronie serwera. Do testów wystarczy dowolny serwer, do którego może sięgnąć nasz Mr.White, ale dla produkcji lepiej stworzyć automatycznie aktualizowane lustrzane odbicie potrzebnego oprogramowania, które nie będzie problemem wystawić w sieci.
Ważne! Nie zapominaj, aby zawsze dodawać do aktualizacji pakiet z tr-069client!

Okazało się, że długość ścieżki do pakietów jest bardzo ważna! Przy moich próbach użycia czegoś takiego, http://192.168.0.237/routeros/stable/mipsbe/routeros-mipsbe-6.45.6.npk, MikroTik wpadał w cykliczne połączenie z zasobem, wysyłając w logu tr-069 powtarzające się TRANSFERCOMPLETE. Spędziłem trochę czasu, próbując ustalić, co jest nie tak. Dlatego na razie umieśćmy to w katalogu głównym, do wyjaśnienia.

Tak więc, powinniśmy mieć trzy pliki npk dostępne przez http. U mnie wyszło tak:

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

Teraz trzeba to sformatować w pliku xml z FileType="1 Firmware Upgrade Image", który podamy MikroTikowi. Nazwijmy go ros.xml.

Robimy według instrukcji 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

W oczy rzuca się braku Nazwa użytkownika/Hasło do dostępu do serwera pobierania. Można spróbować wpisać to, jak w punkcie A.3.2.8 protokołu tr-069:

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

Lub zapytaj bezpośrednio u przedstawicieli Mikrotika, jak i o maksymalnej długości ścieżki do *.npk.

Przechodzimy do znanych nam Files & Scripts, i tworzymy tam plik typu SOFTWARE z Nazwa:ros.xml, Nazwa docelowa:ros.xml i Wersja:6.45.6
Uwaga! Wersja tutaj musi być podana dokładnie w takim formacie, w jakim jest wyświetlana na urządzeniu i przekazywana w parametrze System.X_FREEACS-COM.Device.SoftwareVersion.

Wybieramy nasz plik xm do pobrania i gotowe.

TR-069 w Mikrotik. Testujemy Freeacs jako serwer autokonfiguracji dla RouterOS

Teraz mamy mnóstwo sposobów, aby zaktualizować urządzenie. Przez Kreatora w głównym menu, przez Zaawansowane Provisioning i zadania typu SOFTWARE, lub po prostu wchodząc w konfigurację jednostki i naciskając Upgrade. Wybierzmy najprostszy sposób, bo artykuł już się rozrósł.

TR-069 w Mikrotik. Testujemy Freeacs jako serwer autokonfiguracji dla RouterOS

Naciskamy przycisk, inicjujemy provision i gotowe. Program testowy zakończony. Teraz potrafimy robić więcej z mikrotikiem.

5. Podsumowanie

Kiedy zaczynałem pisać, chciałem najpierw opisać podłączenie telefonu IP i na jego przykładzie wyjaśnić, jak wspaniale może być, kiedy tr-069 działa płynnie i bez wysiłku. Ale potem, w miarę postępów i przeszukiwania materiałów, pomyślałem, że ten, kto podłączył mikrotika — żaden telefon nie będzie mu straszny do samodzielnego odkrycia.

W zasadzie Freeacs, który testowaliśmy — już można zastosować w produkcji, ale trzeba skonfigurować bezpieczeństwo, SSL, trzeba skonfigurować mikrotiki do autokonfiguracji po resetowaniu, trzeba dopracować poprawne dodawanie typu jednostki, rozgryźć działanie webservices i fusion shell, i jeszcze wiele innych rzeczy. Próbujcie, wymyślajcie i piszcie kontynuację!

Wszystkim dziękuję za uwagę! Będę wdzięczny za poprawki i komentarze!

Lista wykorzystanych materiałów i przydatnych linków:

Wątek forum, na który natrafiłem na początku poszukiwań w tym temacie
TR-069 CPE WAN Management Protocol Amendment-6
Wiki Freeacs
Parametry tr-069 w mikrotik, i ich odpowiedniki w poleceniach terminala

Źródło: habr.com

Kup solidny hosting stron z ochroną przed DDoS, serwery VPS VDS 🔥 Kup solidny hosting stron z ochroną przed DDoS, serwery VPS VDS | ProHoster