TR-069 no Mikrotik. Experimentando o Freeacs como um servidor de configuração automática para RouterOS

Neste artigo tentarei descrever passo a passo o processo de instalação de um servidor de teste para um projeto maravilhoso Freeacs para um estado totalmente operacional, e mostrar técnicas práticas para trabalhar com mikrotik: configuração através de parâmetros, execução de scripts, atualização, instalação de módulos adicionais, etc.

O objetivo do artigo é incentivar os colegas a desistirem de gerenciar dispositivos de rede usando terríveis ancinhos e muletas, na forma de scripts escritos por eles mesmos, Dude, Ansible, etc. quadrados.

0. A escolha

Por que freeacs e não genie-acs mencionados em mikrotik-wiki, quão mais vivo?
Porque segundo genie-acs com mikrotik existem publicações de espanhóis. Aqui estão eles pdf и vídeo da MUM do ano passado. Autocaricaturas em slides são legais, mas eu gostaria de fugir do conceito de escrever scripts, de rodar scripts, de rodar scripts...

1. Instale freeacs

Vamos instalá-lo no Centos7, e como os dispositivos transmitem muitos dados e o ACS trabalha ativamente com o banco de dados, não seremos gananciosos com recursos. Para um trabalho confortável, alocaremos 2 núcleos de CPU, 4 GB de RAM e 16 GB de armazenamento SSD RAID10 rápido. Instalarei freeacs no contêiner Proxmox VE lxc e você poderá trabalhar em qualquer ferramenta que for conveniente para você.
Certifique-se de definir a hora correta em sua máquina ACS.

O sistema será de teste, então não vamos dividir os cabelos e apenas usar o script de instalação gentilmente fornecido como está.

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

Assim que o script for concluído, você poderá entrar imediatamente na interface web através do IP da máquina, com credenciais de admin/freeacs

TR-069 no Mikrotik. Experimentando o Freeacs como um servidor de configuração automática para RouterOS
Esta é uma interface minimalista tão legal, e como tudo ficou legal e rápido

2. Configuração inicial de freeacs

A unidade básica de gerenciamento do ACS é a unidade ou CPE (Customer Premises Equipment). E a coisa mais importante que precisamos para gerenciar unidades é o seu tipo de unidade, ou seja, um modelo de equipamento que define um conjunto de parâmetros configuráveis ​​de uma unidade e seu software. Mas embora não saibamos como criar corretamente um novo tipo de unidade, seria melhor perguntar à própria unidade sobre isso ativando o modo Discovery.

Este modo não pode absolutamente ser usado em produção, mas precisamos ligar o motor o mais rápido possível e ver as capacidades do sistema. Todas as configurações básicas são armazenadas em /opt/freeacs-*. Portanto, abrimos

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

, nós achamos

discovery.mode = false

e mude para

discovery.mode = true

Além disso, gostaríamos de aumentar os tamanhos máximos de arquivo com os quais o nginx e o mysql funcionarão. Para mysql, adicione a linha em /etc/my.cnf

max_allowed_packet=32M

, e para nginx, adicione a /etc/nginx/nginx.conf

client_max_body_size 32m;

para a seção http. Caso contrário, poderemos trabalhar com firmware não superior a 1M.

Reinicializamos e estamos prontos para trabalhar com os dispositivos.

E no papel de dispositivo (CPE) teremos um bebê trabalhador hAP AC Lite.

Antes de realizar uma conexão de teste, é aconselhável configurar manualmente o CPE para uma configuração mínima de funcionamento para que os parâmetros que deseja configurar no futuro não fiquem vazios. Para um roteador, o mínimo que você pode fazer é habilitar o cliente dhcp em ether1, instalar o pacote tr-069client e definir senhas.

3. Conecte o Mikrotik

É aconselhável conectar todas as unidades usando um número de série válido como login. Então tudo ficará claro para você nos logs. Alguém aconselha usar WAN MAC - não acredite. Se alguém usar um par login/senha comum a todos, evite-o.

Abra o log tr-069 para monitorar “negociações”

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

Abra o winbox, item de menu TR-069.
URL do ACS: http://10.110.0.109/tr069/prov (substitua pelo seu IP)
Nome de usuário: 9249094C26CB (copie o número de série do sistema> placa do roteador)
Senha: 123456 (não necessária para descoberta, mas necessária)
Não alteramos o intervalo de informações periódicas. Iremos emitir esta configuração através do nosso ACS

Abaixo estão as configurações para inicialização remota da conexão, mas não consegui fazer o mikrotik funcionar com isso. Embora a solicitação remota funcione imediatamente com telefones. Teremos que descobrir isso.

TR-069 no Mikrotik. Experimentando o Freeacs como um servidor de configuração automática para RouterOS

Após clicar no botão Aplicar, os dados serão trocados no terminal, e na interface web do Freeacs você poderá ver nosso roteador com o Unit Type “hAPaclite” criado automaticamente.

TR-069 no Mikrotik. Experimentando o Freeacs como um servidor de configuração automática para RouterOS

O roteador está conectado. Você pode consultar o tipo de unidade criado automaticamente. Abertura Easy Provisioning > Unit Type > Unit Type Overview > hAPaclite. O que não está aí! Até 928 parâmetros (dei uma olhada no shell). Seja muito ou pouco, descobriremos mais tarde, mas por enquanto vamos apenas dar uma olhada rápida. Isto é o que significa Tipo de Unidade. Esta é uma lista de parâmetros suportados com chaves, mas sem valores. Os valores são definidos nos níveis abaixo – Perfis e Unidades.

4. Configurar Mikrotik

É hora de baixar guia de interface web Este manual de 2011 é como uma garrafa de bom vinho envelhecido. Vamos abri-lo e deixá-lo respirar.

E nós mesmos, na interface web, clicamos no lápis ao lado da nossa unidade e entramos no modo de configuração da unidade. Se parece com isso:

TR-069 no Mikrotik. Experimentando o Freeacs como um servidor de configuração automática para RouterOS

Vejamos brevemente o que há de interessante nesta página:

Bloco de configuração da unidade

  • Perfil: Este é o perfil dentro do Tipo de Unidade. A hierarquia é assim: UnitType > Profile > Unit. Ou seja, podemos criar, por exemplo, perfis hAPaclite > hotspot и hAPaclite > branch, mas dentro do modelo do dispositivo

Bloco de provisionamento com botões
As dicas de ferramentas sugerem que todos os botões no bloco Provisioning podem aplicar instantaneamente a configuração por meio de ConnectionRequestURL. Mas, como falei acima, isso não funciona, então após apertar os botões você precisará reiniciar o cliente tr-069 no mikrotik para iniciar manualmente o provisionamento.

  • Freq/Spread: Quantas vezes por semana entregar a configuração ±% para reduzir a carga no servidor e nos canais de comunicação. Por padrão é 7/20, ou seja, todos os dias ± 20% e uma dica de como está em segundos. Não adianta mudar a frequência de entrega ainda, porque... haverá ruído extra nos logs e as configurações nem sempre serão aplicadas conforme o esperado

Bloco de histórico de provisionamento (últimas 48 horas)

  • Na aparência, a história é igual a uma história, mas ao clicar no título você é levado a uma conveniente ferramenta de pesquisa de banco de dados, com regexp e brindes

Bloco de parâmetros

O maior e mais importante bloco, onde, de fato, são definidos e lidos os parâmetros de uma determinada unidade. Agora vemos apenas os parâmetros mais importantes do sistema, sem os quais o ACS trabalha com a unidade é impossível. Mas lembramos que em nosso Unit Type os temos - 928. Vamos ver todos os significados e decidir o que todo mundo come com o Mikrotik.

4.1 Lendo os parâmetros

No bloco Provisionamento, clique no botão Ler tudo. Há uma inscrição vermelha no bloco. Uma coluna aparecerá à direita Valor CPE (atual). Nos parâmetros do sistema, ProvisioningMode mudou para READALL.

TR-069 no Mikrotik. Experimentando o Freeacs como um servidor de configuração automática para RouterOS

E... nada acontecerá exceto uma mensagem em System.X_FREEACS-COM.IM.Message Kick failed at....

Reinicie o cliente TR-069 ou reinicie o roteador e continue atualizando a página do navegador até obter os parâmetros à direita em alegres retângulos cinza
Se alguém quiser tomar um gole do vinho envelhecido, este modo é descrito no manual como 10.2 Modo de inspeção. Liga e funciona de maneira um pouco diferente, mas a essência é descrita muito bem

TR-069 no Mikrotik. Experimentando o Freeacs como um servidor de configuração automática para RouterOS

O modo READALL será desligado após 15 minutos e tentaremos descobrir o que é útil aqui e o que pode ser corrigido “on the fly” enquanto estivermos neste modo.

Você pode alterar endereços IP, ativar/desativar interfaces, regras de firewall, que possuem comentários (caso contrário, é uma bagunça completa), Wi-Fi e assim por diante.

Ou seja, ainda não é possível configurar o mikrotik de forma saudável apenas usando o TR-069. Mas você pode monitorar isso muito bem. Estão disponíveis estatísticas sobre interfaces e seu status, memória livre, etc.

4.2 Parâmetros de entrega

Vamos agora tentar entregar os parâmetros ao roteador, via tr-069, de forma “natural”. A primeira vítima será Device.DeviceInfo.X_MIKROTIK_SystemIdentity. Encontramos isso nos parâmetros da unidade All. Como você pode ver, não está especificado. Isso significa que qualquer unidade pode ter qualquer identidade. Chega de tolerar isso!
Clique na caixa de seleção na coluna criar, defina o nome Mr.White e clique no botão Atualizar parâmetros. Você já adivinhou o que acontecerá a seguir. Durante a próxima sessão de comunicação com a sede, o roteador deverá alterar sua Identidade.

TR-069 no Mikrotik. Experimentando o Freeacs como um servidor de configuração automática para RouterOS

Mas isso não é suficiente para nós. É bom ter sempre em mãos um parâmetro como Identidade na hora de buscar a unidade desejada. Clique no nome do parâmetro e marque as caixas de seleção Display(D) e Searchable (S). A chave do parâmetro muda para RWSD (lembre-se, os nomes e as chaves são definidos no nível mais alto do tipo de unidade)

TR-069 no Mikrotik. Experimentando o Freeacs como um servidor de configuração automática para RouterOS

O valor agora não é apenas exibido na lista de pesquisa geral, mas também está disponível para pesquisa em Support > Search > Advanced form

TR-069 no Mikrotik. Experimentando o Freeacs como um servidor de configuração automática para RouterOS

Iniciamos o fornecimento e analisamos a Identidade. Olá Sr. Branco! Agora você não poderá alterar sua identidade enquanto o tr-069client estiver em execução

TR-069 no Mikrotik. Experimentando o Freeacs como um servidor de configuração automática para RouterOS

4.3 Executando scripts

Já que descobrimos que não podemos viver sem eles, vamos implementá-los.

Mas antes de começarmos a trabalhar com arquivos, precisamos corrigir a diretiva public.url no arquivo /opt/freeacs-tr069/config/application-config.conf
Ainda temos uma configuração de teste instalada com um script. Esqueceste-te?

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

Reinicializamos o ACS e vamos direto para Files & Scripts.

TR-069 no Mikrotik. Experimentando o Freeacs como um servidor de configuração automática para RouterOS

Mas o que se abre para nós agora pertence ao Tipo de Unidade, ou seja, globalmente para todos os roteadores hAP ac lite, seja um roteador de filial, hotspot ou capsman. Ainda não precisamos de um nível tão alto, então antes de trabalhar com scripts e arquivos, devemos criar um perfil. Você pode chamar isso de “dever” do dispositivo.

Vamos fazer do nosso bebê um servidor de horário. Uma posição decente com um pacote de software separado e um pequeno número de parâmetros. Vamos para Easy Provisioning > Profile > Create Profile e crie um perfil em Unit Type: hAPaclite servidor de tempo. Não tínhamos nenhum parâmetro no perfil padrão, então não há nada para copiar Copie os parâmetros de: “não copie...”

TR-069 no Mikrotik. Experimentando o Freeacs como um servidor de configuração automática para RouterOS

Ainda não existem parâmetros aqui, mas será possível definir aqueles que mais tarde desejaremos ver em nossos servidores de horário, montados a partir do hAPaclite. Por exemplo, endereços gerais de servidores NTP.
Vamos para a configuração da unidade e movê-la para o perfil timeserver

Finalmente vamos Files & Scripts, faça roteiros, e aqui pãezinhos incrivelmente convenientes nos aguardam.

Para executar o script em uma unidade, precisamos selecionar Tipo:TR069_SCRIPT а Nome и Nome do Alvo deve ter a extensão .alter
Ao mesmo tempo, para scripts, ao contrário do software, você pode baixar um arquivo pronto ou simplesmente escrevê-lo/editá-lo no campo Conteúdo. Vamos tentar escrever aqui mesmo.

E para que você possa ver imediatamente o resultado, vamos adicionar uma vlan ao roteador na ether1

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

TR-069 no Mikrotik. Experimentando o Freeacs como um servidor de configuração automática para RouterOS

Entre, pressione Escolher arquivo e pronto. Nosso roteiro vlan1.alter esperando nos bastidores.

Bem, vamos? Não. Também precisamos adicionar um grupo ao nosso perfil. Os grupos não estão incluídos na hierarquia de equipamentos, mas são necessários para pesquisar unidades em UnitType ou Profile e para executar scripts por meio do Advanced Provisioning. Normalmente, os grupos estão associados a locais e possuem uma estrutura aninhada. Vamos formar um grupo Rússia.

TR-069 no Mikrotik. Experimentando o Freeacs como um servidor de configuração automática para RouterOS

Você pode imaginar que conseguimos restringir a pesquisa de “Todos os servidores de horário do mundo no hAPaclite” para “Todos os servidores de horário da Rússia no hAPaclite”. Ainda há uma camada enorme de coisas interessantes com os grupos, mas não temos tempo. Vamos aos roteiros.

Advanced Provisioning > Job > Create Job

TR-069 no Mikrotik. Experimentando o Freeacs como um servidor de configuração automática para RouterOS

Como estamos, afinal, no modo Avançado, aqui você pode especificar várias condições diferentes para iniciar uma tarefa, comportamento em caso de erros, repetições e tempos limite. Recomendo ler tudo isso nos manuais ou discuti-lo posteriormente ao implementá-lo em produção. Por enquanto, colocaremos apenas n1 nas regras de Parada para que a tarefa pare assim que for concluída em nossa 1ª unidade.

Preenchemos as informações necessárias e só falta lançá-lo!

TR-069 no Mikrotik. Experimentando o Freeacs como um servidor de configuração automática para RouterOS

Pressione INICIAR e espere. Agora o contador de dispositivos eliminados pelo script mal depurado será executado rapidamente! Claro que não. Essas tarefas demoram muito e essa é a diferença em relação aos scripts, Ansible, etc. As próprias unidades solicitam tarefas de acordo com um cronograma ou conforme aparecem na rede. O ACS monitora quais unidades já receberam tarefas e como elas foram concluídas, e registra isso nos parâmetros da unidade. Há 1 unidade em nosso grupo, e se houvesse 1001 delas, o administrador iniciaria esta tarefa e iria pescar

Vamos. Reinicie o roteador ou reinicie o cliente TR-069. Tudo deverá correr bem e o Sr.White receberá uma nova vlan. E nossa tarefa de regra Stop mudará para o status PAUSED. Ou seja, ainda pode ser reiniciado ou alterado. Se você clicar em FINISH, a tarefa será arquivada

4.4 Atualizando o software

Este é um ponto muito importante, pois o firmware do Mikrotik é modular, mas adicionar módulos não altera a versão geral do firmware do dispositivo. Nosso ACS é normal e não está acostumado com isso.
Agora faremos isso de maneira rápida e suja e colocaremos o módulo NTP no firmware geral imediatamente, mas assim que a versão for atualizada no dispositivo, não poderemos adicionar outro módulo da mesma forma.
Na produção, é melhor não usar esse truque e instalar módulos opcionais para Unit Type apenas usando scripts.

Portanto, a primeira coisa que precisamos fazer é preparar pacotes de software com as versões e arquitetura necessárias e colocá-los em algum servidor web acessível. Para testes, qualquer pessoa que nosso Mr.White possa alcançar fará o teste, mas para produção é melhor montar um espelho de atualização automática do software necessário, o que não é assustador de colocar na web
Importante! Não esqueça de sempre incluir o pacote tr-069client em suas atualizações!

Acontece que o comprimento do caminho até os pacotes é muito importante! Quando tento usar algo como http://192.168.0.237/routeros/stable/mipsbe/routeros-mipsbe-6.45.6.npk, o mikrotik entrou em uma conexão cíclica com um recurso, enviando TRANSFERCOMPLETE repetido para o log tr-069. E gastei algumas células nervosas tentando descobrir o que estava errado. Portanto, por enquanto vamos colocar isso na raiz, até descobrirmos

Portanto devemos ter três arquivos npk disponíveis via http. Aconteceu assim comigo

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

Agora isso precisa ser formatado em um arquivo xml com FileType = “1 Firmware Upgrade Image”, que iremos alimentar no Mikrotik. Deixe o nome ser ros.xml

Fazemos isso de acordo com as instruções 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>

Há uma escassez evidente Username/Password para acessar o servidor de download. Você pode tentar inserir isto como no parágrafo A.3.2.8 do 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>

Ou pergunte diretamente aos funcionários do Mikrotik sobre o comprimento máximo do caminho para *.npk

Vamos para lugares que conhecemos Files & Scriptse crie um arquivo de SOFTWARE lá com Nome:ros.xml, Nome do alvo:ros.xml e Versão:6.45.6
Atenção! A versão aqui deve ser especificada exatamente no formato em que é exibida no dispositivo e passada no parâmetro System.X_FREEACS-COM.Device.SoftwareVersion.

Selecione nosso arquivo xm para fazer upload e pronto.

TR-069 no Mikrotik. Experimentando o Freeacs como um servidor de configuração automática para RouterOS

Agora temos muitas maneiras de atualizar o dispositivo. Através do Wizard no menu principal, através do Provisionamento Avançado e tarefas com o tipo SOFTWARE, ou simplesmente ir até a configuração da unidade e clicar em Upgrade. Vamos escolher o caminho mais simples, senão o artigo já está inchado.

TR-069 no Mikrotik. Experimentando o Freeacs como um servidor de configuração automática para RouterOS

Clique no botão, inicie o provisionamento e pronto. O programa de teste está concluído. Agora podemos fazer mais com o mikrotik.

5. Conclusão

Quando comecei a escrever, primeiro queria descrever a conexão de um telefone IP e usar seu exemplo para explicar como pode ser legal quando o tr-069 funciona com facilidade e sem esforço. Mas então, à medida que avançava e me aprofundava nos materiais, pensei que para quem conectou o Mikrotik, nenhum telefone seria assustador para o estudo independente.

A princípio o Freeacs, que testamos, já pode ser usado em produção, mas para isso você precisa configurar a segurança, SSL, você precisa configurar o Mikrotik para autoconfiguração após reset, você precisa depurar a adição correta do Unit Type, analise o trabalho de webservices e fusion shell e muito mais. Experimente, invente e escreva uma sequência!

A todos, obrigado pela atenção! Ficarei feliz em ver correções e comentários!

Lista de materiais utilizados e links úteis:

Tópico do fórum que encontrei quando comecei a pesquisar o tópico
Alteração 069 do protocolo de gerenciamento WAN CPE TR-6
Wiki Freeacs
Parâmetros tr-069 no Mikrotik e sua correspondência com comandos de terminal

Fonte: habr.com