TR-069 w Mikrotiku. Testowanie Freeacs jako serwera autokonfiguracji dla RouterOS

W tym artykule postaram się opisać krok po kroku proces instalacji serwera testowego świetnego projektu freeacs do stanu w pełni funkcjonalnego oraz pokazać praktyczne techniki pracy z mikrotik: konfiguracja poprzez parametry, wykonanie skryptu, aktualizacja, instalacja dodatkowych modułów itp.

Celem artykułu jest nakłonienie współpracowników do odmowy zarządzania urządzeniami sieciowymi za pomocą okropnych grabi i kul, w formie samodzielnie napisanych skryptów, Dude, Ansible itp. A przy tej okazji wywołanie fajerwerków i masowej radości kwadraty.

0. Wybór

Dlaczego freeacs, a nie genie-acs wspomniane w mikrotik-wikijak bardziej żywy?
Ponieważ istnieją hiszpańskie publikacje na temat genie-acs z mikrotik. Tutaj są pdf и wideo z zeszłorocznej MAMY. Automatyczne kreskówki na slajdach są fajne, ale chciałbym odejść od koncepcji pisania scenariuszy, uruchamiania skryptów, uruchamiania skryptów…

1. Instalacja Freeaca

Będziemy instalować w Centos7, a ponieważ urządzenia przesyłają dużo danych, a ACS aktywnie współpracuje z bazą danych, nie będziemy chciwi zasobów. Do komfortowej pracy wybierzemy 2 rdzenie procesora, 4 GB RAM i 16 GB szybkiej pamięci masowej SSD Raid10. Ja zainstaluję freeacs w kontenerze Proxmox VE lxc, a Ty będziesz mógł pracować w dowolnym wygodnym dla Ciebie narzędziu.
Nie zapomnij ustawić prawidłowego czasu na urządzeniu z ACS.

System będzie testowy, więc nie bądźmy mądrzy i po prostu skorzystajmy z dostarczonego 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 skrypt się zakończy, możesz natychmiast uzyskać dostęp do interfejsu sieciowego, podając adres IP komputera, z danymi uwierzytelniającymi admin/freeacs

TR-069 w Mikrotiku. Testowanie Freeacs jako serwera autokonfiguracji dla RouterOS
Oto taki ładny, minimalistyczny interfejs i jak fajnie i szybko wszystko wyszło

2. Początkowa konfiguracja Freeacs

Podstawową jednostką sterującą dla ACS jest jednostka CPE (Customer Premises Equipment). A co najważniejsze, do zarządzania jednostkami potrzebujemy ich typu jednostki, tj. model sprzętu, który definiuje zestaw konfigurowalnych parametrów urządzenia i jego oprogramowania. Ale dopóki nie dowiemy się, jak poprawnie uzyskać nowy typ jednostki, najlepiej byłoby zapytać o to samą jednostkę, włączając Tryb Odkrycia.

W produkcji ten tryb jest absolutnie niemożliwy do wykorzystania, 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 

, znaleźliśmy

discovery.mode = false

i zmień na

discovery.mode = true

Ponadto chcielibyśmy zwiększyć maksymalne rozmiary plików, z którymi będą współpracować nginx i mysql. W przypadku mysql dodaj linię do /etc/my.cnf

max_allowed_packet=32M

, a dla nginx dodaj do /etc/nginx/nginx.conf

client_max_body_size 32m;

do sekcji http. W przeciwnym razie będziemy mogli pracować z oprogramowaniem nie większym niż 1M.

Uruchamiamy ponownie komputer i jesteśmy gotowi do pracy z urządzeniami.

A w roli urządzenia (CPE) będziemy mieli małego pracoholika hAP AC Lite.

Przed połączeniem testowym wskazane jest ręczne skonfigurowanie CPE do minimalnej konfiguracji roboczej, aby parametry, które chcesz skonfigurować w przyszłości, nie były puste. W przypadku routera możesz minimalnie włączyć klienta DHCP na Ether1, zainstalować pakiet tr-069client i ustawić hasła.

3. Podłącz Mikrotika

Pożądane jest podłączenie wszystkich jednostek przy użyciu ważnego numeru seryjnego jako loginu. Wtedy wszystko będzie dla Ciebie jasne w logach. Ktoś radzi używać WAN MAC - nie wierz w to. Ktoś używa wspólnej dla wszystkich pary login/hasło - pomiń je.

Otwarcie dziennika tr-069 w celu monitorowania „negocjacji”

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

Otwórz winbox, pozycja menu TR-069.
Adres URL AC: http://10.110.0.109/tr069/prov (zastąp swoim adresem IP)
Nazwa użytkownika: 9249094C26CB (skopiuj numer seryjny z systemu>routerboard)
Hasło: 123456 (nie potrzebne do odkrycia, ale żeby być)
Nie zmieniamy okresowego interwału informowania. Wydamy to ustawienie za pośrednictwem naszego ACS

Poniżej znajdują się ustawienia zdalnej inicjalizacji połączenia, ale nie udało mi się zmusić mikrotika do pracy z nim za jednym zamachem. Chociaż zdalne żądanie działa od razu z telefonami. Trzeba będzie to rozgryźć.

TR-069 w Mikrotiku. Testowanie Freeacs jako serwera autokonfiguracji dla RouterOS

Po naciśnięciu przycisku Zastosuj nastąpi wymiana danych w terminalu, a w interfejsie internetowym Freeacs zobaczysz nasz router z automatycznie utworzonym typem jednostki „hAPaclite”.

TR-069 w Mikrotiku. Testowanie Freeacs jako serwera autokonfiguracji dla RouterOS

Router jest podłączony. Możesz sprawdzić automatycznie wygenerowany typ jednostki. Otwieramy Easy Provisioning > Unit Type > Unit Type Overview > hAPaclite. Czego tam nie ma! Aż 928 parametrów (szpiegowałem na powłoce). Dużo czy mało – przekonamy się o tym później, ale na razie tylko rzucimy okiem. To właśnie oznacza typ jednostki. To jest lista obsługiwanych opcji z kluczami, ale bez wartości. Wartości ustawia się na poniższych poziomach – Profile i Jednostki.

4. Skonfiguruj Mikrotika

Czas pobrać przewodnik po interfejsie internetowym Ten przewodnik na rok 2011 jest jak butelka dobrego, dojrzałego wina. Otwórzmy to i pozwólmy oddychać.

A my w interfejsie internetowym kliknij ołówek obok naszej jednostki i przejdź do trybu konfiguracji jednostki. To wygląda tak:

TR-069 w Mikrotiku. Testowanie Freeacs jako serwera autokonfiguracji dla RouterOS

Przeanalizujmy krótko, co jest interesujące na tej stronie:

Blok konfiguracji jednostki

  • Profil: Jest to profil w ramach typu jednostki. Hierarchia wygląda następująco: UnitType > Profile > Unit. Oznacza to, że możemy tworzyć np. profile hAPaclite > hotspot и hAPaclite > branch, ale w ramach modelu urządzenia

Blokowanie udostępniania z guzikami
Wskazówki wskazują, że wszystkie przyciski w bloku Provisioning mogą natychmiast zastosować konfigurację poprzez ConnectionRequestURL. Ale, jak powiedziałem powyżej, to nie działa, więc po naciśnięciu przycisków będziesz musiał ponownie uruchomić klienta tr-069 na mikrotik, aby ręcznie rozpocząć udostępnianie.

  • Freq/Spread: Ile razy w tygodniu należy dostarczyć konfigurację ±%, aby zmniejszyć obciążenie serwera i kanałów komunikacyjnych. Domyślnie kosztuje 7/20, tj. codziennie ± 20% i podpowiedź jak to jest w kilka sekund. Na razie nie ma sensu zmieniać częstotliwości dostaw, bo. w logach będzie dodatkowy szum i nie zawsze oczekiwane zastosowanie ustawień

Blok historii udostępniania (ostatnie 48 godzin)

  • Z wyglądu historia przypomina historię, ale klikając tytuł zostajesz przeniesiony do wygodnego narzędzia do wyszukiwania w bazie danych, z wyrażeniami regularnymi i dodatkami

Blok parametrów

Największy i najważniejszy blok, w którym tak naprawdę ustawia się i odczytuje parametry tego urządzenia. Teraz widzimy tylko najważniejsze parametry systemu, bez których ACS nie może współpracować z jednostką. Ale pamiętamy, że mamy je w typie jednostki - 928. Zobaczmy wszystkie wartości i zdecydujmy, z czym Mikrotik je.

4.1 Odczyt parametrów

W bloku Udostępnianie kliknij przycisk Czytaj wszystko. Blok posiada czerwony napis. Po prawej stronie pojawi się kolumna Wartość CPE (bieżąca).. Zmieniono ProvisioningMode na READALL w ustawieniach systemu.

TR-069 w Mikrotiku. Testowanie Freeacs jako serwera autokonfiguracji dla RouterOS

I… nic się nie stanie poza komunikatem w System.X_FREEACS-COM.IM.Message Kick failed at....

Uruchom ponownie klienta TR-069 lub zrestartuj router i odświeżaj stronę przeglądarki, aż zobaczysz parametry w wesołych szarych polach po prawej stronie
Jeśli ktoś ma ochotę napić się starego, zaprawionego, tryb ten jest opisany w instrukcji jako 10.2 Tryb Inspekcji. Włącza się i działa trochę inaczej, ale istota jest opisana dość

TR-069 w Mikrotiku. Testowanie Freeacs jako serwera autokonfiguracji dla RouterOS

Tryb READALL wyłączy się sam po 15 minutach, a my spróbujemy dowiedzieć się, co się tutaj przyda, a co można na bieżąco poprawiać, będąc w tym trybie.

Możesz zmieniać adresy IP, włączać / wyłączać interfejsy, reguły zapory sieciowej, które są z komentarzami (w przeciwnym razie kompletny bałagan), Wi-Fi i tak dalej.

Oznacza to, że nie jest jeszcze możliwe rozsądne skonfigurowanie mikrotika przy użyciu wyłącznie narzędzi TR-069. Ale możesz bardzo dobrze monitorować. Dostępne są statystyki dotyczące interfejsów i ich stanu, wolnej pamięci itp.

4.2 Parametry dostarczania

Spróbujmy teraz dostarczyć parametry do routera poprzez tr-069 w "naturalny" sposób. Pierwszą ofiarą będzie Device.DeviceInfo.X_MIKROTIK_SystemIdentity. Znajdziemy to w parametrach jednostki All. Jak widać nie jest to ustawione. Oznacza to, że każda jednostka może sama posiadać dowolną Tożsamość. Dość tego tolerowania!
Wrzucamy świt w kolumnę tworzenia, ustawiamy nazwę Mr.White i naciskamy przycisk Aktualizuj parametry. Co będzie dalej, już zgadłeś. Podczas następnej sesji komunikacyjnej z centralą router musi zmienić swoją tożsamość.

TR-069 w Mikrotiku. Testowanie Freeacs jako serwera autokonfiguracji dla RouterOS

Ale to nam nie wystarczy. Parametr taki jak Tożsamość warto mieć zawsze pod ręką, szukając odpowiedniej jednostki. Wbijamy w nazwę parametru i umieszczamy tam pola wyboru Wyświetl (D) i Możliwość wyszukiwania (S). Klucz parametru zostaje zmieniony na RWSD (pamiętaj, nazwy i klucze są ustawione na najwyższym poziomie typu jednostki)

TR-069 w Mikrotiku. Testowanie Freeacs jako serwera autokonfiguracji dla RouterOS

Wartość jest teraz nie tylko wyświetlana na ogólnej liście wyszukiwania, ale także dostępna do wyszukiwania Support > Search > Advanced form

TR-069 w Mikrotiku. Testowanie Freeacs jako serwera autokonfiguracji dla RouterOS

Inicjujemy świadczenie i przyglądamy się tożsamości. Witam Panie White! Teraz nie będziesz mógł samodzielnie zmienić swojej tożsamości podczas działania klienta tr-069

TR-069 w Mikrotiku. Testowanie Freeacs jako serwera autokonfiguracji dla RouterOS

4.3 Wykonywanie skryptów

Skoro przekonaliśmy się, że bez nich nie ma mowy, spełnijmy je.

Zanim jednak zaczniemy pracować z plikami, musimy poprawić dyrektywę public.url w pliku /opt/freeacs-tr069/config/application-config.conf
Przecież nadal mamy zainstalowaną konfigurację testową z jednym skryptem. Nie zapomniałeś?

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

Uruchomimy ponownie ACS i od razu przejdziemy do Files & Scripts.

TR-069 w Mikrotiku. Testowanie Freeacs jako serwera autokonfiguracji dla RouterOS

Ale to, co jest teraz u nas otwierane, należy do typu jednostki, tj. globalnie do wszystkich routerów hAP ac lite, niezależnie od tego, czy jest to router w oddziale, hotspot czy capsman. Nie potrzebujemy jeszcze tak wysokiego poziomu, dlatego przed pracą ze skryptami i plikami warto założyć profil. Możesz to nazwać sam, jako „pozycją” urządzenia.

Zróbmy z naszego dziecka serwer czasu. Przyzwoita pozycja z osobnym pakietem oprogramowania i niewielką liczbą parametrów. Chodźmy do Easy Provisioning > Profile > Create Profile i utwórz profil w typie jednostki: hAPaclite koniunkturalista. W profilu domyślnym nie mieliśmy żadnych parametrów, więc nie ma co kopiować Skopiuj parametry z: „nie kopiuj…”

TR-069 w Mikrotiku. Testowanie Freeacs jako serwera autokonfiguracji dla RouterOS

Nie ma tu jeszcze żadnych parametrów, ale będzie można ustawić te, które później będziemy chcieli zobaczyć na naszych serwerach czasu uformowanych z hAPaclite. Na przykład ogólne adresy serwerów NTP.
Przejdźmy do konfiguracji jednostki i przenieśmy ją do profilu serwera czasu

Wreszcie idziemy do Files & Scripts, twórz skrypty, a tu czekamy na niesamowicie wygodne bułeczki.

Aby wykonać skrypt na urządzeniu, musimy wybrać Wpisz:TR069_SCRIPT а Imię и Nazwa celu musi mieć rozszerzenie .alter
Jednocześnie w przypadku skryptów, w przeciwieństwie do oprogramowania, możesz albo wgrać gotowy plik, albo po prostu napisać/edytować go w polu Zadowolony. Spróbujmy napisać właśnie tam.

Aby od razu zobaczyć wynik, dodajmy vlan do routera na ether1

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

TR-069 w Mikrotiku. Testowanie Freeacs jako serwera autokonfiguracji dla RouterOS

Jeździmy, naciskamy Prześlij i zrobione. Nasz scenariusz vlan1.alter czeka na skrzydłach.

Dobrze chodźmy? NIE. Musimy także dodać grupę do naszego profilu. Grupy nie są uwzględniane w hierarchii sprzętu, ale są potrzebne do wyszukiwania jednostek w UnitType lub Profile i są wymagane do wykonywania skryptów poprzez Advanced Provisioning. Zwykle grupy są powiązane z lokalizacjami i mają zagnieżdżoną strukturę. Stwórzmy grupę rosyjską.

TR-069 w Mikrotiku. Testowanie Freeacs jako serwera autokonfiguracji dla RouterOS

Wyobraź sobie, że właśnie zawęziliśmy nasze wyszukiwanie z „Wszystkie światowe serwery czasu na hAPaclite” do „Wszystkie rosyjskie serwery czasu na hAPaclite”. W grupach jest jeszcze ogromna warstwa wszystkiego, co interesujące, ale nie mamy czasu. Przejdźmy do skryptów.

Advanced Provisioning > Job > Create Job

TR-069 w Mikrotiku. Testowanie Freeacs jako serwera autokonfiguracji dla RouterOS

Ponieważ jesteśmy przecież w trybie zaawansowanym, tutaj możesz określić szereg różnych warunków rozpoczęcia zadania, zachowania w przypadku błędów, powtórzeń i przekroczeń limitu czasu. Polecam przeczytać to wszystko w podręcznikach lub omówić to później, wdrażając to w produkcji. Na razie po prostu wstawimy n1 do reguł zatrzymania, aby zadanie zatrzymało się natychmiast po jego ukończeniu na naszej pierwszej jednostce.

Wypełniamy niezbędne i pozostaje tylko uruchomić!

TR-069 w Mikrotiku. Testowanie Freeacs jako serwera autokonfiguracji dla RouterOS

Naciśnij START i poczekaj. Teraz licznik urządzeń zabitych przez niedostatecznie debugowany skrypt będzie działać szybko! Oczywiście nie. Takie zadania są podawane przez długi czas i na tym polega ich różnica w stosunku do skryptów, Ansible i tak dalej. Jednostki same zgłaszają się do zadań zgodnie z harmonogramem lub gdy pojawiają się w sieci, ACS śledzi, które jednostki otrzymały już zadania i jak je zakończyły, oraz zapisuje to w parametrach jednostki. W naszej grupie jest 1 jednostka i gdyby było ich 1001 to admin zacząłby to zadanie i poszedł na ryby

Pospiesz się. Zrestartuj już router lub zrestartuj klienta TR-069. Wszystko powinno pójść gładko i Mr.White otrzyma nowy vlan. A nasze zadanie reguły Stop przejdzie do stanu WSTRZYMANE. Oznacza to, że nadal można go uruchomić ponownie lub zmienić. Jeżeli naciśniesz ZAKOŃCZ, zadanie zostanie zapisane do archiwum

4.4 Aktualizacja oprogramowania

Jest to bardzo ważny punkt, ponieważ oprogramowanie Mikrotika jest modułowe, ale dodanie modułów nie zmienia ogólnej wersji oprogramowania urządzenia. Nasz ACS jest normalny i nie jest do tego przyzwyczajony.
Teraz zrobimy to w stylu Quick & Dirty i od razu wepchniemy moduł NTP do ogólnego oprogramowania, ale gdy tylko wersja zostanie zaktualizowana na urządzeniu, nie będziemy mogli w ten sam sposób dodać kolejnego modułu .
Na produkcji lepiej nie stosować takiego triku i instalować moduły opcjonalne dla typu jednostki tylko ze skryptami.

Pierwszą rzeczą, którą musimy zrobić, to przygotować pakiety oprogramowania o wymaganych wersjach i architekturze i umieścić je na jakimś dostępnym serwerze WWW. Do testów zrobi to każdy, do kogo nasz Pan White może dotrzeć, ale na potrzeby produkcyjne lepiej jest złożyć automatycznie aktualizujący się lustrzany odpowiednik wymaganego oprogramowania, którego nie boi się umieścić w sieci
Ważny! Nie zapomnij zawsze dołączać pakietu tr-069client do aktualizacji!

Jak się okazało długość ścieżki do pakietów jest bardzo istotna! Kiedy próbuję użyć czegoś takiego http://192.168.0.237/routeros/stable/mipsbe/routeros-mipsbe-6.45.6.npk, mikrotik nawiązał cykliczne połączenie z zasobem, wysyłając powtarzające się logi TRANSFERCOMPLETE do tr-069. Zmarnowałem trochę komórek nerwowych, próbując dowiedzieć się, co jest nie tak. Dlatego, gdy umieścimy go w katalogu głównym, aż do wyjaśnienia

Powinniśmy więc mieć trzy pliki npk dostępne przez http. Dostałem to 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 należy to sformatować w pliku xml z FileType = „1 Firmware Upgrade Image”, który przekażemy do Mikrotika. Niech nazwa będzie ros.xml

Postępujemy zgodnie z instrukcją z mikrotik-wiki:

<upgrade version="1" type="links">
    <config />
    <links>
        <link>
            <url>http://192.168.0.241/routeros-mipsbe-6.45.6.npk</url>
        </link>
        <link>
            <url>http://192.168.0.241/ntp-6.45.6-mipsbe.npk</url>
        </link>
        <link>
            <url>http://192.168.0.241/tr069-client-6.45.6-mipsbe.npk</url>
        </link>
    </links>
</upgrade>

Brak jest ewidentny Username/Password aby uzyskać dostęp do serwera pobierania. Możesz spróbować wprowadzić go jak w paragrafie A.3.2.8 protokołu tr-069:

<link>
<url>http://192.168.0.237/routeros/stable/mipsbe/ntp-6.45.6-mipsbe.npk</url>
<Username>user</Username>
<Password>pass</Password>
</link>

Lub zapytaj bezpośrednio urzędników Mikrotika o maksymalną długość ścieżki do * .npk

Idziemy do znanego Files & Scriptsi utwórz tam plik SOFTWARE za pomocą Nazwa:ros.xml, Nazwa docelowa:ros.xml i Wersja:6.45.6
Uwaga! Wersja musi być tutaj podana dokładnie w formacie, w jakim jest wyświetlana na urządzeniu i przekazana w parametrze System.X_FREEACS-COM.Device.SoftwareVersion.

Wybierz nasz plik xm do przesłania i gotowe.

TR-069 w Mikrotiku. Testowanie Freeacs jako serwera autokonfiguracji dla RouterOS

Teraz mamy wiele sposobów na aktualizację urządzenia. Poprzez Kreator w menu głównym, poprzez Advanced Provisioning i zadania typu SOFTWARE lub po prostu przejdź do konfiguracji urządzenia i kliknij Upgrade. Wybierzmy najprostszą ścieżkę, w przeciwnym razie artykuł jest już spuchnięty.

TR-069 w Mikrotiku. Testowanie Freeacs jako serwera autokonfiguracji dla RouterOS

Naciskamy przycisk, inicjujemy udostępnianie i gotowe. Program testowy został ukończony. Teraz możemy zrobić więcej dzięki mikrotikowi.

5. Wniosek

Kiedy zaczynałem pisać, chciałem najpierw opisać sposób podłączenia telefonu IP i na jego przykładzie wyjaśnić, jak fajnie może być, gdy tr-069 działa łatwo i bez wysiłku. Ale potem, w miarę postępów i zagłębiania się w materiały, pomyślałem, że tym, którzy podłączą Mikrotika, żaden telefon nie będzie straszny do samodzielnej nauki.

W zasadzie Freeacs, który testowaliśmy, można już używać w produkcji, ale do tego trzeba skonfigurować zabezpieczenia, SSL, trzeba skonfigurować mikrotyki do autokonfiguracji po resecie, trzeba debugować poprawne dodanie typu jednostki, zdemontować praca usług sieciowych i powłoki fusion i wiele więcej. Próbuj, wymyślaj i napisz kontynuację!

Dziękuję wszystkim za uwagę! Chętnie zapoznam się z poprawkami i komentarzami!

Lista wykorzystanych materiałów i przydatne linki:

Wątek na forum, na który natknąłem się, gdy zacząłem szukać tego tematu
TR-069 Protokół zarządzania CPE WAN Poprawka-6
wiki Freeacs
Parametry tr-069 w Mikrotiku i ich zgodność z poleceniami terminala

Źródło: www.habr.com