Como Criar um Captive Portal Simples e Funcional no MikroTik

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?

  1. O usuário acessa o Wi-Fi e é redirecionado para a página de login.
  2. Ele preenche o formulário e envia.
  3. O servidor registra os dados e redireciona ele para o MikroTik.
  4. O MikroTik autentica ele automaticamente no modo trial.
  5. 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!

Rolar para cima