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

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

O objetivo do artigo é incentivar os colegas a abandonar o gerenciamento de dispositivos de rede usando terríveis ancinhos e muletas, na forma de scripts auto-escritos, Cara, Ansible, etc. E, nesse sentido, causar fogos de artifício e grande alegria nas praças.

0. Escolha


Por que freeacs, não genie-acs, mencionados no mikrotik-wiki , são mais animados?
Porque, de acordo com genie-acs do mikrotik, existem publicações dos espanhóis. Aqui estão os pdf e o vídeo da MUM do ano passado. As caravanas automáticas nos slides são legais, mas eu gostaria de me afastar do conceito de escrever scripts, executar scripts, executar scripts ...

1. Instale freeacs


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

O sistema será um teste, por isso não seremos inteligentes e usaremos o script de instalação gentilmente fornecido.

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á acessar imediatamente a interface da Web na máquina IP, com as credenciais admin / freeacs


Aqui está uma interface minimalista tão agradável e como tudo foi legal e rápido

2. Configuração inicial de freeacs


A unidade de controle básica do ACS é uma unidade ou CPE (Customer Premises Equipment). E o mais importante, o que precisamos para gerenciar unidades é o tipo de unidade, ou seja, modelo de equipamento que define um conjunto de parâmetros personalizáveis ​​da unidade e seu software. Mas enquanto não sabemos como obter o novo tipo de unidade, é melhor perguntar à própria unidade ativando o Modo de descoberta.

Na produção, esse modo é absolutamente impossível de usar, mas precisamos iniciar o mecanismo em breve e ver os recursos do sistema. Todas as configurações básicas são armazenadas em / opt / freeacs- *. Portanto, abra

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

nós encontramos

 discovery.mode = false 

e mude para

 discovery.mode = true 

Além disso, gostaríamos de aumentar o tamanho máximo de arquivo com o qual o nginx e o mysql trabalharão. Para o mysql, adicione a linha em /etc/my.cnf

 max_allowed_packet=32M 

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

 client_max_body_size 32m; 

para a seção http. Caso contrário, podemos trabalhar com firmware não mais que 1M.

Nós reiniciamos e estamos prontos para trabalhar com dispositivos.

E no papel do dispositivo (CPE), teremos o hAP kid ACAP lite .

Antes da conexão de teste, é aconselhável configurar manualmente o CPE para a configuração mínima de trabalho, para que os parâmetros que você deseja configurar no futuro não estejam vazios. Para o roteador, você pode habilitar minimamente o cliente dhcp no ether1, instalar o pacote tr-069client e definir senhas.

3. Nós conectamos o Mikrotik


É recomendá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 o WAN MAC - não acredite. Alguém usa um par de login / senha comum para todos - ignore-os.

Abrimos o log tr-069 para monitorar as "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 serial do sistema> routerboard)
Senha: 123456 (não é necessário para a descoberta, mas a ser)
Intervalo de informações periódicas que não mudamos. Emitiremos essa configuração por meio de nosso ACS

Abaixo estão as configurações para inicialização da conexão remota, mas não pude trabalhar com o mikrotik para fazer isso acontecer. Embora a solicitação remota funcione com telefones prontos para uso. Será necessário entender.



Depois de clicar no botão Aplicar, os dados serão trocados no terminal e, na interface da Web do Freeacs, você poderá ver nosso roteador com o tipo de unidade criado automaticamente "hAPaclite".



O roteador está conectado. Você pode ver o tipo de unidade criado automaticamente. Abra o Easy Provisioning > Unit Type > Unit Type Overview > hAPaclite . O que há não só! Até 928 parâmetros (eu espiei no shell). Seja muito ou pouco, descobriremos mais tarde, mas por enquanto apenas uma rápida olhada. É isso que o Tipo de unidade significa. 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. Configure o Mikrotik


É hora de baixar o guia da interface da web Este guia de 2011 é como uma garrafa de bom vinho envelhecido. Vamos abrir e sair para respirar.

E nós mesmos, na interface da web, clique no lápis ao lado de nossa unidade e entre no modo de configuração da unidade. É assim:



Examine brevemente o que é interessante nesta página:

Bloco de configuração da unidade

  • Perfil: este é o perfil dentro do Tipo de Unidade. A hierarquia é a seguinte: UnitType > Profile > Unit . Ou seja, podemos obter, por exemplo, perfis hAPaclite > hotspot e hAPaclite > branch , mas dentro do modelo do dispositivo

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

  • Freq / Spread: Quantas vezes por semana para entregar ±% de configuração para reduzir a carga no servidor e nos canais de comunicação. Por padrão, custa 7/20, ou seja, todos os dias ± 20% e uma dica como essa em segundos. Embora não faça sentido alterar a frequência de entrega, tk. haverá excesso de ruído nos logs e nem sempre a aplicação esperada das configurações

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

  • Parece uma história, como uma história, mas ao clicar no título, você acessa uma ferramenta conveniente de pesquisa de banco de dados, com regexp e buns

Bloco de parâmetros

O bloco maior e mais importante, onde, de fato, os parâmetros para esta unidade são definidos e lidos. Agora vemos apenas os parâmetros mais importantes do sistema, sem os quais o ACS não pode trabalhar com a unidade. Mas lembramos que temos 928 em Tipo de unidade. Vamos examinar todos os valores e decidir o que tudo isso come com o Mikrotik.

4.1 Leia os parâmetros


No bloco de provisionamento, clique no botão Ler tudo. No bloco - uma inscrição vermelha. A coluna do valor CPE (atual) aparece à direita. Nas configurações do sistema, o ProvisioningMode mudou para READALL.



E ... nada acontecerá, exceto a mensagem no 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 nos retângulos cinza alegres à direita
Se alguém quiser tomar um gole do antigo temperado - este modo no manual é descrito como 10.2 Modo de inspeção. Acende e funciona um pouco errado, mas a essência é descrita bastante



O modo READALL será desativado após 15 minutos, e tentaremos descobrir o que é útil e o que pode ser corrigido "on the fly" enquanto estiver nesse modo.

Você pode alterar endereços IP, ativar / desativar interfaces, regras de firewall, que têm comentários (caso contrário, uma bagunça completa), Wi-Fi, etc.

Ou seja, ainda não é possível configurar o mikrotik sane apenas com o TR-069. Mas você pode monitorar muito bem. Estatísticas disponíveis 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 uma maneira "natural". A primeira vítima será Device.DeviceInfo.X_MIKROTIK_SystemIdentity. Nós o encontramos nos parâmetros da unidade Todos. Aparentemente - não está definido. Isso significa que qualquer unidade pode ter qualquer identidade. Pare com isso!
Dê uma cutucada na coluna criar, defina o nome Mr.White e pressione o botão Atualizar parâmetros. O que vai acontecer a seguir você já adivinhou. Na próxima sessão de comunicação com a sede, o roteador deve alterar sua identidade.



Mas isso não é suficiente para nós. É bom ter sempre um parâmetro como o Identity sempre à mão ao procurar a unidade desejada. Nós cutucamos o nome do parâmetro e colocamos lá o daws Display (D) e Searchable (S). A chave de parâmetro muda para RWSD (lembre-se, nomes e chaves são definidos no nível mais alto do tipo de unidade)



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



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



4.3 Executamos scripts


Como descobrimos que não há como eles não, vamos executá-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
Afinal, ainda temos uma configuração de teste instalada por um script. Não esquece?

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


Reinicie o ACS e vá direto para Files & Scripts .



Mas o que estamos abrindo 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, portanto, antes de trabalhar com scripts e arquivos, você deve criar um perfil. Você pode chamá-lo como a "posição" do dispositivo.

Vamos fazer do nosso bebê um servidor de horário. Postagem decente com um pacote de software separado e um pequeno número de parâmetros. Vá para Easy Provisioning > Profile > Create Profile e crie um perfil de servidor de horas em Unit Type: hAPaclite . Não possuímos parâmetros no perfil padrão; portanto, não há nada para copiar Copiar parâmetros de: "não copie ..."



Ainda não há parâmetros, mas será possível definir os que mais tarde queremos ver em nossos servidores de horário, remendados do hAPaclite. Por exemplo, os endereços comuns dos servidores NTP.
Vamos para a configuração da unidade e para o perfil do servidor de horas

Finalmente, vamos a Files & Scripts , criamos scripts e aqui estamos esperando por pães surpreendentemente convenientes.

Para executar o script na unidade, precisamos selecionar Tipo: TR069_SCRIPT e o Nome e o Nome do destino devem ter a extensão .alter
Ao mesmo tempo, para scripts, diferentemente do software, você pode carregar o arquivo finalizado ou simplesmente gravá-lo / editá-lo no campo Conteúdo. Vamos tentar escrever aqui.

E para ver imediatamente o resultado - adicione um roteador vlan ao ether1

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



Dirija, clique em Upload e pronto. Nosso script vlan1.alter esperando nos bastidores.

Bem, dirigiu? Não. Também devemos adicionar um grupo ao nosso perfil. Os grupos não estão incluídos na hierarquia do equipamento, mas são necessários para procurar unidades no UnitType ou Profile e são necessários para executar scripts por meio do Advanced Provisioning. Geralmente, os grupos são associados a locais e têm uma estrutura aninhada. Vamos fazer um grupo na Rússia.



Imagine que fomos capazes de restringir a pesquisa de "Servidores de todos os tempos do mundo no hAPaclite" para "Servidores de todos os tempos da Rússia no hAPaclite". Ainda existe uma enorme camada de tudo de interessante nos grupos, mas não temos tempo. Já dirigi para scripts.

 Advanced Provisioning > Job > Create Job 



Como estamos no modo Avançado, aqui você pode especificar várias condições diferentes para iniciar o trabalho, comportamento de erro, novas tentativas e tempos limite. Eu recomendo ler tudo isso em manuais ou discuti-lo mais tarde ao implementá-lo na produção. Por enquanto, basta inserir n1 nas regras de parada para que a tarefa pare assim que for concluída em nossa 1 unidade.

Nós preenchemos o necessário, e resta apenas correr!



Pressione INICIAR e aguarde. Agora, o contador de dispositivos mortos por um script subdesenvolvido funcionará rapidamente! Não é claro. Essas tarefas são realizadas por um longo tempo, e essa é a diferença entre os scripts Ansible e assim por diante. As próprias unidades solicitam tarefas de acordo com um cronograma ou conforme aparecem na rede, o ACS mantém o controle de quais unidades já receberam tarefas, e como elas terminaram, e escreve isso nos parâmetros da unidade. Existe uma unidade em nosso grupo e, se houvesse 1001, o administrador executaria essa tarefa e iria pescar

Vamos lá. Reinicie o roteador já ou reinicie o cliente TR-069. Tudo deve correr bem e Mr.White receberá uma nova vlan. E nossa atribuição de regra de parada entrará no status PAUSADO. Ou seja, ainda pode ser reiniciado ou alterado. Se você clicar em FINISH, a tarefa será gravada no arquivo morto.

4.4 Atualizar software


Este é um ponto muito importante, pois o firmware micrótico é modular, mas a adição de módulos não altera a versão geral do firmware do dispositivo. Nosso ACS é normal e não estou acostumado.
Agora, faremos isso no estilo rápido e sujo 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 maneira.
Na produção, é melhor não aplicar esse truque e instalar módulos opcionais para o Tipo de Unidade apenas com scripts.

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

Como se viu, o comprimento do caminho para os pacotes é muito importante! Quando tentei 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 o recurso, dando ao TRFERCOMPLETE o log tr-069. E passei uma certa quantidade de células nervosas tentando descobrir o que estava errado. Portanto, enquanto colocamos na raiz, até o esclarecimento

Portanto, devemos ter três arquivos npk disponíveis via http. Acabou assim para mim

 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, ele precisa ser emitido no arquivo xml com FileType = "1 Firmware Upgrade Image", que alimentamos os microtics. Seja o nome ros.xml

Seguimos as instruções do 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> 

A falta de nome de Username/Password para acessar o servidor de download é impressionante. Você pode tentar inserir isso como na cláusula 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 ao Mikrotik oficial, bem como o tamanho máximo do caminho para * .npk

Vamos aos Files & Scripts conhecidos por nós e criamos um arquivo como SOFTWARE com Nome: ros.xml, Nome do destino: ros.xml e Versão: 6.45.6
Atenção! A versão aqui deve ser especificada no formato em que é exibida no dispositivo e passada no parâmetro System.X_FREEACS-COM.Device.SoftwareVersion .

Selecionamos nosso arquivo xm para download e pronto.



Agora, temos várias maneiras de atualizar seu dispositivo. Através do Assistente no menu principal, através de Provisionamento avançado e tarefas com o tipo SOFTWARE, ou simplesmente acesse a configuração da unidade e clique em Atualizar. Escolhemos a maneira mais fácil e, mesmo assim, o artigo está inchado.



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

5. Conclusão


Quando comecei a escrever, eu queria primeiro descrever a conexão do telefone IP e usar o exemplo dele para explicar o quão legal pode ser quando o tr-069 funciona com facilidade e sem esforço. Mas então, à medida que progredia e vasculhava os materiais, pensei que, para quem conectasse o Mikrotik, nenhum telefone seria assustador para estudos independentes.

Em princípio, os Freeacs que testamos já podem ser usados ​​na produção, mas para isso você precisa configurar a segurança, SSL, configurar o Mikrotik para configuração automática após a redefinição, depurar a adição correta do tipo de unidade, desmontar o trabalho de serviços da web e shell de fusão e muito mais. Tente, invente e escreva uma sequela!

Obrigado a todos pela atenção! Terei o maior prazer em alterações e comentários!

Lista de materiais utilizados e links úteis:

O tópico do fórum que encontrei no início das pesquisas sobre o tópico
TR-069 Alteração 6 do Protocolo de Gerenciamento da CPE WAN
Wiki Freeacs
Parâmetros tr-069 no Mikrotik e sua conformidade com os comandos do terminal

Atualização 10.13.2019:

Examinando as informações sobre o projeto FreeACS, deparei-me com um patch muito interessante proposto por poloneses que têm o FreeACS servindo dispositivos 20K.

O patch foi feito para diferentes versões de hardware, mas no caso de microtics, permitirá criar vários tipos de unidades para os mesmos roteadores com um conjunto diferente de módulos de software.
Por exemplo, hAPaclite-ntp, hAPaclite-ups, etc. E, consequentemente, para contornar a restrição "one model == one firmware"

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


All Articles