Raspberry Pi se transforman en hot spot Wifi con portal cautivo (2/2)

Para facilidad de punto de acceso automático, visita El artículo aquí.

En un artículo anterior, Nos habíamos instalado nuestro propio punto de acceso Wifi. Ahora se trata de añadir un portal cautivo para controlar quién va a usar. Hotspot_WiFiA un portal cautivo tienes varias opciones :

  1. El método simple está pasando a través de una página PHP. Puede mostrar un mensaje en una página HTML, esperar a una y luego permitir el acceso a Internet.
  2. El método más complejo donde vas a través de una herramienta especializada como por ejemplo YFi Hotspot Manager.

Cada método tiene mucho sobre sus ventajas y desventajas, pero inicialmente elegí simplicidad y sólo control forma básica a Internet. Será a través de una página PHP.

Un portal cautivo en PHP

  1. Instalar Nginx con soporte PHP. El más sencillo es seguir las instrucciones de Este artículo. Aquí está mi configuración del servidor :
    Servidor {
    	root/var/www;
    	Índice index.php;
    	nombre_servidor localhost;
    	Alquiler / {
    		try_files $uri $uri / index.php;
    	}
    	alquiler ~ .php$ {
    		fastcgi_split_path_info ^(.+\.PHP)(/.+)$;
    		fastcgi_pass unix:/var/run/PHP5-fpm.sock;
    		fastcgi_index index.php;
    		incluyen fastcgi_params;
    	}
    }
  2. Instalar paquetes adicionales :
    apt - get install conntrack
  3. Permitir que el usuario www - datos para llevar a cabo los comandos requeridos para administrar el acceso :
    Lanzamiento visudo luego añada las siguientes líneas al final del archivo :
  4. www - data todos = NOPASSWD: /usr / sbin / arp
    www-data ALL = NOPASSWD: /sbin / iptables
    www-data ALL = NOPASSWD: /usr/bin/rmtrack [0-9]*.[0-9]*.[0-9]*.[0-9]*
    
  5. Crear la página de inicio index.php
    <!--?php 
    $ip = $_SERVER['REMOTE_ADDR'];
    $mac = shell_exec("sudo /usr/sbin/arp -an " . $ip);
    preg_match('/..:..:..:..:..:../',$mac , $matches);
    $mac = @$matches[0];
    if( $mac === NULL) { echo "Access Denied."; exit; }
    ?-->
    <form action="process.php" method="post">
    <input name="mac" type="input" value="<?php echo $mac; ?>" /> 
    <input name="ip" type="input" value="<?php echo $ip; ?>" />
    <input style="padding: 10px 20px;" type="submit" value="OK" />
    </form>
    
  6. Crear la página que va a generar las reglas para permitir el acceso a Internet Process.php. Cuando el usuario ha validado el formulario en la página anterior, Es ella quien será llamado a dar acceso completo.
    
    
  7. Crear el conjunto de las reglas de enrutamiento
    iptables -t mangle -N internet iptables -t mangle - A PREROUTING -i wlan0 -p tcp -m tcp - dport 80 -j internet iptables -t mangle-internet -j--set-marca 99
    iptables nat-A PREROUTING-i wlan0 p tcp m marca t - marca 99 -m tcp - dport 80 -j DNAT - destino 192.168.10.1
  8. Guardar las reglas para los siguientes algunos reinicios
    Servicio iptables - persistente

 

Ya estás aquí ! Un punto de acceso con un portal cautivo. Puede editar las páginas PHP para cambiar el aspecto y las características. Una base de datos podría, por ejemplo, memorizar las direcciones MAC para no pedir la conexión, administrar un tiempo de conexión, un volumen, etc..

Fuentes :

Posiblemente le gustan también....

  • EDWARDS ABDO

    Muy buen tuto ,
    Una nota de eliminar los comentarios de código php en los dos archivos index.php y process.php.

  • luckidu33

    ATENCIÓN !!! Este tutorial permite a un atacante tomar el control del servidor mediante la inyección (con derechos muy altos!!!!!!) sistema en las variable $ip y $mac los comandos!!! Debe realizarse un control en el momento $ip = $_POST['ip'];
    $mac = $_POST['mac'];

  • Hola, Código de punto 5 is empty 🙁

    • Hola
      Actualizado. Tienes que copiar/pegar en una página llamada process.php

      • Perfet, Gracias

      • Prasan Dutt

        Code is still missingwhat should be the process?

        • Look at http://www.andybev.com/index.php/Using_iptables_and_PHP_to_create_a_captive_portal
          I lost code and have no time to rebuild it. Else you the automatic script with coovachilli

          • Prasan Dutt

            You won’t believe but I was using the same link to modify my index.php and was trying to understand. 🙂 However, thanks for recommending coovachilli, it seems simpler, will give it a try

          • Prasan Dutt

            Today I guessed one strange thing, the DHCP server is internal wifi on RPi3, not external USB wifi dongle. WiFi is generated even without the dongle.
            I guessed it yesterday only as the range of wifi was just 10-15 feet. How to route the internet to external USB wifi dongle? WLAN1 is the configuration which I think will be helpful in setting up.

          • Identify your dongle and confirm that it’s wlan1 and replace wlan0 by wlan1 in all steps. Never tested but should work

  • lesjno

    Hola,
    Tiene que ser un buen tutorial; Lamentablemente tengo una inquietud.
    Justo antes de dar el paso 6 (reglas de enrutamiento), el sistema se comporta como un punto de acceso simple : Se conecta con wifi y acceso a internet, http o https.
    Pero después de la etapa 6 Se pone un “404 No se encontró” Cuando escribe una dirección http mientras esperaba Mostrar la página index.php del punto de acceso (la página www/index.php/var / que aparece bien al que escribo directamente dirección 192.168.10.1 en el navegador).
    Lo que falta en mi setup para seguir automáticamente el portal cautivo ?

    Gracias de antemano !

    • lesjno

      Información adicional : Aquí está lo que tengo en el registro si quiero por ejemplo el acceso a la página http://lesjno.free.fr/Solar/index.html

      en /var/log/nginx/access.log ==>
      192.168.10.4 - - [29/Dic/2014:17:10:44 -0100] “Haz /Solar/index.html HTTP/1.1” 404 142 “-” “Mozilla/5.0 (Windows NT 6.1; WOW64; RV:34.0) Gecko/20100101 Firefox/34,0”

      en el archivo error.log ==>
      2014/12/29 17:10:44 [error] 6830#0: *14 abrir() “/var/www/Solar/index.html” No se pudo (2: Nº tal archivo o directorio), cliente: 192.168.10.4, Servidor: , petición: “Haz /Solar/index.html HTTP/1.1”, host: “lesjno.free.fr”

      • No es por lo tanto el archivo index.html. Se requiere ? Si no en la creación de ca eliminará el error

        • lesjno

          Hola,

          Me expresé mal. El ejemplo dado que era un “ejemplo” ! Me puse como “cliente” conectado a Wi-Fi punto de acceso y que deseaba visitar una web de cualquier página. El sitio web aún no es el problema, Podría haber llevado miles de otros ejemplos.
          Como genérico, Imagínese que desea tener acceso al sitio http://aaaaa/bbbbb : Supongo que sólo en la operación “normal” del punto de acceso con portal cautivo primero debe ir no está en la página solicitada, pero en la página de inicio de sesión preparada para la identificación del usuario, Por lo tanto, la página que se encuentra localmente en la frambuesa : /var/www/index.php. Pero este no es el caso : registro indican que el sistema está tratando de hacer un circuito abierto() De “/var/www/bancos” (por supuesto no existe !), petición “Haz /bbbbb HTTP/1.1”, host: “AAAAA”.
          Hay algo mal en la configuración. Esto es en la configuración de iptables ? Lo que está en otra parte ?

          • Bien hecho pasar a través de la página por defecto debería. Si esto es correcto contraseña lado luego las tablas ip ponen en el lugar para abrir el acceso al exterior. Pero no sé si la página se establece de forma predeterminada al principio o al hacerlo la primera vez ….

          • Nicolas Leleu

            Et si on faisait la page de logon via la page d’erreur 404, page non trouvée? ou alors, la page 404 redirigerait vers index.php

  • Ricardo

    Hola,

    El punto 5 está vacía, podrían ponerlo de vuelta por favor, Gracias.

  • Henry Bernard

    Bcp gracias por este tutorial, M ayudado a establecer una conexión Wi-Fi. Por otro lado, incluso con un ipforward 0, No tengo la página popup/splash de portales cautivos… ni en mac, Ni ios, o android. ¿Sabes que hacer ? Sería muy superior a hacer ca, Se conecta y - pop - una ventana de navegador de s como en los juegos, Hoteles, etc..

    • Je ne sais pas mais moi aussi ca m’interresse de savoir comment faire 🙂

      • Henry Bernard

        El truco, c es que sea solo. En cuanto a Wi-Fi gratuito… Cuando un hueso (iOS, Android, Mac) se conecta al wifi lo cheques es tethered o no… En caso afirmativo, Envía un mensaje emergente. Lo raro es que no es ya …

        • IPTV

          Estoy interesado en lo que puedes hacer con el dispositivo , Página de los hoteles o restaurantes . Gracias

          • FYI que voy a hacer un artículo con CoovaChilli que muestra una ventana emergente con la llegada de la red Wi-Fi, en la ventana emergente no es una página HTML personalizable y usuarios son gestionados por una autenticación mediante FreeRadius

  • IPTV

    Hola, Veo Los comentarios sonido Nº en Español, podrias responderme dudas en Español?

  • Chris

    El código de punto 5 parece ser que falta.

  • Mohit Madan

    El código no se encuentra(Punto 5)

  • CPS

    Los códigos en la sección 4 y 5 están perdidos.

  • The code in section 4 y 5 are again missing…….

  • Tania Daniela Paiva Falcón

    Hola, Código de punto 5 is misisng.

  • Chris

    Hello what has happened to section 4 y 5 after-all?

    • Code has been deleted and I do not find any backup sorry. Debería tomarse un tiempo para volver a crearlo. utilizar de otro modo mi post con coovachilli

  • Rodrigue ANDRIANOMENJANAHARY

    Hola

    ¿Cómo nos va a hacer si ha instalado apache2 y phpmyadmin en la frambuesa??

    Tengo la oportunidad de compartir la conexión de mi frambuesa con un teléfono y un ordenador, pero no quiero que cada vez que tengo que escribir mi archivo de rastreo de direcciones IP que quiero Quiero voir.Alors en conectar a mi red con un teléfono,cuando abro el navegador,allí inmediatamente la página de inicio que aparece.

    ¿Alguien me puede ayudar??,Muchas gracias

    • En su lugar, utilice la solución freeradius y coovachilli que se presenta en este sitio y que funciona como se esperaba

  • Paddy

    I found the old side with the code: http://www.pihomeserver.fr/de/2014/05/23/raspberry-pi-home-server-creer-hot-spot-wifi-portail-captif-22/

    Auf der Seite fndet man den Quellcode für 5.

Popular destinations