Controllr/Manual/Integração Manual

De BrByte Wiki
< Controllr‎ | Manual
Revisão de 10h40min de 25 de julho de 2020 por Miguel (discussão | contribs)

Integração Mikrotik

Neste tópico, iremos demonstrar como configurar a interface entre o Controllr e o Mikrotik de modo manual nas configurações do Mikrotik.

Tendo em vista que o Controllr já esteja instalado na sua rede, continue a ler o tópico, caso esteja tendo dificuldade na instalação do Controllr, siga o manual no link: https://controllr.brbyte.com/about/install

Configuração no Mikrotik

IP > POOL

Definindo uma nova Pool.


  • Name: Defina um nome que desejar para a Pool.
  • Address: Defina uma faixa de IP em que deseja que a Pool irá operar.
  • Next Pool: None.
MikrotikIpPoolCTRL.jpg
  • Ao término das configurações clique em OK.


PPP > Profiles > Novo

Definindo um novo profile PPP.


  • Name: Defina um nome para o Seu profile
  • Local Address: Defina um gateway de IP local, ou selecione o ip desejado ou a Pool que já havia configurado anteriormente, fica a critério do usuário.
  • Next Pool: Selecione a Pool que você definiu para o PPPoE.
MikrotikPPP-ProfilesControllr.jpg
  • Ao término das configurações clique em OK.


PPP > PPPoE Server

Criando um novo Servidor PPPoE.


  • Name: Defina um nome para o Seu profile Interface: Selecione a interface da sua RB em que irá se conectar ao servidor PPPoE.
  • Max MTU: Padrão.
  • Max MRU: Padrão.
  • MRRU: Padrão.
  • Keepalive Timeout: 120
  • Default Profile: Selecione o perfil PPP criado anteriormente.
  • Desmarque as opções mschap1 e mschap2.
MikrotikPPP-PPPoEServers Controllr.jpg
  • Ao término das configurações clique em OK.

PPP > Secrets > PPP Authentication & Accounting

Habilite o servidor Radius para autenticação PPP.


  • Use Radius
  • Accounting
  • Interim Update: 1 minuto.
MikrotikPPPSecretsPPPAuthentication&AccountingControllr.jpg
  • Ao término das configurações clique em OK.

Radius

Criando um novo servidor Radius.


  • Service: Deixe marcado apenas a opção "ppp".
  • Address: Defina o endereço de IP do servidor Controllr.
  • Src. Address: 0.0.0.0 <- Alterar pelo ip do concentrador cadastrado em radius NAS, no exemplo da imagem 192.168.191.1
  • Timeout: 3000
MikrotikRadiusControllr.jpg
  • Ao término das configurações clique em OK.

Criando um Radius Server

Para criar um servidor Radius NAS em seu concentrador


Controllr manual integracao manual radius novo.png
  • 1 - Address: IP do servidor Controllr (Radius) para onde será enviadas as requisições.
  • 2 - Secret: Esta é a "senha" do Radius esta senha deve estar compatível com a Secret cadastrada no App Radius Nas
  • 3 - Src. Address: Endereço de origem (Src = Sorce) identifica o "Remetente" deste pacote, deixar o IP do Concentrador ou Loopback quando houver (mais informações abaixo).


O protocolo RADIUS não aceita caracteres especiais tais como @ #$%¨&*`´¹²£¢¬ e outros.

Recomendamos TimeOut entre 3000 para as menores redes e 9000 para as redes mais robustas.

Para ativar o Incoming e verificar as requisições recebidas via protocolo Radius


Controllr manual integracao manual radius incoming.png


  • 1 - Accept: Aceitar pacotes Radius.
  • 2 - Port: Recomendamos a porta padrão 3799
  • 3 - Requets: Requisições realizadas
  • 4 - Bad Requests: Requisições ruins (não aceitas)
  • 5 - Acks: Pedidos (requisições recebidas)

NAS no Controllr

Após criar o Radius Server no concentrador deve-se adicionar o Radius NAS ao Controllr

Controllr manual integracao manual radius novo controllr.png


coloque o IP do concentrador e a secret determinada no Radius do MK


Testando Radius NAS

O teste de comunicação via protocolo Radius é simples e rápido, para isso, busque um cliente que esteja online e conectado via Radius/Remoto


Controllr manual integracao manual radius teste.png


  • 1 - NAS-IP: IP do "Concentrador" recebido no Accounting. ATENÇÃO: Chegando com IP diferente, provável NAT (outro router) trocando IP "no caminho".
  • 2 - R ou L: Informação de conexão deste usuário. "R" = Autenticado Remotamente (Controllr) "L" = Autenticado Local (Secret do MK).


Utilizando-se do App Sessões Online no Controllr utilize do botão Desconectar para enviar uma requisição de desconexão para o concentrador.


Controllr manual integracao manual radius teste desconect.png


Após utilizar o botão de desconexão o Controllr solicita a desconexão deste Cliente utilizando-se do protocolo Radius pode-se então verificar que o cliente foi desconectado.


Controllr manual integracao manual radius teste desconect verificacao.png
  • 1 - : Notamos que o cliente foi desconectado.
  • 2 - Requests: Requisição radius recebida foi aceita pelo MK.
  • 3 - Bad Requests: Requisição negada, normalmente nega-se uma requisição quando o IP de origem deste pacote não é o informado em "Address". A troca de IP ocorre normalmente devido a NAT em roteadores "no meio do caminho", deve-se então verificar com técnico/consultor de rede.

Com a desconexão bem sucedida significa que a comunicação Radius esta funcionando corretamente.


Possíveis Erros

Não Apresenta Clientes Online

Clientes não aparecem na lista de online no App Clientes Online, para isso deve-se habilitaro “Use Radius e Accounting”


Controllr manual integracao manual pppauthentication.png
  • 1 - Use Radius: Usar radius para autenticação.
  • 2 - Accounting: Ativar o accouting.
  • 3 - Interim Update: Tempo de envio das informações de "Interim Update".

O status "ONLINE/OFFLINE" do Controllr é realizado de acordo com o **"Interim Update"** o Accounting é responsavél por armazenadar não só o **status da conexão** (online/offline) como também consumo, informações de tráfego entre outras.

O **Interim Update** é o “tempo” que será realizada o envio do **MK** para o Controllr, ou seja, o Controllr apenas recebe as informações de Accounting quando “tempo” (interim update) completa o ciclo, usando para isto a conexão **RADIUS** sendo assim o Radius NAS deve estar devidamente configurado.


Número Elevado de 'Bad Request'

A Requisição Negada (Bad Request) pode ter algumas origens diferentes.


Controllr manual integracao manual bad requests.png


A mais comuns são quando a Secret(senha) incorreta ou/e requisição do Controllr chega com outro IP (alterado em outro router).

Para descobrir qual o IP chegando no Concentrador utilize a seguinte regra para adicionar as requisições na porta 3977 a Address List 'Radius_log'

   /ip firewall filter
   add action=add-src-to-address-list address-list=Radius_log chain=input dst-port=3799 protocol=udp

Normalmente este erro ocorre quando o provedor possui vários roteadores na rede e um deles esta realizando um NAT "geral" este NAT normalmente destinado a troca do IP para "público" (NAT de Saída) sempre recomendamos nesta NAT selecionar o OUT INTERFACE (Interface de Saída) assim realizando o NAT somente dos pacotes que tem como destino a interface de saída, ou seja, com destino a INTERNET. Os pacotes que permaneceram dentro da rede, com destino a outras interfaces não deve ser "mascarado".


Online no MK e Offline no Controllr

O status "ONLINE/OFFLINE" do Controllr é realizado de acordo com o **"Interim Update"**


MikrotikPPPSecretsPPPAuthentication&AccountingControllr.jpg


O Accounting é responsável por armazenar não só o **status da conexão** (online/offline) mas também a consumo, informações de tráfego entre outras.


O Interim Update é o “tempo” que será realizada o envio do MK para o Controllr, ou seja, o Controllr apenas recebe as informações de Accounting quando “tempo” (interim update) completa o ciclo, usando para isto a conexão RADIUS sendo assim o Radius NAS deve estar devidamente configurado.

1 - Verifique a ativação e a “timing” do interim update 2 - Realize os testes da comunicação Radius


Regras

Para concluir a integração aplique as regras de acesso, bloqueio e pendencia conforme nossa Wiki para Regras de Bloqueio e Pendencia lembre-se de trocar os IPs de exemplo pelos IPs de sua rede.


Script - Automático

{
######## Substituir os VALUE="XXXX" com as informações corretas, para a integração do MK com o Controllr ########
:global name="IPCTLR" value="192.168.10.2";
:global name="IPCTLRPUBLIC" value="177.52.73.7";
:global name="RADIUSNAS" value="192.168.10.1";
:global name="PINCOMING" value="3799";
#################################################################################################################
:log warning "Iniciando configuracao do Controllr no MK";
:delay 5s; 
:log warning "Criando o Radius do Controllr";
:if ([/radius find comment~"####CONTROLLR####"] !="") do={:log warning "ja existe um Radius cadastrado";} else={:log warning "Nao existe nenhum Radius cadastrado"; /radius add address=$IPCTLR comment="####CONTROLLR####" secret=brbyte service=ppp src-address=$RADIUSNAS timeout=3s disabled=no};
:delay 5s;
:log warning "Habilitando o Incoming";
/radius incoming set accept=yes port=$PINCOMING;
:delay 5s;
:log warning "Setando as regras do Filter rules";
:if ([/ip firewall filter find comment~"CTLR-MSG"] !="") do={:log warning "Ja existe Firewall criadas do Controllr";} else={:log warning "Nao esta presente nenhum firewall do Controllr"; /ip firewall filter {
remove [find comment=Controllr]
remove [find comment=CTLR-MSG-BLOCKED]
add action=accept chain=forward comment="CONTROLLR" dst-port=7840 protocol=tcp
add action=drop chain=forward   comment="CTLR-MSG-BLOQUEIO"     disabled=no dst-address-list=!released_ips dst-port=!53 protocol=udp src-address-list=brb-block
add action=drop chain=forward   comment="CTLR-MSG-BLOQUEIO"     disabled=no dst-address-list=!released_ips protocol=tcp src-address-list=brb-block
add action=drop chain=forward   comment="CTLR-MSG-CANCELAMENTO" disabled=no dst-address-list=!released_ips dst-port=!53 protocol=udp src-address-list=brb-cancel
add action=drop chain=forward   comment="CTLR-MSG-CANCELAMENTO" disabled=no dst-address-list=!released_ips protocol=tcp src-address-list=brb-cancel
add action=drop chain=forward   comment="CTLR-MSG-NOTIFICACAO"  disabled=no dst-address-list=!released_ips dst-port=!53 protocol=udp src-address-list=brb-block-read-notification
add action=drop chain=forward   comment="CTLR-MSG-NOTIFICACAO"  disabled=no dst-address-list=!released_ips protocol=tcp src-address-list=brb-block-read-notification};
};
:delay 5s;
:log warning "Setando as regras de redirecionamento - NAT para acessar o seu Controllr fora da rede";
:if ([/ip firewall nat find comment~"ACESSO CONTROLLR"] !="") do={:log warning "Ja existe NAT criadas do Controllr";} else={:log warning "nao esta presente nenhuma nat do Controllr"; /ip firewall nat {
add action=dst-nat chain=dstnat comment="ACESSO CONTROLLR WEB"     dst-port=8080 protocol=tcp to-addresses=$IPCTLR to-ports=8080
add action=dst-nat chain=dstnat comment="ACESSO CONTROLLR SSH"     dst-port=2229 protocol=tcp to-addresses=$IPCTLR to-ports=2229
add action=dst-nat chain=dstnat comment="ACESSO CONTROLLR SERVICO" dst-port=8083 protocol=tcp to-addresses=$IPCTLR to-ports=8083
add action=dst-nat chain=dstnat comment="ACESSO CONTROLLR HOTSITE" disabled=yes dst-address=$IPCTLRPUBLIC dst-port=80 protocol=tcp to-addresses=$IPCTLR to-ports=80};
};
#OBS: O redirecionamento para o Hotsite está desabilitado, pois **dst-address** tem que ser o seu IP publico, para poder acessar o Hotsite dentro e fora da rede pelo IP publico.
:delay 5s;
:log warning "Redirecionamento para as telas de pendencias";
:if ([/ip firewall nat find comment~"CTLR-MSG"] !="") do={:log warning "Ja existe NAT criadas do Controllr";} else={:log warning "Nao esta presente nenhuma nat do Controllr"; /ip firewall nat{
remove [find comment=CTLR-MSG-BLOCKED-HTTP-80]
remove [find comment=CTLR-MSG-BLOCKED-HTTPS-443]
remove [find comment=CTLR-MSG-PENDING-HTTP-80]
remove [find comment=CTLR-MSG-PENDING-HTTPS-443]
add action=dst-nat chain=dstnat comment="CTLR-MSG-NOTIFICACAO"  disabled=no dst-address-list=!released_ips dst-port=80 protocol=tcp src-address-list=brb-block-read-notification to-addresses=$IPCTLR to-ports=8090
add action=dst-nat chain=dstnat comment="CTLR-MSG-REDUCAO-VEL"  disabled=no dst-address-list=!released_ips dst-port=80 protocol=tcp src-address-list=brb-pendency                to-addresses=$IPCTLR to-ports=8091
add action=dst-nat chain=dstnat comment="CTLR-MSG-BLOQUEIO"     disabled=no dst-address-list=!released_ips dst-port=80 protocol=tcp src-address-list=brb-block                   to-addresses=$IPCTLR to-ports=8092
add action=dst-nat chain=dstnat comment="CTLR-MSG-CANCELAMENTO" disabled=no dst-address-list=!released_ips dst-port=80 protocol=tcp src-address-list=brb-cancel                  to-addresses=$IPCTLR to-ports=8093};
};
:delay 5s;
:log warning "Criando address list";
:if ([/ip firewall address-list find list=released_ips] !="") do={:log warning "Removendo released_ips antigos"; /ip firewall address-list remove [find list=released_ips]; /ip firewall address-list {
add address=$IPCTLR       list=released_ips
add address=8.8.8.8       list=released_ips
add address=8.8.4.4       list=released_ips
add address=$IPCTLRPUBLIC list=released_ips};} else={:log warning "inserindo o released ips"; /ip firewall address-list {
add address=$IPCTLR       list=released_ips
add address=8.8.8.8       list=released_ips
add address=8.8.4.4       list=released_ips
add address=$IPCTLRPUBLIC list=released_ips};
};
:delay 5s;
:log warning "Configurando Scheduler - Agendador";
:if ([/system scheduler find name="CTLR-MSG-REDUCAO-VEL"] !="") do={:log warning "Ja existe agendador criado";} else={:log warning "Nao existe agendador criado"; /system scheduler {
remove [find name=Pendency]
add interval=2m name="CTLR-MSG-REDUCAO-VEL" on-event=":foreach ip in=[/ip firewall address-list find list=\"brb-pendency\"] do={/ip firewall address-list remove \$ip}" policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive start-time=startup};
};
:delay 5s;
:log warning "Habilitando a porta API do MK";
/ip service set api address="" disabled=no port=8728;
:delay 5s;
:log warning "Setando o Interim Update";
/ppp aaa set interim-update=1m use-radius=yes;
:delay 5s;
:log warning "Configuracoes setadas com sucesso";
}


Video