TR-069 en Mikrotik. Prueba de Freeacs como un servidor de autoconfiguración para RouterOS

En este artículo, intentaré describir paso a paso el proceso de instalación del servidor de prueba de un excelente proyecto de Freeacs en un estado completamente funcional, y mostrar técnicas prácticas para trabajar con mikrotik: configuración a través de parámetros, ejecución de script, actualización, instalación de módulos adicionales, etc.

El propósito del artículo es alentar a sus colegas a abandonar la administración de dispositivos de red que utilizan terribles rastrillos y muletas, en forma de guiones autoescritos, Dude, Ansible, etc. Y, en este sentido, causan fuegos artificiales y alegría masiva en las plazas.

0. Elección


¿Por qué los freeacs, no los genie-ac, mencionados en mikrotik-wiki , son más animados?
Porque según los genios con mikrotik hay publicaciones de los españoles. Aquí están su pdf y video de MUM del año pasado. Las caravanas automáticas en diapositivas son geniales, pero me gustaría alejarme del concepto de escribir guiones, ejecutar guiones, ejecutar guiones ...

1. Instalar freeacs


Lo instalaremos en Centos7, y dado que los dispositivos transmiten muchos datos, y ACS está trabajando activamente con la base de datos, no seremos codiciosos con los recursos. Para un trabajo cómodo, asignamos 2 núcleos de CPU, 4 GB de RAM y 16 GB de almacenamiento rápido ssd raid10. Instalaré freeacs en el contenedor Proxmox VE lxc, y puedes trabajar en cualquier herramienta que sea conveniente para ti.
Recuerde configurar la hora correcta en la máquina con ACS.

El sistema será de prueba, por lo que no seremos inteligentes y solo usaremos el script de instalación amablemente proporcionado, tal como es.

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

Tan pronto como se complete el script, puede acceder inmediatamente a la interfaz web en la máquina ip, con las credenciales admin / freeacs


Aquí hay una interfaz minimalista tan agradable, y lo genial y rápido que resultó todo

2. Configuración inicial de freeacs


La unidad de control básica para ACS es una unidad o CPE (Equipo de instalaciones del cliente). Y lo más importante, lo que necesitamos para administrar unidades es su Tipo de unidad, es decir, modelo de equipo que define un conjunto de parámetros de unidad personalizables y su software. Pero si bien no sabemos cómo obtener el nuevo Tipo de unidad, es mejor preguntarle a la unidad activando el Modo de descubrimiento.

En producción, este modo es absolutamente imposible de usar, pero necesitamos arrancar el motor pronto y ver las capacidades del sistema. Todos los ajustes básicos se almacenan en / opt / freeacs- *. Por lo tanto, abrir

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

encontramos

 discovery.mode = false 

y cambiar a

 discovery.mode = true 

Además, nos gustaría aumentar los tamaños máximos de archivos con los que trabajarán nginx y mysql. Para mysql, agregue la línea a /etc/my.cnf

 max_allowed_packet=32M 

, y para nginx, en /etc/nginx/nginx.conf add

 client_max_body_size 32m; 

a la sección http. De lo contrario, podemos trabajar con firmware no más de 1M.

Reiniciamos y estamos listos para trabajar con dispositivos.

Y en el papel del dispositivo (CPE) tendremos el hAP kid ACAP lite .

Antes de la conexión de prueba, es aconsejable configurar manualmente el CPE a la configuración mínima de trabajo para que los parámetros que desee configurar en el futuro no estén vacíos. Para el enrutador, puede habilitar mínimamente el cliente dhcp en ether1, instalar el paquete tr-069client y establecer contraseñas.

3. Conectamos Mikrotik


Se recomienda conectar todas las unidades utilizando un número de serie válido como inicio de sesión. Entonces todo estará claro para ti en los registros. Alguien aconseja usar WAN MAC, no lo crea. Alguien usa un par de inicio de sesión / pase común para todos: omítalos.

Abrimos el registro tr-069 para monitorear "negociaciones"

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

Abra winbox, elemento de menú TR-069.
URL de ACS: http://10.110.0.109/tr069/prov (reemplace con su IP)
Nombre de usuario: 9249094C26CB (copie la serie del sistema> enrutador)
Contraseña: 123456 (no necesaria para el descubrimiento, pero para ser)
Intervalo de información periódica que no cambiamos. Emitiremos esta configuración a través de nuestro ACS

A continuación se encuentran las configuraciones para la inicialización de la conexión remota, pero no pude trabajar con mikrotik para que esto suceda. Aunque la solicitud remota funciona con teléfonos listos para usar. Será necesario entenderlo.



Después de hacer clic en el botón Aplicar, los datos se intercambiarán en el terminal, y en la interfaz web de Freeacs puede ver nuestro enrutador con el tipo de unidad creado automáticamente "hAPaclite".



El enrutador está conectado. Puede ver el tipo de unidad creado automáticamente. Abra Easy Provisioning > Unit Type > Unit Type Overview > hAPaclite . ¡Qué hay no solo! Hasta 928 parámetros (espiaba en el shell). Ya sea mucho o poco, lo resolveremos más tarde, pero por ahora solo un vistazo rápido. Esto es lo que significa Tipo de unidad. Esta es una lista de parámetros admitidos con claves pero sin valores. Los valores se establecen en los niveles siguientes: Perfiles y unidades.

4. Configurar Mikrotik


Es hora de descargar la guía de la interfaz web . Esta guía de 2011 es como una botella de buen vino añejado. Abramos y dejemos respirar.

Y nosotros mismos, en la interfaz web, haga clic en el lápiz al lado de nuestra unidad y entre en el modo de configuración de la unidad. Se ve así:



Examine brevemente lo que es interesante en esta página:

Bloque de configuración de la unidad

  • Perfil: este es el perfil dentro del tipo de unidad. La jerarquía es esta: UnitType > Profile > Unit . Es decir, podemos obtener, por ejemplo, perfiles hAPaclite > hotspot y hAPaclite > branch , pero dentro del modelo de dispositivo

Aprovisionamiento de botones
Las sugerencias sugieren que todos los botones en el bloque de Aprovisionamiento pueden aplicar instantáneamente la configuración a través de ConnectionRequestURL. Pero, como dije anteriormente, esto no funciona, así que después de hacer clic en los botones, deberá reiniciar el cliente tr-069 en mikrotik para iniciar el aprovisionamiento manualmente.

  • Freq / Spread: cuántas veces a la semana para entregar ±% de configuración para reducir la carga en el servidor y los canales de comunicación. Por defecto cuesta 7/20, es decir todos los días ± 20% y una pista como esta en segundos. Si bien no tiene sentido cambiar la frecuencia de entrega, tk. habrá un exceso de ruido en los registros y no siempre la aplicación esperada de la configuración

Historial de aprovisionamiento de bloques (últimas 48 horas)

  • Parece una historia, como una historia, pero al hacer clic en el título, ingresa a una conveniente herramienta de búsqueda de base de datos, con expresiones regulares y bollos

Bloque de parámetros

El bloque más grande e importante, donde, de hecho, los parámetros para esta unidad se configuran y leen. Ahora solo vemos los parámetros del sistema más importantes, sin los cuales ACS no puede funcionar con la unidad. Pero recordamos que tenemos 928 en Tipo de unidad. Miremos todos los valores y decidamos qué come todo con Mikrotik.

4.1 Leer los parámetros


En el bloque Aprovisionamiento, haga clic en el botón Leer todo. En el bloque: una inscripción roja. La columna de valor CPE (actual) aparece a la derecha. En la configuración del sistema, ProvisioningMode cambió a READALL.



Y ... nada sucederá excepto el mensaje en System.X_FREEACS-COM.IM.Message Kick failed at...

Reinicie el cliente TR-069 o reinicie el enrutador y continúe actualizando la página del navegador hasta que obtenga los parámetros en los alegres rectángulos grises a la derecha
Si alguien quiere tomar un sorbo del viejo sazonado, este modo en el manual se describe como 10.2 Modo de inspección. Se enciende y funciona un poco mal, pero la esencia se describe bastante



El modo READALL se apagará después de 15 minutos, e intentaremos averiguar qué es útil y qué se puede corregir "sobre la marcha" mientras estamos en este modo.

Puede cambiar las direcciones IP, habilitar / deshabilitar interfaces, reglas de firewall, que tienen comentarios (de lo contrario, un desastre completo), Wi-Fi, etc.

Es decir, todavía no es posible configurar mikrotik cuerdo solo con TR-069. Pero puedes monitorear muy bien. Estadísticas disponibles sobre interfaces y su estado, memoria libre, etc.

4.2 Parámetros de entrega


Ahora tratemos de entregar los parámetros al enrutador, a través de tr-069, de forma "natural". La primera víctima será Device.DeviceInfo.X_MIKROTIK_SystemIdentity. Lo encontramos en los parámetros de la unidad Todos. Aparentemente, no está configurado. Esto significa que cualquier unidad puede tener cualquier identidad. Basta!
Presiona un poco en la columna de creación, establece el nombre Mr.White y presiona el botón Actualizar parámetros. Lo que sucederá después ya lo has adivinado. En la próxima sesión de comunicación con la sede, el enrutador debe cambiar su identidad.



Pero esto no es suficiente para nosotros. Es bueno tener siempre a mano un parámetro como Identidad al buscar la unidad deseada. Introducimos el nombre del parámetro y colocamos los indicadores Display (D) y Searchable (S). La clave del parámetro cambia a RWSD (recuerde, los nombres y las claves se configuran en el nivel más alto de Tipo de unidad)



El valor ahora no solo se muestra en la lista de búsqueda general, sino que también está disponible para buscar en Support > Search > Advanced form



Iniciamos la provisión y miramos Identidad. Hola señor blanco! Ahora no podrá cambiar su identidad mientras se ejecuta tr-069client



4.3 Ejecutamos scripts


Como descubrimos que no hay manera sin ellos, ejecutémoslos.

Pero antes de comenzar a trabajar con archivos, debemos corregir la directiva public.url en el archivo /opt/freeacs-tr069/config/application-config.conf
Después de todo, todavía tenemos una configuración de prueba instalada por un script. No te olvides

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


Reinicie ACS y diríjase directamente a Files & Scripts .



Pero lo que estamos abriendo ahora pertenece al tipo de unidad, es decir globalmente a todos los enrutadores hAP ac lite, ya sea un enrutador de sucursal, punto de acceso o capsman. Todavía no necesitamos un nivel tan alto, por lo tanto, antes de trabajar con scripts y archivos, debe crear un perfil. Puede llamarlo usted mismo, como la "posición" del dispositivo.

Hagamos de nuestro bebé un servidor horario. Publicación decente con un paquete de software separado y una pequeña cantidad de parámetros. Vaya a Easy Provisioning > Profile > Create Profile y cree un perfil de servidor de tiempo en Tipo de unidad: hAPaclite . No teníamos parámetros en el perfil predeterminado, por lo tanto, no hay nada para copiar Copiar parámetros de: "no copiar ..."



Todavía no hay parámetros en absoluto, pero será posible establecer aquellos que luego queremos ver en nuestros servidores de tiempo, improvisados ​​desde hAPaclite. Por ejemplo, las direcciones comunes de los servidores NTP.
Pasemos a la configuración de la unidad, y muévala al perfil del servidor de tiempo

Finalmente, vamos a Files & Scripts , hacemos scripts, y aquí estamos esperando bollos increíblemente convenientes.

Para ejecutar el script en la unidad, debemos seleccionar Tipo: TR069_SCRIPT y Name y Target Name deben tener la extensión .alter
Al mismo tiempo, para los scripts, a diferencia del software, puede cargar el archivo terminado o simplemente escribirlo / editarlo en el campo Contenido. Intentemos escribir allí mismo.

Y para ver el resultado inmediatamente, agregue un enrutador vlan a ether1

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



Conduzca, haga clic en Cargar y listo. Nuestro script vlan1.alter esperando en las alas.

Bueno, lo condujo? No También debemos agregar un grupo a nuestro perfil. Los grupos no están incluidos en la jerarquía de equipos, pero son necesarios para buscar unidades en UnitType o Profile y están obligados a ejecutar scripts a través de Advanced Provisioning. Por lo general, los grupos están asociados con ubicaciones y tienen una estructura anidada. Hagamos un grupo de Rusia.



Imagínense que pudimos reducir la búsqueda de "Todos los servidores del mundo en hAPaclite" a "Todos los servidores de Rusia en hAPaclite". Todavía hay una gran capa de todo lo interesante con los grupos, pero no tenemos tiempo. Ya condujo a los guiones.

 Advanced Provisioning > Job > Create Job 



Como estamos en modo avanzado, después de todo, aquí puede especificar un montón de condiciones diferentes para comenzar el trabajo, comportamiento de error, reintentos y tiempos de espera. Recomiendo leerlo todo en manuales o discutirlo más tarde cuando lo implemente en producción. Por ahora, simplemente ponga n1 en las reglas de detención para que la tarea se detenga tan pronto como se complete en nuestra unidad 1.

¡Completamos lo necesario y solo queda correr!



Presione START y espere. ¡Ahora el contador de dispositivos eliminados por un script subdesarrollado se ejecutará rápidamente! No por supuesto. Dichas tareas se dan durante mucho tiempo, y esta es su diferencia con los scripts, Ansible, etc. Las unidades mismas solicitan tareas en un horario o tal como aparecen en la red, ACS realiza un seguimiento de qué unidades ya han recibido tareas y cómo terminaron, y escribe esto en los parámetros de la unidad. Hay 1 unidad en nuestro grupo, y si hubiera 1001 de ellos, el administrador ejecutaría esta tarea e iría a pescar

Vamos Reinicie el enrutador o reinicie el cliente TR-069. Todo debería ir sin problemas y Mr.White obtendrá un nuevo vlan. Y nuestra asignación de la regla de detención entrará en estado PAUSADO. Es decir, aún se puede reiniciar o cambiar. Si hace clic en FINALIZAR, la tarea se escribirá en el archivo

4.4 Actualización de software


Este es un punto muy importante, ya que el firmware de Mikrotik es modular, pero agregar módulos no cambia la versión general del firmware del dispositivo. Nuestro ACS es normal y no estoy acostumbrado.
Ahora lo haremos de manera rápida y sucia, e insertaremos el módulo NTP en el firmware general de inmediato, pero tan pronto como la versión se actualice en el dispositivo, no podremos agregar otro módulo de la misma manera.
En producción, es mejor no aplicar este truco, e instalar módulos opcionales para Tipo de unidad solo con scripts.

Entonces, lo primero que debemos hacer es preparar los paquetes de software de las versiones y la arquitectura requeridas, y ponerlo en algún servidor web accesible. Para la prueba, cualquiera irá a lo que nuestro Sr. White puede alcanzar, y para la producción es mejor armar un espejo de actualización automática del software necesario, que no da miedo poner en la web
Importante! ¡Recuerde incluir siempre un paquete con tr-069client en las actualizaciones!

Al final resultó que, la longitud de la ruta a los paquetes es muy importante! Cuando traté de usar algo como http://192.168.0.237/routeros/stable/mipsbe/routeros-mipsbe-6.45.6.npk , mikrotik cayó en una conexión cíclica al recurso, dando la repetición TRANSFERCOMPLETE al registro tr-069. Y pasé una cierta cantidad de células nerviosas tratando de descubrir qué estaba mal. Por lo tanto, mientras ponemos en la raíz, hasta aclaración

Entonces, deberíamos tener tres archivos npk disponibles a través de http. Resultó que para mí

 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 

Ahora debe emitirse en el archivo xml con FileType = "1 Firmware Upgrade Image", que alimentamos a los microtics. Deje que el nombre sea ros.xml

Seguimos las instrucciones del 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> 

La falta de nombre de Username/Password para acceder al servidor de descarga es sorprendente. Puede intentar ingresar esto como en la cláusula A.3.2.8 del protocolo 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> 

O pregunte directamente al Mikrotik oficial, así como la longitud máxima de ruta a * .npk

Vamos a los Files & Scripts que conocemos, y creamos un archivo como SOFTWARE con Nombre: ros.xml, Nombre de destino: ros.xml y Versión: 6.45.6
Atencion La versión aquí debe especificarse en el formato en que se muestra en el dispositivo y pasar en el System.X_FREEACS-COM.Device.SoftwareVersion .

Seleccionamos nuestro archivo xm para descargar y ya está.



Ahora tenemos muchas formas de actualizar su dispositivo. A través del Asistente en el menú principal, a través de Aprovisionamiento avanzado y tareas con el tipo de SOFTWARE, o simplemente vaya a la configuración de la unidad y haga clic en Actualizar. Elegimos la forma más fácil, e incluso entonces el artículo está hinchado.



Haga clic en el botón, inicie la provisión y listo. El programa de prueba se ha completado. Ahora podemos hacer más con mikrotik.

5. Conclusión


Cuando comencé a escribir, quería describir primero la conexión del teléfono IP, y usar su ejemplo para explicar lo genial que puede ser cuando tr-069 funciona fácilmente y sin esfuerzo. Pero luego, a medida que avanzaba y buscaba los materiales, pensé que para quien conectaba a Mikrotik, ningún teléfono daría miedo para un estudio independiente.

En principio, los Freeacs que probamos ya se pueden usar en producción, pero para esto necesita configurar la seguridad, SSL, debe configurar Mikrotik para la configuración automática después del reinicio, debe depurar la adición correcta de Tipo de unidad, desmontar el trabajo de los servicios web y el shell de fusión, y mucho más. ¡Prueba, inventa y escribe una secuela!

¡Gracias a todos por su atención! Estaré encantado de enmiendas y comentarios!

Lista de materiales utilizados y enlaces útiles:

El hilo del foro que encontré al comienzo de las búsquedas sobre el tema
TR-069 CPE WAN Protocolo de gestión Enmienda-6
Wiki de Freeacs
Parámetros tr-069 en Mikrotik, y su conformidad con los comandos del terminal

Actualización 10.13.2019:

Al revisar la información sobre el proyecto FreeACS, me encontré con un parche muy interesante propuesto por muchachos polacos que tienen FreeACS sirviendo dispositivos de 20K.

El parche está hecho para diferentes versiones de hardware, pero en el caso de microtics, le permitirá crear varios tipos de unidades para los mismos enrutadores con un conjunto diferente de módulos de software.
Por ejemplo, hAPaclite-ntp, hAPaclite-ups, etc. Y, en consecuencia, para eludir la restricción "un modelo == un firmware"

Source: https://habr.com/ru/post/468241/


All Articles