TR-069 på Mikrotik. Testar Freeacs som en autoconfig-server för RouterOS

I den här artikeln kommer jag att försöka beskriva steg för steg processen för att installera en testserver för ett bra projekt freeacs till ett fullt fungerande tillstånd, och visa praktiska tekniker för att arbeta med mikrotik: konfiguration genom parametrar, skriptexekvering, uppdatering, installation av ytterligare moduler, etc.

Syftet med artikeln är att pressa kollegor att vägra hantera nätverksenheter med hjälp av fruktansvärda rakes och kryckor, i form av självskrivna manus, Dude, Ansible, etc. Och, vid detta tillfälle, orsaka fyrverkerier och massglädje i rutor.

0. Val

Varför freeacs och inte genie-acs som nämns i mikrotik-wikihur mer levande?
Eftersom det finns spanska publikationer om genie-acs med mikrotik. Här är de pdf и video från förra årets MUM. Automatiska serier på bilder är coola, men jag skulle vilja komma bort från konceptet med att skriva manus, att köra manus, att köra manus...

1. Freeacs installation

Vi kommer att installera i Centos7, och eftersom enheterna överför mycket data, och ACS arbetar aktivt med databasen, kommer vi inte att vara giriga på resurser. För bekvämt arbete kommer vi att välja 2 CPU-kärnor, 4 GB RAM och 16 GB snabb lagring ssd raid10. Jag kommer att installera freeacs i Proxmox VE lxc-behållaren, och du kan arbeta i vilket verktyg som helst som passar dig.
Glöm inte att ställa in rätt tid på maskinen med ACS.

Systemet kommer att vara ett test, så låt oss inte vara smarta, utan bara använda det vänligt tillhandahållna installationsskriptet som det är.

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

Så snart skriptet är klart kan du omedelbart komma in i webbgränssnittet via maskinens ip, med referenserna admin/freeacs

TR-069 på Mikrotik. Testar Freeacs som en autoconfig-server för RouterOS
Här är ett så fint minimalistiskt gränssnitt, och hur coolt och snabbt allt blev

2. Freeacs initiala installation

Den grundläggande styrenheten för ACS är enheten eller CPE (Customer Premises Equipment). Och viktigast av allt, det vi behöver för att hantera enheter är deras enhetstyp, dvs. en hårdvarumodell som definierar en uppsättning konfigurerbara parametrar för en enhet och dess mjukvara. Men tills vi vet hur man skaffar en ny enhetstyp korrekt, skulle det vara bäst att fråga enheten själv om detta genom att aktivera upptäcktsläget.

I produktionen är detta läge absolut omöjligt att använda, men vi måste starta motorn så snart som möjligt och se systemets möjligheter. Alla grundläggande inställningar lagras i /opt/freeacs-*. Därför öppnar vi

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

, vi hittar

discovery.mode = false

och byt till

discovery.mode = true

Dessutom skulle vi vilja öka de maximala filstorlekarna som nginx och mysql kommer att fungera med. För mysql, lägg till raden i /etc/my.cnf

max_allowed_packet=32M

, och för nginx, lägg till i /etc/nginx/nginx.conf

client_max_body_size 32m;

till http-sektionen. Annars kommer vi att kunna arbeta med firmware inte mer än 1M.

Vi startar om och vi är redo att arbeta med enheter.

Och i rollen som enheten (CPE) kommer vi att ha en arbetsnarkoman bebis hAP AC lite.

Innan en testanslutning är det lämpligt att manuellt konfigurera CPE till den lägsta fungerande konfigurationen så att parametrarna som du vill konfigurera i framtiden inte är tomma. För en router kan du minimalt aktivera en dhcp-klient på ether1, installera tr-069client-paketet och ställa in lösenord.

3. Anslut Mikrotik

Det är önskvärt att ansluta alla enheter med ett giltigt serienummer som inloggning. Då blir allt klart för dig i loggarna. Någon råder att använda WAN MAC - tro inte på det. Någon använder ett gemensamt inloggnings-/passeringspar för alla – kringgå dem.

Öppna tr-069-loggen för att övervaka "förhandlingar"

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

Öppna winbox, menypunkt TR-069.
AC URL: http://10.110.0.109/tr069/prov (ersätt med din IP)
Användarnamn: 9249094C26CB (kopiera serie från system>routerboard)
Lösenord: 123456 (behövs inte för upptäckt, men för att vara)
Vi ändrar inte det periodiska informationsintervallet. Vi kommer att utfärda denna inställning via vår ACS

Nedan finns inställningarna för fjärrinitiering av anslutningen, men jag kunde inte få mikrotik att arbeta med den med ett svep. Även om fjärrbegäran fungerar direkt med telefoner. Ska ta reda på det.

TR-069 på Mikrotik. Testar Freeacs som en autoconfig-server för RouterOS

Efter att ha tryckt på knappen Apply kommer data att utbytas i terminalen och i Freeacs webbgränssnitt kan du se vår router med den automatiskt skapade Unit Type "hAPaclite".

TR-069 på Mikrotik. Testar Freeacs som en autoconfig-server för RouterOS

Routern är ansluten. Du kan titta på den automatiskt genererade enhetstypen. Vi öppnar Easy Provisioning > Unit Type > Unit Type Overview > hAPaclite. Vad finns inte där! Så många som 928 parametrar (jag spanade på skalet). Mycket eller lite – vi får reda på det senare, men för nu ska vi bara ta en snabb titt. Det är vad enhetstyp betyder. Detta är en lista över alternativ som stöds med nycklar men inga värden. Värden ställs in på nivåerna nedan - Profiler och Enheter.

4. Konfigurera Mikrotik

Det är dags att ladda ner guide för webbgränssnitt Denna guide för 2011 är som en flaska gott, lagrat vin. Låt oss öppna den och låta den andas.

Och vi själva, i webbgränssnittet, klicka på pennan bredvid vår enhet och gå till enhetskonfigurationsläget. Det ser ut så här:

TR-069 på Mikrotik. Testar Freeacs som en autoconfig-server för RouterOS

Låt oss kort analysera vad som är intressant på denna sida:

Enhetskonfigurationsblock

  • Profil: Detta är profilen inom enhetstypen. Hierarkin är så här: UnitType > Profile > Unit. Det vill säga att vi kan skapa till exempel profiler hAPaclite > hotspot и hAPaclite > branch, men inom enhetsmodellen

Blockera provisionering med knappar
Tips antyder att alla knappar i provisioneringsblocket omedelbart kan tillämpa konfigurationen via ConnectionRequestURL. Men, som jag sa ovan, detta fungerar inte, så efter att ha tryckt på knapparna måste du starta om tr-069-klienten på mikrotik för att manuellt starta provisionering.

  • Freq/Spread: Hur många gånger i veckan som ska levereras konfigurationen ± % för att minska belastningen på servern och kommunikationskanalerna. Som standard kostar det 7/20, d.v.s. varje dag ± 20 % och tipsa om hur det är på några sekunder. Än så länge är det ingen idé att ändra leveransfrekvensen, eftersom. det blir extra brus i loggarna och inte alltid förväntad tillämpning av inställningar

Blockering av provisioneringshistorik (senaste 48 timmarna)

  • Utseendemässigt är berättelsen som en berättelse, men genom att klicka på titeln kommer du till ett bekvämt databassökverktyg med regexp och godsaker

Blockparametrar

Det största och viktigaste blocket, där parametrarna för denna enhet faktiskt ställs in och läses. Nu ser vi bara de viktigaste systemparametrarna, utan vilka ACS inte kan arbeta med enheten. Men vi kommer ihåg att vi har dem i enhetstyp - 928. Låt oss se alla värden och bestämma vad Mikrotik äter med.

4.1 Läsa parametrarna

Klicka på knappen Läs alla i provisioneringsblocket. Blocket har en röd inskription. En kolumn visas till höger CPE (nuvarande) värde. Ändrade ProvisioningMode till READALL i systeminställningar.

TR-069 på Mikrotik. Testar Freeacs som en autoconfig-server för RouterOS

Och... ingenting kommer att hända förutom ett meddelande i System.X_FREEACS-COM.IM.Message Kick failed at....

Starta om TR-069-klienten eller starta om routern och fortsätt uppdatera webbläsarsidan tills du får parametrarna i de glada grå rutorna till höger
Om någon vill ta en klunk av den gamla rutinerade så beskrivs detta läge i manualen som 10.2 Inspektionsläge. Den tänds och fungerar lite annorlunda, men essensen beskrivs ganska bra

TR-069 på Mikrotik. Testar Freeacs som en autoconfig-server för RouterOS

READALL-läget stängs av efter 15 minuter, och vi kommer att försöka ta reda på vad som är användbart här och vad som kan korrigeras i farten medan vi är i det här läget.

Du kan ändra IP-adresser, aktivera / inaktivera gränssnitt, brandväggsregler, som är med kommentarer (annars en komplett röra), Wi-Fi, och så vidare småsaker.

Det vill säga, det är ännu inte möjligt att konfigurera mikrotik med enbart TR-069-verktyg. Men du kan övervaka mycket bra. Statistik över gränssnitt och deras status, ledigt minne etc. finns tillgänglig.

4.2 Leverera parametrar

Låt oss nu försöka leverera parametrarna till routern, via tr-069, på ett "naturligt" sätt. Det första offret kommer att vara Device.DeviceInfo.X_MIKROTIK_SystemIdentity. Vi hittar det i parametrarna för All-enheten. Som du kan se är den inte inställd. Det betyder att varje enhet själv kan ha vilken identitet som helst. Nog att tolerera detta!
Vi petar en daw i skapa kolumnen, anger namnet Mr.White och petar på knappen Uppdatera parametrar. Vad som kommer att hända härnäst har du redan gissat. Vid nästa kommunikationssession med huvudkontoret måste routern ändra sin identitet.

TR-069 på Mikrotik. Testar Freeacs som en autoconfig-server för RouterOS

Men detta räcker inte för oss. En parameter som Identitet är bra att alltid ha till hands när man letar efter rätt enhet. Vi petar i namnet på parametern och sätter kryssrutorna Visa (D) och Sökbar (S) där. Parameternyckeln ändras till RWSD (Kom ihåg att namn och nycklar är inställda på högsta enhetstypnivå)

TR-069 på Mikrotik. Testar Freeacs som en autoconfig-server för RouterOS

Värdet visas nu inte bara i den allmänna söklistan utan även tillgängligt för sökning i Support > Search > Advanced form

TR-069 på Mikrotik. Testar Freeacs som en autoconfig-server för RouterOS

Vi initierar försörjning och tittar på Identitet. Hej Mr. White! Nu kommer du inte att kunna ändra din identitet själv medan tr-069client körs

TR-069 på Mikrotik. Testar Freeacs som en autoconfig-server för RouterOS

4.3 Exekvera skript

Eftersom vi har fått reda på att det inte går utan dem, låt oss uppfylla dem.

Men innan vi börjar arbeta med filer måste vi korrigera direktivet public.url i fil /opt/freeacs-tr069/config/application-config.conf
När allt kommer omkring har vi fortfarande en testkonfiguration installerad med ett skript. Har du inte glömt?

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

Starta om ACS och gå direkt till Files & Scripts.

TR-069 på Mikrotik. Testar Freeacs som en autoconfig-server för RouterOS

Men det som öppnas hos oss nu tillhör Enhetstypen, d.v.s. globalt till alla hAP ac lite-routrar, oavsett om det är en filialrouter, hotspot eller capsman. Vi behöver inte en så hög nivå ännu, därför bör du skapa en profil innan du arbetar med skript och filer. Du kan kalla det själv, som enhetens "position".

Låt oss göra vår baby till en tidsserver. Hyfsat läge med ett separat mjukvarupaket och ett litet antal parametrar. Låt oss gå till Easy Provisioning > Profile > Create Profile och skapa en profil i Unit Type: hAPaclite tidsserver. Vi hade inga parametrar i standardprofilen, så det finns inget att kopiera Kopiera parametrar från: "kopiera inte..."

TR-069 på Mikrotik. Testar Freeacs som en autoconfig-server för RouterOS

Det finns inga parametrar här alls än, men det kommer att vara möjligt att ställa in de som vi senare vill se på våra tidsservrar gjutna från hAPaclite. Till exempel de allmänna adresserna till NTP-servrar.
Låt oss gå till enhetskonfigurationen och flytta den till tidsserverprofilen

Äntligen går vi till Files & Scripts, gör manus, och här väntar vi på otroligt bekväma bullar.

För att exekvera ett skript på en enhet måste vi välja Typ: TR069_SCRIPT а Namn и Målnamn måste ha tillägget .alter
Samtidigt kan du för skript, till skillnad från programvara, antingen ladda upp en färdig fil eller helt enkelt skriva / redigera den i fältet Innehåll. Låt oss försöka skriva precis där.

Och så att du omedelbart kan se resultatet - lägg till vlan-routern till ether1

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

TR-069 på Mikrotik. Testar Freeacs som en autoconfig-server för RouterOS

Vi kör, vi trycker Ladda och gjort. Vårt manus vlan1.alter väntar i kulisserna.

Nåväl, låt oss gå? Nej. Vi måste också lägga till en grupp för vår profil. Grupper ingår inte i utrustningshierarkin, utan behövs för att söka efter enheter i UnitType eller Profile och krävs för skriptkörning genom Advanced Provisioning. Vanligtvis är grupper associerade med platser och har en kapslad struktur. Låt oss bilda en Rysslandsgrupp.

TR-069 på Mikrotik. Testar Freeacs som en autoconfig-server för RouterOS

Föreställ dig att vi precis har begränsat vår sökning från "Alla världens tidsservrar på hAPaclite" till "Alla ryska tidsservrar på hAPaclite". Det finns fortfarande ett stort lager av allt intressant med grupper, men vi har inte tid. Vi körde redan in i manus.

Advanced Provisioning > Job > Create Job

TR-069 på Mikrotik. Testar Freeacs som en autoconfig-server för RouterOS

Eftersom vi trots allt är i avancerat läge kan du här specificera en massa olika villkor för start av uppgiften, felbeteende, upprepningar och timeouts. Jag rekommenderar att du läser allt detta i manualerna eller diskuterar det senare när du implementerar det i produktionen. För nu, låt oss bara ställa in n1 till Stop-regler så att uppgiften stoppas så snart den är klar på vår 1:a enhet.

Vi fyller i det nödvändiga, och det återstår bara att lansera!

TR-069 på Mikrotik. Testar Freeacs som en autoconfig-server för RouterOS

Tryck på START och vänta. Nu kommer räknaren för enheter som dödats av det underdebuggade skriptet att köras snabbt! Självklart inte. Sådana uppgifter ges under lång tid, och detta är deras skillnad från skript, Ansible och så vidare. Enheter ansöker själva om uppgifter enligt ett schema eller som de dyker upp i nätverket, ACS håller reda på vilka enheter som redan fått uppgifter, och hur de slutade, och skriver detta till enhetens parametrar. Det finns 1 enhet i vår grupp, och om det fanns 1001 av dem skulle administratören starta den här uppgiften och fiska

Kom igen. Starta redan om routern eller starta om TR-069-klienten. Allt ska gå smidigt och Mr.White får ett nytt vlan. Och vår stoppregeluppgift kommer att gå in i PAUS-status. Det vill säga att den fortfarande kan startas om eller ändras. Om du trycker på FINISH skrivs uppgiften av till arkivet

4.4 Uppdatering av programvaran

Detta är en mycket viktig punkt, eftersom Mikrotiks firmware är modulär, men att lägga till moduler ändrar inte enhetens övergripande firmwareversion. Vår ACS är normal och inte van vid detta.
Nu kommer vi att göra det i stil med quick & dirty, och trycka in NTP-modulen i den allmänna firmware direkt, men så fort versionen är uppdaterad på enheten kommer vi inte att kunna lägga till ytterligare en modul på samma sätt .
I produktionen är det bättre att inte använda ett sådant trick och installera moduler som är valfria för Unit Type endast med skript.

Så det första vi behöver göra är att förbereda mjukvarupaket med de nödvändiga versionerna och arkitekturen och lägga dem på någon tillgänglig webbserver. För testet kommer alla som kan nå vår Mr.White att gå, och för produktionen är det bättre att bygga en automatisk uppdateringsspegel av den nödvändiga programvaran, som inte är skrämmande att lägga på webben
Viktig! Glöm inte att alltid inkludera tr-069client-paketet i uppdateringar!

Som det visade sig är längden på vägen till paketen mycket viktig! När jag försöker använda något som http://192.168.0.237/routeros/stable/mipsbe/routeros-mipsbe-6.45.6.npk, föll mikrotik i en cyklisk anslutning med resursen och skickade upprepade TRANSFERCOMPLETE-loggar till tr-069. Och jag slösade bort några nervceller på att försöka lista ut vad som var fel. Därför, medan vi lägger det i roten, tills förtydligandet

Så vi borde ha tre npk-filer tillgängliga via http. Jag fick det så här

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

Nu måste detta formateras till en xml-fil med FileType = "1 Firmware Upgrade Image", som vi kommer att mata till Mikrotik. Låt namnet vara ros.xml

Vi gör enligt instruktionerna från 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>

En brist är uppenbar Username/Password för att komma åt nedladdningsservern. Du kan antingen försöka skriva in det som i avsnitt A.3.2.8 i tr-069-protokollet:

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

Eller fråga Mikrotik-tjänstemännen direkt, samt om den maximala väglängden till * .npk

Vi går till det kända Files & Scripts, och skapa en SOFTWARE-fil där med Namn:ros.xml, Målnamn:ros.xml och Version:6.45.6
Uppmärksamhet! Versionen måste anges här exakt i det format som den visas i på enheten och skickas i parametern System.X_FREEACS-COM.Device.SoftwareVersion.

Vi väljer vår xm-fil för att ladda och du är klar.

TR-069 på Mikrotik. Testar Freeacs som en autoconfig-server för RouterOS

Nu har vi många sätt att uppdatera enheten. Genom guiden i huvudmenyn, genom Advanced Provisioning och uppgifter med PROGRAMVARA-typen, eller gå bara till enhetskonfigurationen och klicka på Uppgradera. Låt oss välja det enklaste sättet, annars är artikeln svullen.

TR-069 på Mikrotik. Testar Freeacs som en autoconfig-server för RouterOS

Vi trycker på knappen, initierar försörjning och du är klar. Testprogrammet är avslutat. Nu kan vi göra mer med mikrotik.

5. slutsats

När jag började skriva ville jag först beskriva anslutningen av en ip-telefon, och använda dess exempel för att förklara hur coolt det kan vara när tr-069 fungerar enkelt och utan ansträngning. Men sedan, när jag gick vidare och grävde i materialet, tänkte jag att för de som kopplade upp Mikrotik, skulle ingen telefon vara skrämmande för självstudier.

I princip kan Freeacs, som vi testade, redan användas i produktionen, men för detta måste du konfigurera säkerhet, SSL, du måste konfigurera mikrotik för autokonfiguration efter återställning, du måste felsöka rätt tillägg av Unit Type, demontera arbete med webbtjänster och fusionsskal och mycket mer. Prova, uppfinna och skriv en uppföljare!

Alla, tack för er uppmärksamhet! Jag tar gärna emot korrigeringar och kommentarer!

Lista över använt material och användbara länkar:

En forumtråd som jag stötte på när jag började söka på ämnet
TR-069 CPE WAN Management Protocol Amendment-6
freeacs wiki
Parametrar tr-069 i Mikrotik, och deras motsvarighet till terminalkommandon

Källa: will.com