CREAR PORTAL CAUTIVO CON PHP Y RADIUS

En este post se muestra un ejemplo de como crear un portal cautivo en PHP con RADIUS, para autenticar usuarios y permitir el acceso a una red Wi-Fi. Este ejemplo se asume que tienes un servidor RADIUS (como FreeRADIUS) configurado y un router o punto de acceso (como MikroTik o UniFi) que soporta portales cautivos y se comunica con RADIUSh2 style="color:#333; border-bottom:2px solid #0a5; padding-bottom:8px; margin:40px 0 20px;">Requisitos previos
  • Servidor web: Apache o Nginx con PHP instalado.
  • Servidor RADIUS: FreeRADIUS u otro, configurado con usuarios (por ejemplo, en una base de datos o archivo plano).
  • Librería PHP-RADIUS: Usa una librería como php-radius para comunicarte con el servidor RADIUS.
  • Router compatible: Configurado para redirigir tráfico no autenticado al portal (por ejemplo, MikroTik Hotspot o UniFi).
  • Conocimiento básico: Dirección IP del servidor RADIUS, secreto compartido (shared secret), y puertos (1812 para autenticación, 1813 para contabilidad).
Ejemplo:

setPort($radius_port);

    // Enviar solicitud de autenticación
    if ($radius->AccessRequest($username, $password)) {
   $_SESSION['authenticated'] = true;
   $_SESSION['username'] = $username;
   $_SESSION['client_ip'] = $client_ip;
   $_SESSION['client_mac'] = $client_mac;

   // Opcional: Enviar señal al router para autorizar (por ejemplo, MikroTik API)
   // Esto depende del router. Ejemplo con MikroTik:
   // $mikrotik_api->authorize($client_ip, $client_mac);

   header("Location: welcome.php");
   exit;
    } else {
   header("Location: index.php?error=Credenciales incorrectas o error en RADIUS");
   exit;
    }
} else {
    header("Location: index.php");
    exit;
}

Solo he puesto el fichero que procesa el formulario con login y password.