Portail Captif
Recherche d’un support d’installation
Pour obtenir quelque chose de stable et facile à maintenir, j'ai choisi la solution "Mikrotik", un OS adapté à divers services tels que VPN, DHCP, DNS, TUNNEL, etc.
Son installation se fait à partir d'un ISO de petite taille sur une machine simple ou même depuis un routeur compatible.
Un outil de configuration appelé "WinBOX64" est disponible, permettant la connexion via son adresse MAC ou IP.
Configuration du routeur
Pour des raisons d'organisation et de sécurité, j'ai opté pour la création d'un sous-réseau en 192.168.1.0/24
pour les clients WIFI. Cette décision a été prise après avoir rencontré un problème avec plusieurs serveurs DHCP sur le même réseau, risquant de provoquer des conflits d'IP avec les serveurs voisins.
Le routeur a donc deux interfaces, l'une pour Internet en 10.0.0.0/24
et l'autre pour le réseau local en 192.168.1.0/24
.
Configuration des interfaces
Le WAN représente l'accès Internet et le WIFI est le réseau local des clients WIFI.
Configuration du serveur DNS
Toutes les requêtes de nom de domaine interrogent le DNS de Cloudflare, "1.1.1.1".
Création des règles NAT dans le pare-feu
Pour permettre l'accès Internet au WIFI, je configure le NAT pour permettre la communication entre les réseaux 192
et 10
. Il s'agit d'une manière de faire de la translation d'adresse tout en maintenant une correspondance entre les paquets.
Création de la route pour le WAN
Toutes les requêtes de tous les réseaux sont dirigées vers "10.0.0.253" (l'IP a-t-elle été modifiée ?!).
Mise en place du WIFI sur le routeur
Lorsqu'un client se connecte au réseau WIFI, il a besoin d'une IP. Grâce à un serveur DHCP, je lui attribue une IP à partir d'une plage définie dans une "POOL".
Ici, j'ai défini une plage de 192.168.1.10-120
.
Le serveur DHCP fonctionne sur la carte "ETH2", connectée au réseau WIFI, c'est-à-dire à la borne.
Dans cette fenêtre, nous pouvons simplement choisir notre plage d'adresses IP.
Actuellement, le WIFI fonctionne avec un accès Internet. Le principal défi a été de trouver les routes pour obtenir un accès Internet (cela semble maintenant logique).
Le serveur DHCP attribue avec succès une IP avec un accès Internet ! YOOPIII :D
IP attribuée :
Configuration de la borne Wifi
Nous avons choisi la borne NETGEAR WG602 v4 car les anciennes bornes ne fonctionnaient pas, ou alors il fallait réinstaller le système de la borne, ce qui n'était pas pratique.
Warning
Au début, la borne était alimentée en PoE, mais il n'y avait pas assez de puissance. La borne ne fonctionnait pas, et nous ne pouvions pas accéder à l'interface web. Nous l'avons donc alimentée avec une alimentation.
Configuration de la borne
Nous avons branché l'alimentation et changé l'adresse IP de notre ordinateur pour la mettre dans le même réseau que la borne. L'IP par défaut de la borne est '192.168.0.227', nous nous sommes donc placés dans le réseau '192.168.0.0/24'.
Après cela, j'ai pu accéder à la page web de la borne.
J'ai modifié le nom du 'SSID' en 'Wifi Enzo Mateo' et supprimé la sécurité WPA2 pour permettre à tout le monde de se connecter à la borne sans mot de passe.
Cependant, j'ai également changé l'adresse de la borne car avec MikroTik, nous avons un réseau en '192.168.1.0/24'.
Ajout du portail captif
Un système de portail captif est directement intégré au système et appelé "Hotspot". Une fois configuré, il bloque l'accès et redirige vers une page de connexion.
Test du portail captif sans configuration (Il a déjà été personnalisé pour les modifications suivantes dans le screenshot, normalement 2 champs sont demandés) :
La gestion des utilisateurs de "Mikrotik" est manuelle ou peut être créée par plusieurs procédés
- Serveur RADIUS
- API
- User Manager (Extension)
Pour des raisons de simplicité, j'ai décidé de rechercher une API écrite en PHP pour interagir avec la création des utilisateurs. L'API peut envoyer des commandes au routeur comme si nous étions en CLI.
Modification de la page HTML du portail
Le projet consiste à avoir un serveur d'enregistrement et un autre de connexion. Je vais donc créer une redirection vers le serveur correspondant. Redirection effectuée en JS vers "192.168.1.92:80".
Page d'enregistrement en PHP
Cette page est hébergée sur un serveur apache2.
-
L'utilisateur entre ses identifiants pour créer le compte.
-
Le code vérifie s'il vient d'envoyer ou de demander la page de connexion avec les arguments "GET".
-
Le code se connecte à l'API et envoie la commande de création du compte.
-
L'utilisateur est redirigé vers l'URL de connexion du portail et est connecté automatiquement.
http://192.168.1.1/login?dst=&popup=false&username=test.test
L'utilisateur dispose de 15 minutes par session, et le compte sera supprimé après le temps imparti.
On peut consulter les utilisateurs enregistrés avec leurs informations :
!!! note "HTTP PAP" permet une connexion sans vérification des tokens.
Blocage de sites web
Pour bloquer l'accès à Amazon, par exemple, nous avons dû ajouter une règle dans le pare-feu.