[Open Network Demarcation Service]. Controla el acceso a una conexión pública a internet y ofrece una forma sencilla de abrir un punto de acceso para redes inalámbricas. Proporciona un portal cautivo para informar a los usuarios sobre los servicios y, opcionalmente, para que acepten los términos y condiciones de uso. El cliente reciba automáticamente una página web la primera vez que intente navegar, no pueda salir a Internet hasta que "valide" el acceso de alguna de las formas que se hayamo configurado: pulsar "Acepto", rellenar un formulario, ver un vídeo, pagar, introducir un token, etc y una vez validado, opennds le da de alta en la "lista blanca" durante el tiempo que se configure y le permite navegar.
# systemctl enable opennds
1.-
Proceso en que el cliente ha de pulsar el botón "aceptar"
Ejemplo mínimo de configuración
# nano /etc/opennds/opennds.conf
# Interfaz donde está el AP
GatewayInterface wlan0
# Puerto interno (opcional)
GatewayPort 2050
# Página que mostraremos (puede ser remota)
FasRemoteIP 192.168.1.1
FasPath /nds/splash.html
FasSecureEnabled 0 # no HTTPS para el ejemplo
# Duración del paso
SessionTimeout 14400 # 4 h
# Script que decide: cualquier petición con ?tok=accept
BinAuth /usr/lib/opennds/binauth_log.sh
Página splash.html
# nano /var/www/nds/splash.html
<!doctype html>
<html>
<head><meta charset="utf-8"><title>Bienvenido</title></head>
<body>
<h1>Wi-Fi Gratuito</h1>
<p>Pulse el botón para navegar 4 h.</p>
<form method="GET" action="http://192.168.1.1:2050/opennds_preauth/">
<input type="hidden" name="tok" value="accept">
<button type="submit">Acepto</button>
</form>
</body>
</html>
Ejemplo orientativo de script binauth_log.sh
# nano /usr/lib/opennds/binauth_log.sh
#!/bin/sh
# $1=method (auth), $2=clientip, $3=clientmac, $4=tok, $5=redir
[ "$4" = "accept" ] && exit 0 # autorizado
exit 1 # rechazado
# chmod 755 /usr/lib/opennds/binauth_log.sh
# systemctl restart opennds
Para probar, conectarse al SSID "Wi-Fi Gratuito", abrir el navegador y aparece la splash, pulsar "Acepto" y pennds te da de alta y redirige a la página que querías.
# ndsctl status
# opennds -f -d 7 # nivel debug 7