Boa noite pessoal,
Já postei esse mesmo esquema em outro tópico,
fiz algumas mudanças e achei melhor abrir outro tópico.
A lógica do script é a mesma fazer a consulta no banco do mk-auth, com o resultado da consulta cria um script para o mikrotik com login, senha, ip, mac de cada cliente,
importa o script para o mikrotik para autenticação local em caso de uma falha no mk-auth.
simplifiquei mais a consulta ao banco,
e agora tem a opção de exportar para o mikrotik só o necessário, separando os clientes por ramais, tipo de autenticação com o wireless access-list ou não.
os passos para configuração são os mesmos do outro topico, a consulta era feita assim
http://ip_do_seu_mk-auth/mikrotik/index.php?id=seu_token_unico
Agora temos outro cenário abaixo
----------
exemplo 1
ramal 1
ip do ramal 1 é: 192.168.10.100
tipo de autenticação do ramal 1 é: pppoe
wireless access-list: sim
----------
A consulta para o ramal 1 será assim:
http://ip_do_seu_mk-auth/mikrotik/index.php?id=seu_token_unico&ramal=192.168.10.100&pppoe=s&hotspot=n&wireless=s
ou seja
pppoe=s (sim)
hotspot=n (não)
wireless=s (sim)
A consulta vai retornar um script apenas dos clientes com o tipo de autenticação pppoe e wireless access-list do ramal 192.168.10.100
----------
exemplo 2
ramal 2
ip do ramal 2 é: 192.168.10.200
tipo de autenticação do ramal 2 é: hotspot e pppoe
wireless access-list: não
----------
A consulta para o ramal 2 será assim:
http://ip_do_seu_mk-auth/mikrotik/index.php?id=seu_token_unico&ramal=192.168.10.200&pppoe=s&hotspot=s&wireless=n
ou seja
pppoe=s (sim)
hotspot=s (sim)
wireless=n (não)
A consulta vai retornar um script apenas dos clientes com o tipo de autenticação pppoe e hotspot sem o pacote wireless access-list do ramal 192.168.10.200
Vamos as mudanças
qual a diferença desse método para o outro que postei?
dessa forma terá linhas do script mikrotik bem menores, se não trabalho com wireless access-list do mikrotik então não tem necessidade de ter essas linhas no script
vou refazer o passo a passo
1º passo
baixe o arquivo mikrotik.zip
descompacte o arquivo, dentro da pasta mikrotik está o arquivo index.php,
2º passo
Envie a pasta mikrotik para o diretorio var/www do seu mk-auth
para saber se esta tudo ok, teste digitando em seu navegador
http://ip_do_seu_mk-auth/mikrotik
deve aparecer uma mensagem acesso restrito... em seguida vai redirecionar para o seu website
ai vem um segredinho! no web admin do seu mk-auth em dados da empresa o Token unico: cinco dígitos que devem ser exclusivo do seu provedor,
é usado para gerar a tabela de segurança de clientes. ele será usado aqui como id para liberar a consulta. (uma mini segurança)
altere se for necessário, porem saiba que a tabela de segurança dos clientes também sera alterada.
Agora teste digitando em seu navegador da seguinte forma
http://ip_do_seu_mk-auth/mikrotik/index.php?id=seu_token_unico&ramal=ip_do_ramal&pppoe=s&hotspot=s&wireless=s
agora sim, devem aparecer os registros dos clientes, você não vai conseguir ler porque esta sem formato html
então tente exibir o código fonte da página em seu navegador (se for o chrome Ctrl+u)
agora sim dá para entender!
3º passo
São os scripts do mikrotik
2 scripts um executa o outro,
o que isso faz?
o importar_backup_mikrotik inicia , executa o exportar_backup_mkauth
que faz a consulta no banco de dados do mk-auth, se a consulta foi concluida importa o resultado para files do mikrotik e executa o comando /import file-name=mikrotik.rsc
script: importar_backup_mikrotik
#===============================
# IMPORTAR BACKUP PARA O MIKROTIK
# JONAS OLIVEIRA
#===============================
# NAO ALTERAR NADA AQUI
#===============================
:global backup "false";
:execute script=exportar_backup_mkauth;
:local counter "0";
:while ( $backup != true && $counter < 5 ) do={
:set counter ($counter+1)
:delay 1s;
}
if (($backup = "true") && ([/file find name=mikrotik.rsc] != "" )) do={
/import file-name=mikrotik.rsc;
:log warning "Backup Foi Importado Com Sucesso!";
} else={
:log error "Backup Nao Foi Importado!";
};
#===============================
script: exportar_backup_mkauth
este é o único que deve alterar!
supondo que o ip do mk-auth é 172.31.255.2 e o ip do ramal onde vai rodar o script é 172.31.255.1
o token único é 12345 e eu quero todos os pacotes neste script de backup
então meu script ficaria assim:
#===============================
# EXPORTAR BACKUP MKAUTH
# JONAS OLIVEIRA
#===============================
#== IP MK-AUTH OU DOMINIO SEM http://
:global MKAUTH "172.31.255.2";
#===============================
#== ID SECRETO
:global ID "12345";
#===============================
#== IP DO RAMAL
:global RAMAL "172.31.255.1";
#== HOTPOT
:global HOTSPOT "s";
#== PPPOE
:global PPPOE "s";
#== WIRELESS
:global WIRELESS "s";
#===============================
# NAO ALTERE DAQUI PARA BAIXO
#===============================
:global backup "false";
:log warning "Iniciando Exportacao!";
/tool fetch mode=http url="http://$MKAUTH/mikrotik/index.php\?id=$ID&ramal=$RAMAL&pppoe=$PPPOE&hotspot=$HOTSPOT&wireless=$WIRELESS" src-path=index.php dst-path=mikrotik.rsc;
:set backup "true";
#===============================
Arquivo index.php
<?php
/* EXPORTAR BACKUP PARA MIKROTIK */
/* SO ALTERE O QUE FOR NECESSARIO */
# WIRELESS NIVEL DE SINAL (WIRELESS)
$mim_sinal = "78"; // Minimo nivel de sinal
$max_sinal = "120"; // Maximo nivel de sinal
# SERVIDORES DNS (PPPOE)
$dns_server1="189.38.95.95"; // GigaDNS1
$dns_server2="189.38.95.96"; // GigaDNS2
# LOCAL-ADDRES E REMOTE-ADDRESS (PPPOE)
$local_address = "Local-1"; // Geralmente Local-1
$remote_address = "Remoto-1"; // Geralmente Remoto-1
# COMENTARIO (PPPOE E HOTSPOT E WIRELESS)
$comment = "mkauth"; // Comente nas regras
# SERVIDOR HOTSPOT (HOTSPOT)
$server = "hotspot1"; // Geralmente hotspot1
/* NAO ALTERAR DAQUI PARA BAIXO */
// Mensagem de erro
$error = '<div style="font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12px; color: #cc6600; background-color: #ffffcc; margin: 7px 7px 7px 7px; border: 1px solid #CC6600; padding: 5"><p><img src="/admin/imagens/icon-atencao.png" hspace="5" vspace="5" border="0" align="right" /><strong> Aviso!</strong></p><p> acesso restrito...</p></div><meta http-equiv="refresh" content="4; url=../index.php">';
// Conexao ao banco
$hostdb = "localhost";
$userdb = "root";
$passdb = "vertrigo";
$tabledb = "mkradius";
$conecta = mysql_connect($hostdb, $userdb, $passdb) or die (mysql_error());
@mysql_select_db($tabledb, $conecta) or die (mysql_error());
# PROTEGER O ARQUIVO DE ACESSO NAO AUTORIZADO
$proteg_arq = mysql_query("SELECT token FROM `sis_provedor` WHERE 1") or die (mysql_error());
$senha_arq = mysql_fetch_assoc($proteg_arq);
if (isset($_REQUEST['id']) && ($_REQUEST['id'] != $senha_arq['token']) || ($_REQUEST['id'] == NULL) || ($_REQUEST['ramal'] == NULL)){
exit($error);
}
// Recebe os dados
$wireless=$_REQUEST['wireless'];
$hotspot=$_REQUEST['hotspot'];
$pppoe=$_REQUEST['pppoe'];
$ramal=$_REQUEST['ramal'];
// Profiles
$busca_profiles = mysql_query("SELECT radgroupreply.`groupname`, radgroupreply.`value`
FROM `radgroupreply` WHERE `attribute` = 'Mikrotik-Rate-Limit'
ORDER BY `groupname` ASC") or die (mysql_error());
$count_profiles = mysql_num_rows($busca_profiles);
// Clientes ativos nao bloqueados
$busca_clientes = mysql_query("SELECT sis_cliente.`login`, sis_cliente.`tipo`, sis_cliente.`senha`,
sis_cliente.`ip`, sis_cliente.`mac`, sis_cliente.`plano`,
sis_cliente.`ramal`
FROM `sis_cliente`
WHERE ativo2 = 's' AND `bloqueado` = 'nao' AND `ramal` = '".$ramal."'
UNION ALL
SELECT sis_adicional.`username`, sis_adicional.`tipo`, sis_adicional.`senha`,
sis_adicional.`ip`, sis_adicional.`mac`, sis_adicional.`plano`,
sis_adicional.`ramal`
FROM `sis_adicional`
WHERE `bloqueado` = 'nao' AND `ramal` = '".$ramal."'") or die (mysql_error());
// Remove profiles
if (mysql_num_rows($busca_profiles) > 0 ){
// Remove profiles pppoe
if ($pppoe == "s"){
echo'/ppp profile remove [find comment="'.$comment.'"];
';
}
// Remove profiles hotspot
if ($hotspot == "s") {
echo'/ip hotspot user profile remove [find session-timeout="23:59:00"];
';
}
// Adicionar profiles
while ($profile = mysql_fetch_array($busca_profiles)) {
// Profile pppoe
if ($pppoe == "s") {
echo'/ppp profile add name="'.$profile['groupname'].'" rate-limit="'.$profile['value'].'" use-encryption=yes local-address='.$local_address.' comment="'.$comment.'" remote-address='.$remote_address.' dns-server='.$dns_server1.','.$dns_server2.' change-tcp-mss=yes;
';
}
// Profile hotspot
if ($hotspot == "s") {
echo'/ip hotspot user profile add name="'.$profile['groupname'].'" rate-limit="'.$profile['value'].'" session-timeout="23:59:00" transparent-proxy=no;
';
}
// Fim profiles
}
}
// Remove regras antigas
if (mysql_num_rows($busca_clientes) > 0){
// Remove secret pppoe
if ($pppoe == "s"){
echo'/ppp secret remove [find comment="'.$comment.'"];
';
}
// Remove user hotspot
if ($hotspot == "s"){
echo'/ip hotspot user remove [find comment="'.$comment.'"];
';
}
// Remove wireless access-list
if ($wireless == "s"){
echo'/interface wireless access-list remove [find comment="'.$comment.'"];
';
}
// Adiciona novas regras
while ($cliente = mysql_fetch_array($busca_clientes)) {
// pppoe com ip fixo
if ($cliente['ip'] != NULL && $cliente['tipo'] == "pppoe" && $pppoe == "s") {
echo'/ppp secret add name="'.$cliente['login'].'" password="'.$cliente['senha'].'" profile="'.$cliente['plano'].'" remote-address="'.$cliente['ip'].'" caller-id="'.$cliente['mac'].'" comment="'.$comment.'" service=any disabled=yes;
';
// wireless
if ($cliente['mac'] != NULL && $wireless == "s") {
echo'/interface wireless access-list add interface=all forwarding=no authentication=yes signal-range=-'.$mim_sinal.'..'.$max_sinal.' mac-address="'.$cliente['mac'].'" disabled=yes comment='.$comment.';
';
}
}
// pppoe sem ip fixo
if ($cliente['ip'] == NULL && $cliente['tipo'] == "pppoe" && $pppoe == "s") {
echo'/ppp secret add name="'.$cliente['login'].'" password="'.$cliente['senha'].'" profile="'.$cliente['plano'].'" caller-id="'.$cliente['mac'].'" comment="'.$comment.'" service=any disabled=yes
';
// wireless
if ($cliente['mac'] != NULL && $wireless == "s") {
echo'/interface wireless access-list add interface=all forwarding=no authentication=yes signal-range=-'.$mim_sinal.'..'.$max_sinal.' mac-address="'.$cliente['mac'].'" disabled=yes comment='.$comment.';
';
}
}
// hotspot com ip fixo
if ($cliente['ip'] != NULL && $cliente['tipo'] == "hotspot" && $hotspot == "s") {
echo'/ip hotspot user add name="'.$cliente['login'].'" password="'.$cliente['senha'].'" profile="'.$cliente['plano'].'" address='.$cliente['ip'].' mac-address="'.$cliente['mac'].'" comment="'.$comment.'" disabled=yes server='.$server.';
';
// wireless
if ($cliente['mac'] != NULL && $wireless == "s") {
echo'/interface wireless access-list add interface=all forwarding=no authentication=yes signal-range=-'.$mim_sinal.'..'.$max_sinal.' mac-address="'.$cliente['mac'].'" disabled=yes comment='.$comment.';
';
}
}
// hotspot sem ip fixo
if ($cliente['ip'] == NULL && $cliente['tipo'] == "hotspot" && $hotspot == "s") {
echo'/ip hotspot user add name="'.$cliente['login'].'" password="'.$cliente['senha'].'" profile="'.$cliente['plano'].'" mac-address="'.$cliente['mac'].'" comment="'.$comment.'" disabled=yes server='.$server.';
';
// wireless
if ($cliente['mac'] != NULL && $wireless == "s") {
echo'/interface wireless access-list add interface=all forwarding=no authentication=yes signal-range=-'.$mim_sinal.'..'.$max_sinal.' mac-address="'.$cliente['mac'].'" disabled=yes comment='.$comment.';
';
}
}
// FIM
}
}
?>
Respostas
Como fazer o mkauth enviar backup para o mikrotik amigo?
Voce pode da mais detalhes como colocar esse script para rodar?
Obrigado
Edson Pereira disse:
agora está exportado inclusive os bloqueados, porem não consta que está bloqueado e isso seria necessários pra importar pro mk, enable=n
aqui nao funciona o mikrotik faz a busca no mkauth vem o arquivo .src mas so tem esta mensagem
( Não foi possível selecionar tabela sis_cliente! )
O Mk-auth ja envia por ftp (o serviço de ftp porta 21 deve esta ativo no mikrotik em ip service) os arquivos: mikrotik.rsc, dhcp.rsc e pgaviso.rsc para dentro do mikrotik na pasta files a cada 5 a 15 minutos.
Dai é só colar isso no New Terminal:
Considerando que o IP do mk-auth seja 172.31.255.2. Se não altere antes de colar.
/tool netwatch
add comment="Status do Mk-auth" down-script=":if ( [/file find name=mikrotik.r\
sc] != \"\" ) do={\r\
\n:log warning \"processando bakcup do MkAuth. Aguarde!\";\r\
\n/ppp profile remove [/ppp profile find where comment=mkauth]\r\
\n/ppp secret remove [/ppp secret find where comment=mkauth]\r\
\n/ip hotspot user profile remove [/ip hotspot user profile find name!=def\
ault]\r\
\n/ip hotspot user remove [/ip hotspot user find comment=mkauth]\r\
\n/import file-name=mikrotik.rsc;\r\
\n/import file-name=dhcp.rsc;\r\
\n/import file-name=pgaviso.rsc;\r\
\n:log warning \"Backup Foi Importado Com Sucesso!\";\r\
\n} else={\r\
\n:log error \"Backup Nao Foi Importado!\";\r\
\n}\r\
\n/ppp secret set [find comment=mkauth] disabled=no\r\
\n\r\
\n" host=172.31.255.2 interval=1m timeout=500ms up-script=\
"/ppp secret set [find comment=mkauth] disabled=yes\r\
\n"
Edson Pereira disse:
aqui nao envia o q pode ser? veja as imagens em anexo2.jpg1.jpg
Antonio Brito disse:
Vai em Provedor, controle de cadastro e controle de servidores e clica em alterar. Verifica se a opcao FTP esta ativada. Coloca a mesma senha do user mkauth que ta no mikrotik. Veja anexo
Vá no mikrotik em ip, service e deixa como na imagem em anexo.
Depois aguarda alguns minutos(maximo 15) e verifica se os arquivos estão la.
Edson Pereira disse:
tela1.jpg
tela.jpg
amigo os 2 mikrotik esta funcionando ssh veja nos anexos
Antonio Brito disse:
Bom dia, poderia compartilhar a regra de corte do "/ip firewall filter".
Edson Pereira disse:
ta na mao amigo qualquer coisa estamos ai um abraço
/ip firewall filter
add action=drop chain=forward comment=\
"pgcorte mk-auth nao abre nada nem tela de bloqueio garatindo" dst-address=\
!200.9.127.1 dst-port=0-65535 protocol=udp src-address-list=pgcorte
add action=drop chain=input protocol=udp src-address-list=pgcorte
Eberty Rodrigues disse:
boa noite amigo , segue a resposta lá no ultimo comentário do post