Se você já tentou configurar um captive portal no MikroTik, sabe que pode ser uma dor de cabeça liberar o acesso de usuários sem precisar de autenticação tradicional. Mas e se eu te disser que dá pra fazer isso de forma simples, registrando a sessão do usuário e liberando ele automaticamente?
O Problema
Muitas soluções exigem RADIUS, autenticação CHAP, ou criar usuários no MikroTik. Mas se você quer apenas capturar um dado do usuário (como nome, e-mail, etc.) e liberar o acesso, isso pode parecer um exagero.
A ideia aqui é:
- O usuário acessa a rede Wi-Fi e é redirecionado para o captive portal.
- Ele preenche um formulário (com nome, por exemplo).
- O sistema registra os dados e redireciona o usuário para o login do MikroTik no modo trial.
- O MikroTik autentica automaticamente e libera a internet.
Tudo isso sem precisar de um servidor RADIUS ou usuários no MikroTik!
Passo 1: Ativar o Trial no MikroTik
Rodando os comandos abaixo, você ativa o modo trial, que permite acesso temporário sem autenticação manual:
/ip hotspot profile set [find name=default] trial-uptime-limit=1d
/ip hotspot profile set [find name=default] trial-user-profile=default
Agora o MikroTik já pode autenticar usuários sem precisar de login e senha.
Passo 2: Criar um Formulário de Captura
Na página de login do captive portal, adicione este formulário:
<form action="https://teuservidor.com/webhook.php" method="post">
<label>Nome:</label>
<input type="text" name="nome" required>
<input type="hidden" name="mac" value="{mac}">
<input type="hidden" name="ip" value="{ip}">
<input type="hidden" name="horario" value="{hora}">
<button type="submit">Liberar Internet</button>
</form>
O MikroTik substitui {mac}
e {ip}
automaticamente na URL, então podemos capturar esses dados facilmente.
Passo 3: Criar o Webhook em PHP
Agora, precisamos de um script PHP que registre os dados e redirecione o usuário para o login trial no MikroTik.
<?php
$data = json_encode([
"nome" => $_POST["nome"] ?? "desconhecido",
"mac" => $_POST["mac"] ?? "desconhecido",
"ip" => $_POST["ip"] ?? "desconhecido",
"horario" => $_POST["horario"] ?? date("c")
]);
file_put_contents("sessoes.log", $data . PHP_EOL, FILE_APPEND);
// Redireciona para o login trial no MikroTik
header("Location: http://192.168.88.1/login?username=trial");
exit;
?>
Isso salva a sessão do usuário e redireciona ele para o login trial do MikroTik. A internet será liberada automaticamente.
Passo 4: Ajustar o Walled Garden (se necessário)
Se o teu servidor estiver fora da rede do MikroTik, precisas liberar o domínio/IP no walled-garden para que os usuários consigam enviar o formulário antes do login:
/ip hotspot walled-garden add dst-host=teuservidor.com
/ip hotspot walled-garden add dst-host=*.teuservidor.com
O Que Acontece Agora?
- O usuário acessa o Wi-Fi e é redirecionado para a página de login.
- Ele preenche o formulário e envia.
- O servidor registra os dados e redireciona ele para o MikroTik.
- O MikroTik autentica ele automaticamente no modo trial.
- Internet liberada!
Conclusão
Com esse método, conseguimos um captive portal funcional e sem complicação:
- Não precisa criar usuários no MikroTik
- Não precisa de RADIUS
- A autenticação acontece automaticamente via trial
- Capturamos dados do usuário para auditoria
Isso resolve o problema de quem precisa de um login simples, sem burocracia!