Controllr/Manual/Regras de Bloqueio e Pendencia
Índice
Novas regras Build 100 2.0
{ ######## Substituir os VALUE="XXXX" com as informacoes corretas, para a integracao do MK com o Controllr ######## :global name="IPCTLR" value="192.168.142.22"; :global name="IPCTLRPUBLIC" value="192.168.142.22"; :global name="RADIUSNAS" value="198.18.3.1"; :global name="PINCOMING" value="3799"; # Se tiver perfis notifica ira usar CHECK "sim" :global name="CHECK" value="sim"; ################################################################################################################# :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"; :log warning "Removendo regras antigas"; /ip firewall filter { remove [find comment="CONTROLLR"] remove [find comment~"CTLR-MSG"] remove [find comment="Controllr"]}; :log warning "Recriando os filter rules"; /ip firewall filter { add action=accept chain=forward comment="CONTROLLR" dst-port=7840 protocol=tcp add action=drop chain=forward comment="CTLR-MSG-ALERT" disabled=no dst-address-list=!released_ips dst-port=!53 protocol=udp src-address-list="brb-alert-notice" add action=drop chain=forward comment="CTLR-MSG-ALERT" disabled=no dst-address-list=!released_ips protocol=tcp src-address-list="brb-alert-notice" add action=drop chain=forward comment="CTLR-MSG-BLOCK" disabled=no dst-address-list=!released_ips dst-port=!53 protocol=udp src-address-list="brb-block-notice" add action=drop chain=forward comment="CTLR-MSG-BLOCK" disabled=no dst-address-list=!released_ips protocol=tcp src-address-list="brb-block-notice" add action=drop chain=forward comment="CTLR-MSG-CANCEL" disabled=no dst-address-list=!released_ips dst-port=!53 protocol=udp src-address-list="brb-cancel-notice" add action=drop chain=forward comment="CTLR-MSG-CANCEL" disabled=no dst-address-list=!released_ips protocol=tcp src-address-list="brb-cancel-notice" add action=drop chain=forward comment="CTLR-MSG-BLOCK" disabled=no dst-address-list=!released_ips dst-port=!53 protocol=udp src-address-list="brb-block-auth" add action=drop chain=forward comment="CTLR-MSG-BLOCK" disabled=no dst-address-list=!released_ips protocol=tcp src-address-list="brb-block-auth" add action=drop chain=forward comment="CTLR-MSG-CANCEL" disabled=no dst-address-list=!released_ips dst-port=!53 protocol=udp src-address-list="brb-cancel-auth" add action=drop chain=forward comment="CTLR-MSG-CANCEL" disabled=no dst-address-list=!released_ips protocol=tcp src-address-list="brb-cancel-auth" add action=drop chain=forward comment="CTLR-MSG-DISABLE" disabled=no dst-address-list=!released_ips dst-port=!53 protocol=udp src-address-list="brb-disabled" add action=drop chain=forward comment="CTLR-MSG-DISABLE" disabled=no dst-address-list=!released_ips protocol=tcp src-address-list="brb-disabled"}; :delay 5s; #OBS Essa regra serve para saber qual o IP do seu Controllr, que está vindo com o Comando de desconexao. :log warning "Regra do radius log"; :log warning "Removendo regra do log antiga"; /ip firewall filter remove [find comment="CTLR-RADIUS-LOG"]; :log warning "Recriando regra do radiuslog"; /ip firewall filter add action=add-src-to-address-list address-list=radius_log address-list-timeout=30m chain=input comment=CTLR-RADIUS-LOG dst-port=3799 protocol=udp; :log warning "Setando as regras de redirecionamento - NAT para acessar o seu Controllr fora da rede"; :log warning "Removendo redirecionamentos antigos"; /ip firewall nat remove [find comment~"ACESSO"]; :log warning "Recriando os redirecionamentos"; :if ([$IPCTLRPUBLIC] =$IPCTLR) do={:log warning "IP da maquina e igual o ip publico. Nao tem dst-nat"} else={/ip firewall nat { add action=dst-nat chain=dstnat comment="CTLR-ACESSO-WEB-HTTP" dst-port=8080 protocol=tcp to-addresses=$IPCTLR to-ports=8080 add action=dst-nat chain=dstnat comment="CTLR-ACESSO-WEB-HTTPS" dst-port=8443 protocol=tcp to-addresses=$IPCTLR to-ports=8443 add action=dst-nat chain=dstnat comment="CTLR-ACESSO-SSH" dst-port=2229 protocol=tcp to-addresses=$IPCTLR to-ports=2229 add action=dst-nat chain=dstnat comment="CTLR-ACESSO-SERVICO" dst-port=8083 protocol=tcp to-addresses=$IPCTLR to-ports=8083 add action=dst-nat chain=dstnat comment="CTLR-ACESSO-HOTSITE-HTTP" disabled=yes dst-address=$IPCTLRPUBLIC dst-port=80 protocol=tcp to-addresses=$IPCTLR to-ports=80 add action=dst-nat chain=dstnat comment="CTLR-ACESSO-HOTSITE-HTTPS" disabled=yes dst-address=$IPCTLRPUBLIC dst-port=443 protocol=tcp to-addresses=$IPCTLR to-ports=443}; }; #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"; :log warning "Removendo redirecionamentos antigos de pendencias"; /ip firewall nat remove [find comment~"CTLR-MSG"]; :log warning "Recriando os redirecionamento de pendencias"; :if ([$CHECK] ="nao") do={:log warning "Nao ira redirecionar";} else={/ip firewall nat{ add action=dst-nat chain=dstnat comment="CTLR-MSG-ALERT-HTTP" disabled=no dst-address-list=!released_ips dst-port=80 protocol=tcp src-address-list=brb-alert-notice to-addresses=$IPCTLR to-ports=8090 add action=dst-nat chain=dstnat comment="CTLR-MSG-ALERT-HTTPS" disabled=no dst-address-list=!released_ips dst-port=443 protocol=tcp src-address-list=brb-alert-notice to-addresses=$IPCTLR to-ports=8490 add action=dst-nat chain=dstnat comment="CTLR-MSG-PENDENCY-HTTP" disabled=no dst-address-list=!released_ips dst-port=80 protocol=tcp src-address-list=brb-pendency-notice to-addresses=$IPCTLR to-ports=8091 add action=dst-nat chain=dstnat comment="CTLR-MSG-PENDENCY-HTTPS" disabled=no dst-address-list=!released_ips dst-port=443 protocol=tcp src-address-list=brb-pendency-notice to-addresses=$IPCTLR to-ports=8491 add action=dst-nat chain=dstnat comment="CTLR-MSG-BLOCK-HTTP" disabled=no dst-address-list=!released_ips dst-port=80 protocol=tcp src-address-list=brb-block-notice to-addresses=$IPCTLR to-ports=8092 add action=dst-nat chain=dstnat comment="CTLR-MSG-BLOCK-HTTPS" disabled=no dst-address-list=!released_ips dst-port=443 protocol=tcp src-address-list=brb-block-notice to-addresses=$IPCTLR to-ports=8492 add action=dst-nat chain=dstnat comment="CTLR-MSG-CANCEL-HTTP" disabled=no dst-address-list=!released_ips dst-port=80 protocol=tcp src-address-list=brb-cancel-notice to-addresses=$IPCTLR to-ports=8093 add action=dst-nat chain=dstnat comment="CTLR-MSG-CANCEL-HTTPS" disabled=no dst-address-list=!released_ips dst-port=443 protocol=tcp src-address-list=brb-cancel-notice to-addresses=$IPCTLR to-ports=8493}; }; :delay 5s; #OBS essa regra serve para notificar todos os seus clientes, caso tenha alguma manutencao na sua rede ou outra coisa, so habilite ela caso saiba como funciona. :log warning "Redirecionamento para a tela de aviso"; :log warning "Removendo redirecionamentos de aviso antigos"; /ip firewall nat remove [find comment~"CTLR-AVISO"]; /tool netwatch remove [find comment="CTLR-AVISO"]; :delay 5s; :log warning "Criando regras mangle"; :log warning "Removendo mangle antigo"; /ip firewall mangle remove [find comment~"CTLR"]; :log warning "Recriando regras do mangle"; :if ([$CHECK] ="sim") do={:log warning "Ira usar perfis com NOTICE e AUTH"; /ip firewall mangle { add action=jump chain=prerouting comment=CTLR-JUMP-ALERT dst-address-list=!released_ips jump-target=CONTROLLR src-address-list="brb-alert-notice" add action=jump chain=prerouting comment=CTLR-JUMP-PENDENCY dst-address-list=!released_ips jump-target=CONTROLLR src-address-list="brb-pendency-notice" add action=jump chain=prerouting comment=CTLR-JUMP-BLOCK dst-address-list=!released_ips jump-target=CONTROLLR src-address-list="brb-block-notice" add action=jump chain=prerouting comment=CTLR-JUMP-CANCEL dst-address-list=!released_ips jump-target=CONTROLLR src-address-list="brb-cancel-notice" add action=jump chain=prerouting comment=CTLR-JUMP-ALERT dst-address-list=!released_ips jump-target=CONTROLLR src-address-list="brb-alert-auth" add action=jump chain=prerouting comment=CTLR-JUMP-PENDENCY dst-address-list=!released_ips jump-target=CONTROLLR src-address-list="brb-pendency-auth" add action=jump chain=prerouting comment=CTLR-JUMP-BLOCK dst-address-list=!released_ips jump-target=CONTROLLR src-address-list="brb-block-auth" add action=jump chain=prerouting comment=CTLR-JUMP-CANCEL dst-address-list=!released_ips jump-target=CONTROLLR src-address-list="brb-cancel-auth" add action=jump chain=prerouting comment=CTLR-JUMP-DISABLE dst-address-list=!released_ips jump-target=CONTROLLR src-address-list="brb-disabled" add action=accept chain=CONTROLLR comment=CTLR-CHAIN-ACCEPT}; } else={:log warning "Nao usa dois perfis"; /ip firewall mangle { add action=jump chain=prerouting comment=CTLR-JUMP-ALERT dst-address-list=!released_ips jump-target=CONTROLLR src-address-list="brb-alert-notice" add action=jump chain=prerouting comment=CTLR-JUMP-PENDENCY dst-address-list=!released_ips jump-target=CONTROLLR src-address-list="brb-pendency-auth" add action=jump chain=prerouting comment=CTLR-JUMP-BLOCK dst-address-list=!released_ips jump-target=CONTROLLR src-address-list="brb-block-auth" add action=jump chain=prerouting comment=CTLR-JUMP-CANCEL dst-address-list=!released_ips jump-target=CONTROLLR src-address-list="brb-cancel-auth" add action=jump chain=prerouting comment=CTLR-JUMP-DISABLE dst-address-list=!released_ips jump-target=CONTROLLR src-address-list="brb-disabled" add action=accept chain=CONTROLLR comment=CTLR-CHAIN-ACCEPT}; }; :delay 5s; :log warning "Criando address list"; :log warning "Removendo released_ips antigos"; /ip firewall address-list remove [find list=released_ips]; :if ([$IPCTLRPUBLIC] =$IPCTLR) do={:log warning "IP da maquina e igual o ip publico"; /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}; } else={/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"; /system scheduler { remove [find name="Pendency"] remove [find name~"CTLR-MSG"] add interval=2m name="CTLR-MSG-PENDENCY" on-event="/ip firewall address-list set list=\"brb-pendency-auth\" [find where list=\"brb-pendency-notice\"]" 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"; }
PasteBin Clique aqui para acessar o site
Regras de Bloqueio e Pendência
Para configurar a exibição das páginas de bloqueio primeiro é necessário testar o acesso a página de bloqueio e pendência manualmente, através do ip local do seu controllr na porta 8091 e 8092.
ex: http://192.168.10.2:8091.
Caso não apareça a tela de bloqueio e pendência nestes endereços você deve abrir o aplicativo Configurações do Controllr > Endereços do Servidor e clicar em Salvar, pro sistema criar as páginas. Após isso acesse novamente as porta 8091 e 8092 para verificar a exibição das páginas.
Após o procedimento acima e validação da entrega das mensagens pelo sistema, caso não esteja aparecendo a tela de bloqueio pro cliente é por que as configurações das regras de bloqueio e pendência no Mikrotik não estão corretas ou não existem.
Outro detalhe é que a página não aparece quando o cliente tenta acesso em sites HTTPS, (ex: https://facebook.com), as páginas serão exibidas apenas quando o usuário tentar acessar um página HTTP, ou seja sem SSL.
Regras do Mikrotik
A partir dessa versão do Controllr, as regras devem ser atualizadas no seu Mikrotik, pois foram modificados os parâmetros e incluso novas regras, para que seja comprida as normas da ANATEL.
As telas de mensagens, foram modificadas:
- Porta 8090: Página de aviso de Notificação, segundo a ANATEL o Cliente deve ser notificado que está em débito com o Provedor.
- Porta 8091: Página de aviso de redução de Velocidade (antiga pendência).
- Porta 8092: Página de aviso de Bloqueio.
- Porta 8093: Página de aviso de Cancelamento.
- Porta 8096: Página de aviso Customizado. - Por padrão as regras desta porta encontram-se desabilitadas
Veja como configurar cada uma das Páginas Páginas de Aviso disponível no App Configurações do Controllr.
Explicação completa no nosso fórum.
https://community.brbyte.com/forum/view/post/5222
Características de cada Address List
Notificação - brb-block-read-notification - Redirecionamento porta 8090
- Bloqueio total até que seja confirmado (via login) que o responsável pelo contrato está ciente do atraso e sua conexão sofrerá alterações no futuro próximo caso não venha a quitar seu débito junto ao provedor.
Redução - brb-pendency - Redirecionamento porta 8091
- Bloqueio parcial da navegação (apenas navegação WEB) redirecionando todas as navegações WEB do usuário para a página informativa de Redução de Velocidade.
- Ao fim do tempo determinado no 'Scheduller' (atualmente já configurado) do Mikrotik usuário é removido da address list voltando o acesso, entretanto sua velocidade de acesso internet permanecerá com a velocidade Reduzida.
Bloqueio - brb-block - Redirecionamento porta 8092
- Bloqueio total da navegação do cliente, redirecionado para a página de bloqueio sempre que realizar acesso WEB.
Cancelamento - brb-cancel - Redirecionamento porta 8093
- Bloqueio total da navegação e desativação do Contrato do cliente.
Dicas e Download do script
Atenção onde estão os IPs "192.168.0.0" deve ser alterado para o IP do seu Controllr
Atenção para quem estiver na Build 125 e for para 126 deve se atualizar somente as regras 1 / 3 / 4 / 5 / 6 e 8
Segue link para download do script em TXT
Segue link para download do script em TXT
Regras Opcionais
Uma explicação básica de como é a logica do funcionamento das regras opcionais contidas neste manual.
ATENÇÃO Só aplique essa regra, se souber o que ela faz.
Página Customizada
Regra para redirecionamento para Página de Aviso Customizado por padrão esta regra vem desabilitada pois redireciona todos usuários do concentrador sem critério.
/ip firewall nat add action=dst-nat chain=dstnat comment=CTLR-MSG-AVISO disabled=yes dst-port=80,443 protocol=tcp to-addresses=172.30.254.2 to-ports=8096
Ps. Esta regra trabalha em conjunto com a NETWATCH deste capitulo onde o monitoramento é responsável por Ativar e Desativar esta NAT
Netwatch
Essa regra fica pingando o DNS do Google para verificar se sua rede tem internet, se por um acaso parar de pingar será habilitado a regra de redirecionamento para todos os clientes para a tela de Aviso Customizado do Controllr.
Assim como as demais Páginas de Aviso podem ser configuradas.
/tool netwatch add disabled=yes down-script="/ip firewall nat set [find comment=\"CTLR-MSG-AVISO\"] disabled=no" host=8.8.8.8 interval=30m up-script="/ip firewall nat set [find comment=\"CTLR-MSG-AVISO\"] disabled=yes"
Limpeza de Notificação
ATENÇÃO Só aplique essa regra, se souber o que ela faz.
Se não quiser utilizar a regulamentação para notificar o cliente (obrigar login e registro de leitura) poderá notifica-lo de 4 em 4 horas por 2 minutos. (Esse tempo pode ser alterado, conforme a sua necessidade) Para essa regra funcionar TEM que deixar desabilitado as regras de filter rules e de NAT com o comentário CTLR-MSG-NOTIFICACAO
/system scheduler add disabled=yes interval=4h name="CTLR-MSG-NOTIFICACAO" on-event=\ ":foreach nat in=[/ip firewall nat find comment=\"CTLR-MSG-NOTIFICACAO\"] do={/ip firewall nat enable \$nat}\r\ \n:foreach drop in=[/ip firewall filter find comment=\"CTLR-MSG-NOTIFICACAO\"] do={/ip firewall filter enable \$drop}\r\ \n:delay 120s\r\ \n:foreach nat in=[/ip firewall nat find comment=\"CTLR-MSG-NOTIFICACAO\"] do={/ip firewall nat disable \$nat}\r\ \n:foreach drop in=[/ip firewall filter find comment=\"CTLR-MSG-NOTIFICACAO\"] do={/ip firewall filter disable \$drop}" policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon start-time=startup
Identificar IP do Radius
Devido a NAT na rede ou outros roteamento inadequado o endereço IP dos pacotes originados pelo Controllr pode sofrer alteração de IP chegando no MK com outro endereço e muitas vezes negado por desconhecer este IP como um Radius.
Para saber qual o IP que está chegando na volta do Controllr para o Mikrotik. Se o Controllr não estiver derrubando os clientes do Mikrotik
Se for um IP diferente do cadastrado no Radius do Mikrotik, deve-se cadastar esse IP também no Radius do Mikrotik.
/ip firewall filter add action=add-src-to-address-list address-list=RADIUS_LOG address-list-timeout=1d chain=input comment="MONITORAMENTO RADIUS" dst-port=3799 protocol=udp
Vídeo
BUILD 125 e anteriores
Atenção onde estão os IPs "192.168.0.0" deve ser alterado para o IP do seu Controllr
Segue link para download do script em TXT