TR-069 en Mikrotik. Probando Freeacs como un servidor de configuración automática para RouterOS

En este artículo intentaré describir paso a paso el proceso de instalación de un servidor de prueba de un gran proyecto freeacs a 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 scripts, actualización, instalación de módulos adicionales, etc.

El objetivo del artículo es empujar a los compañeros a negarse a gestionar los dispositivos de la red utilizando terribles rastrillos y muletas, en forma de guiones escritos por ellos mismos, Dude, Ansible, etc. Y, en esta ocasión, provocar fuegos artificiales y júbilo masivo en la cuadrícula.

0 La eleccion

¿Por qué se menciona freeacs y no genie-acs en mikrotik-wiki¿Cómo más vivo?
Porque hay publicaciones españolas sobre genie-acs con mikrotik. Aquí están pdf и видео de MUM del año pasado. Los dibujos animados automáticos en las diapositivas son geniales, pero me gustaría alejarme del concepto de escribir guiones, ejecutar guiones, ejecutar guiones...

1. Instalación de Freeacs

Lo instalaremos en Centos7, y dado que los dispositivos transmiten una gran cantidad de datos y ACS está trabajando activamente con la base de datos, no seremos codiciosos con los recursos. Para un trabajo cómodo, seleccionaremos 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 puede trabajar en cualquier herramienta que sea conveniente para usted.
No olvide configurar la hora correcta en la máquina con ACS.

El sistema será una prueba, así que no seamos inteligentes y usemos el script de instalación amablemente proporcionado, tal como está.

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

Tan pronto como finalice el script, puede ingresar inmediatamente a la interfaz web mediante la ip de la máquina, con las credenciales admin/freeacs

TR-069 en Mikrotik. Probando Freeacs como un servidor de configuración automática para RouterOS
Aquí hay una interfaz minimalista tan agradable, y lo genial y rápido que resultó todo.

2. Configuración inicial de Freeacs

La unidad básica de control para ACS es la unidad o CPE (Customer Premises Equipment). Y lo que es más importante, lo que necesitamos para administrar las unidades es su Tipo de unidad, es decir, un modelo de hardware que define un conjunto de parámetros configurables para una unidad y su software. Pero si bien no sabemos cómo iniciar correctamente un nuevo Tipo de unidad, sería mejor preguntarle a la unidad sobre esto activando el Modo de descubrimiento.

En producción, este modo es absolutamente imposible de usar, pero necesitamos arrancar el motor lo antes posible y ver las capacidades del sistema. Todas las configuraciones básicas se almacenan en /opt/freeacs-*. Por lo tanto, abrimos

 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 archivo 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, agregue a /etc/nginx/nginx.conf

client_max_body_size 32m;

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

Reiniciamos y estamos listos para trabajar con dispositivos.

Y en el papel del dispositivo (CPE) tendremos un bebé adicto al trabajo hAP AC ligero.

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

3. Conecta Mikrotik

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

Abriendo el log tr-069 para monitorear "negociaciones"

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

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

A continuación se encuentran las configuraciones para la inicialización remota de la conexión, pero no pude hacer que mikrotik trabajara con ella de un golpe. Aunque la solicitud remota funciona de forma inmediata con los teléfonos. Habrá que averiguarlo.

TR-069 en Mikrotik. Probando Freeacs como un servidor de configuración automática para RouterOS

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

TR-069 en Mikrotik. Probando Freeacs como un servidor de configuración automática para RouterOS

El enrutador está conectado. Puede consultar el tipo de unidad generado automáticamente. Nosotros abrimos Easy Provisioning > Unit Type > Unit Type Overview > hAPaclite. ¡Qué no hay! Hasta 928 parámetros (espié en el caparazón). Ya sea mucho o poco, lo resolveremos más tarde, pero por ahora solo echaremos un vistazo rápido. Eso es lo que significa Tipo de unidad. Esta es una lista de opciones admitidas con claves pero sin valores. Los valores se establecen en los niveles a continuación - Perfiles y Unidades.

4. Configurar Mikrotik

es hora de descargar guía de interfaz web Esta guía 2011 es como una botella de buen vino añejo. Vamos a abrirlo y dejar que respire.

Y nosotros, en la interfaz web, hacemos clic en el lápiz al lado de nuestra unidad y vamos al modo de configuración de la unidad. Se parece a esto:

TR-069 en Mikrotik. Probando Freeacs como un servidor de configuración automática para RouterOS

Analicemos brevemente lo interesante de esta página:

Bloque de configuración de unidades

  • Perfil: Este es el perfil dentro del Tipo de Unidad. La jerarquía es así: UnitType > Profile > Unit. Es decir, podemos crear, por ejemplo, perfiles hAPaclite > hotspot и hAPaclite > branch, pero dentro del modelo de dispositivo

Aprovisionamiento de bloques con 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, por lo que después de presionar los botones, deberá reiniciar el cliente tr-069 en mikrotik para iniciar manualmente el aprovisionamiento.

  • Freq/Spread: cuántas veces a la semana entregar la 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% e insinúa cómo es en segundos. Hasta ahora, no tiene sentido cambiar la frecuencia de entrega, porque. habrá ruido adicional en los registros y no siempre se espera la aplicación de la configuración

Bloque de historial de aprovisionamiento (últimas 48 horas)

  • En apariencia, la historia es como una historia, pero al hacer clic en el título, accede a una conveniente herramienta de búsqueda en la base de datos con expresiones regulares y extras.

Bloque de parámetros

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

4.1 Lectura de los parámetros

En el bloque Aprovisionamiento, haga clic en el botón Leer todo. El bloque tiene una inscripción roja. Aparecerá una columna a la derecha. Valor CPE (actual). Cambió ProvisioningMode a READALL en la configuración del sistema.

TR-069 en Mikrotik. Probando Freeacs como un servidor de configuración automática para RouterOS

Y… nada pasará excepto un mensaje en System.X_FREEACS-COM.IM.Message Kick failed at....

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

TR-069 en Mikrotik. Probando Freeacs como un servidor de configuración automática para RouterOS

El modo READALL se apagará solo después de 15 minutos, e intentaremos descubrir qué es útil aquí 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 son con comentarios (de lo contrario, un completo desastre), Wi-Fi, etc.

Es decir, aún no es posible configurar mikrotik de manera sensata utilizando solo las herramientas TR-069. Pero se puede monitorear muy bien. Se dispone de estadísticas sobre las interfaces y su estado, memoria libre, etc.

4.2 Entrega de parámetros

Intentemos ahora enviar 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 All. Como puede ver, no está configurado. Esto significa que cualquier unidad puede tener cualquier Identidad. ¡Ya basta de tolerar esto!
Introducimos un daw en la columna de creación, establecemos el nombre Mr. White y pulsamos el botón Actualizar parámetros. Lo que sucederá después, ya lo adivinaste. En la próxima sesión de comunicación con la sede, el enrutador debe cambiar su Identidad.

TR-069 en Mikrotik. Probando Freeacs como un servidor de configuración automática para RouterOS

Pero esto no es suficiente para nosotros. Es bueno tener siempre a mano un parámetro como Identidad cuando se busca la unidad adecuada. Introducimos el nombre del parámetro y colocamos las casillas de verificación Display (D) y Searchable (S) allí. La clave del parámetro se cambia a RWSD (recuerde, los nombres y las claves se establecen en el nivel más alto de tipo de unidad)

TR-069 en Mikrotik. Probando Freeacs como un servidor de configuración automática para RouterOS

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

TR-069 en Mikrotik. Probando Freeacs como un servidor de configuración automática para RouterOS

Iniciamos la provisión y observamos la Identidad. ¡Hola Sr. White! Ahora no podrá cambiar su identidad usted mismo mientras se ejecuta tr-069client

TR-069 en Mikrotik. Probando Freeacs como un servidor de configuración automática para RouterOS

4.3 Ejecución de guiones

Ya que hemos descubierto que no hay camino sin ellos, vamos a cumplirlos.

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

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

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

TR-069 en Mikrotik. Probando Freeacs como un servidor de configuración automática para RouterOS

Pero lo que se está abriendo con nosotros 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 de tiempo. Posición decente con un paquete de software separado y una pequeña cantidad de parámetros. Vamos a Easy Provisioning > Profile > Create Profile y crea un perfil en Unit Type:hAPaclite contemporizador. No teníamos ningún parámetro en el perfil predeterminado, por lo que no hay nada que copiar Copiar parámetros de: "no copiar..."

TR-069 en Mikrotik. Probando Freeacs como un servidor de configuración automática para RouterOS

Todavía no hay parámetros aquí, pero será posible establecer aquellos que luego queramos ver en nuestros servidores de tiempo moldeados a partir de hAPaclite. Por ejemplo, las direcciones generales de los servidores NTP.
Vayamos a la configuración de la unidad, y muévala al perfil del servidor horario

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

Para ejecutar un script en una unidad, debemos seleccionar Escriba:TR069_SCRIPT а Nombre и Nombre objetivo debe tener la extensión .alter
Al mismo tiempo, para los scripts, a diferencia del software, puede cargar un archivo terminado o simplemente escribirlo/editarlo en el campo. Contenido. Intentemos escribir allí mismo.

Y para que pueda ver el resultado de inmediato, agregue el enrutador vlan a ether1

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

TR-069 en Mikrotik. Probando Freeacs como un servidor de configuración automática para RouterOS

Conducimos, presionamos Subir y hecho. nuestro guion vlan1.alter Esperando en las alas.

¿Bueno, vamos? No. También necesitamos agregar un grupo para 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 son necesarios para la ejecución de 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.

TR-069 en Mikrotik. Probando Freeacs como un servidor de configuración automática para RouterOS

Imagine que redujimos nuestra búsqueda de "Todos los servidores horarios del mundo en hAPaclite" a "Todos los servidores horarios rusos en hAPaclite". Todavía hay una capa enorme de todo lo interesante con los grupos, pero no tenemos tiempo. Entremos en los guiones.

Advanced Provisioning > Job > Create Job

TR-069 en Mikrotik. Probando Freeacs como un servidor de configuración automática para RouterOS

Dado que estamos en el modo Avanzado, después de todo, aquí puede especificar un montón de condiciones diferentes para el inicio de la tarea, comportamiento de error, repeticiones y tiempos de espera. Recomiendo leer todo esto en los manuales o comentarlo más adelante al implementarlo en producción. Por ahora, establezcamos n1 en Reglas de detención para que la tarea se detenga tan pronto como se complete en nuestra primera unidad.

¡Completamos lo necesario, y solo queda lanzar!

TR-069 en Mikrotik. Probando Freeacs como un servidor de configuración automática para RouterOS

Presione INICIO y espere. ¡Ahora el contador de dispositivos eliminados por el script sin depurar se ejecutará rápidamente! Por supuesto que no. Tales tareas se asignan durante mucho tiempo, y esta es su diferencia con los scripts, Ansible, etc. Las propias unidades solicitan tareas en un horario o 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 comenzaría esta tarea e iría a pescar.

Vamos. Reinicie el enrutador ya o reinicie el cliente TR-069. Todo debería ir sobre ruedas y el Sr. White obtendrá una nueva vlan. Y nuestra tarea de regla de detención pasará al estado EN PAUSA. Es decir, todavía se puede reiniciar o cambiar. Si presiona FINALIZAR, la tarea se cancelará en el archivo.

4.4 Actualización del 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 está acostumbrado a esto.
Ahora lo haremos al estilo de rápido y sucio, 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 usar ese truco e instalar módulos que son opcionales para Unit Type solo con scripts.

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

¡Resultó que la longitud de la ruta a los paquetes es muy importante! Cuando trato 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 con el recurso, enviando registros TRANSFERCOMPLETE repetidos a tr-069. Y desperdicié algunas células nerviosas tratando de descubrir qué estaba mal. Por lo tanto, mientras lo ponemos en la raíz, hasta la aclaración

Entonces, deberíamos tener tres archivos npk disponibles a través de http. lo tengo asi

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, esto debe formatearse en un archivo xml con FileType = "1 imagen de actualización de firmware", que enviaremos a Mikrotik. Que el nombre sea ros.xml

Lo hacemos de acuerdo a las instrucciones de 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>

Se nota una carencia Username/Password para acceder al servidor de descarga. Puede intentar ingresarlo como en el párrafo 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 a los funcionarios de Mikrotik, así como sobre la longitud máxima de la ruta a * .npk

vamos a lo conocido Files & Scripts, y cree un archivo SOFTWARE allí con Nombre:ros.xml, Nombre de destino:ros.xml y Versión:6.45.6
¡Atención! La versión debe especificarse aquí exactamente en el formato en el que se muestra en el dispositivo y se pasa en el parámetro System.X_FREEACS-COM.Device.SoftwareVersion.

Seleccionamos nuestro archivo xm para cargar y listo.

TR-069 en Mikrotik. Probando Freeacs como un servidor de configuración automática para RouterOS

Ahora tenemos muchas formas de actualizar el dispositivo. A través del Asistente en el menú principal, a través de Aprovisionamiento Avanzado y tareas con el tipo SOFTWARE, o simplemente vaya a la configuración de la unidad y haga clic en Actualizar. Elijamos la forma más fácil, de lo contrario, el artículo se hincha.

TR-069 en Mikrotik. Probando Freeacs como un servidor de configuración automática para RouterOS

Presionamos el botón, iniciamos provisión y listo. El programa de prueba se ha completado. Ahora podemos hacer más con mikrotik.

5. Заключение

Cuando comencé a escribir, primero quería describir la conexión de un 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 profundizaba en los materiales, pensé que para aquellos que conectaron el Mikrotik, ningún teléfono sería aterrador para el autoaprendizaje.

En principio, Freeacs, que probamos, ya se puede usar en producción, pero para esto necesita configurar la seguridad, SSL, debe configurar microtics para la configuración automática después del reinicio, debe depurar la adición correcta de Unit Type, desmontar el trabajo de webservices y fusion shell, y mucho más. ¡Prueba, inventa y escribe una secuela!

Todos, ¡gracias por su atención! Estaré encantado de correcciones y comentarios!

Lista de materiales usados ​​y enlaces útiles:

Un hilo del foro que encontré cuando comencé a buscar sobre el tema.
TR-069 Protocolo de gestión de WAN CPE Enmienda 6
wiki de freeacs
Parámetros tr-069 en Mikrotik y su correspondencia con los comandos del terminal

Fuente: habr.com