Installer un portail captif

De Wiki LOGre
Aller à : navigation, rechercher


Le but d'un portail captif, à la manière des accès wifi publics ou des hôtels, c'est que des qu'un utilisateur se connecte au réseau wifi (ou autre), quelque soit l'url entrée dans son navigateur, celui ci est redirigé sur une page d'accueil pour potentiellement s'authentifier, acheter des crédits,...

Dans le cas de la TAZBox, c'est uniquement rediriger automatiquement l'utilisateur sur la page web de la TAZBox sans qu'il n'ait à connaitre l'adresse IP, l'url,... De plus le portail captif permet de configurer ce que l'utilisateur peut faire (règles iptables) et en l'occurence, il ne pourra qu'accéder aux pages web et diverses applications (radio, partage de fichiers, chat...) mais pas aux ressources de la TAZBox (shell, reseau freelan...)

A la mano avec dnsmasq

Pour cela nous allons tout faire via dnsmasq:

  • Definir le serveur DHCP : fournir des bails avec un range d'IP de 192.168.2.10 à 192.168.2.20
  • Appliquer cette configuration uniquement sur l'interface wifi : wlan0
  • rediriger tout nom de domaine vers l'ip de la box : 192.168.2.1

Configuration

DNSMASQ_CMD="-x /var/run/dnsmasq.pid -i wlan0 -h -H /etc/hosts -R  --address=/#/192.168.2.1 -K --dhcp-range=192.168.2.10,192.168.2.20 -l /opt/taz/tmp/leases"
start-stop-daemon -S -q -x /usr/sbin/dnsmasq  --  $DNSMASQ_CMD

NoDogSplash

Installation

opkg update
opkg install nodogsplash

Configuration

Réseau

Il faut configurer l'interface wifi avec une IP statique. Ajoutez au fichier /etc/config/network

config interface 'wifi'
      option ifname 'wlan0'
      option proto 'static'
      option ipaddr '192.168.2.1'
      option netmask '255.255.255.0'

Wifi

Il faut ensuite configurer l'interface le réseau wifi et spécifier un réseau ouvert, associé à l'interface réseau configurée auparavant. Editez le fichier /etc/config/wireless

config 'wifi-device' 'wlan0'
       option 'type'	'mac80211'
       option 'channel'	'11'
       option 'disabled'	'0'
       config wifi-device  radio0
       option type     mac80211
       option channel  11
       option macaddr  8c:21:0a:d8:6e:3f
       option hwmode   11ng
       option htmode   HT20
       list ht_capab   SHORT-GI-20
       list ht_capab   SHORT-GI-40
       list ht_capab   RX-STBC1
       list ht_capab   DSSS_CCK-40
       # REMOVE THIS LINE TO ENABLE WIFI:
       option disabled O

config wifi-iface
       option device   wlan0
       option network  wifi
       option mode     ap
       option ssid     'public'
       option encryption none

DHCP

Ensuite on configure le DHCP pour fournir sur le reseau wifi des IPs entre 192.168.2.10 et 192.168.2.20, avec un bail de 12 heures. Ajoutez au fichier /etc/dnsmasq.conf

dhcp-authoritative                            
dhcp-range=wlan0,192.168.2.10,192.168.2.20,12h 

Et relancez dnsmasq

/etc/init.d/dnsmasq restart

NoDogSplash

Editez /etc/nodogsplash/nodogsplash.conf

#
# Nodogsplash Configuration File
#
 
# Parameter: GatewayInterface
# Default: NONE
GatewayInterface wlan0

FirewallRuleSet authenticated-users {
   #  FirewallRule allow tcp port 80 to 192.168.254.254 

   #restric access to other networks
   FirewallRule block to 192.168.1.0/16
   #FirewallRule block to 10.0.0.0/8

   FirewallRule allow tcp port 53
   FirewallRule allow udp port 53
   FirewallRule allow tcp port 80 to 192.168.2.1
   FirewallRule allow tcp port 1234 to 192.168.2.1
   FirewallRule allow tcp port 8080 to 192.168.2.1
}

FirewallRuleSet preauthenticated-users {
   #FirewallRule allow tcp port 80 to 192.168.2.1
   #FirewallRule allow tcp port 8080 to 192.168.2.1
   FirewallRule allow tcp port 53
   FirewallRule allow udp port 53
}

FirewallRuleSet users-to-router {
   FirewallRule allow udp port 53
   FirewallRule allow tcp port 53
   #FirewallRule allow udp port 67
   #FirewallRule allow tcp port 22
   FirewallRule allow tcp port 80
   FirewallRule allow tcp port 443
}
 

# EmptyRuleSetPolicy directives
# Default EmptyRuleSetPolicies are set as follows:
# EmptyRuleSetPolicy authenticated-users passthrough
# EmptyRuleSetPolicy preauthenticated-users block
# EmptyRuleSetPolicy users-to-router block
# EmptyRuleSetPolicy trusted-users allow
# EmptyRuleSetPolicy trusted-users-to-router allow
EmptyRuleSetPolicy authenticated-users block
EmptyRuleSetPolicy preauthenticated-users block
EmptyRuleSetPolicy users-to-router block
EmptyRuleSetPolicy trusted-users block
EmptyRuleSetPolicy trusted-users-to-router block

# Parameter: GatewayName
# Default: NoDogSplash
GatewayName Temporary Autonomous Zone

# Parameter: GatewayAddress
# Default: Discovered from GatewayInterface
GatewayAddress 192.168.2.1

# Parameter: ExternalInterface
# Default: Autodetected from /proc/net/route
# ExternalInterface vlan1

# Parameter: RedirectURL
# Default: none
RedirectURL http://192.168.2.1

# Parameter: GatewayPort
# Default: 2050
# GatewayPort 2050

# Parameter: MaxClients
# Default: 20
MaxClients 30

# ClientIdleTimeout
# Parameter: ClientIdleTimeout
# Default: 10
# ClientIdleTimeout 10

# Parameter: ClientForceTimeout
# Default: 360
# ClientForceTimeout 360

# Parameter: AuthenticateImmediately
# Default: no
AuthenticateImmediately yes

# Parameter: MACMechanism
# Default: block
# MACMechanism block

# Parameter: BlockedMACList
# Default: none
# BlockedMACList 00:00:DE:AD:BE:EF,00:00:C0:1D:F0:0D

# Parameter: AllowedMACList
# Default: none
# AllowedMACList 00:00:12:34:56:78

# Parameter: TrustedMACList
# Default: none
# TrustedMACList 00:00:CA:FE:BA:BE, 00:00:C0:01:D0:0D

# Parameter: PasswordAuthentication
# Default: no
# PasswordAuthentication no

# Parameter: Password
# Default: none
# Password nodog

# Parameter: UsernameAuthentication
# Default: no
# UsernameAuthentication no

# Parameter: Username
# Default: none
# Username guest

# Parameter: PasswordAttempts
# Default: 5
# PasswordAttempts 5

# Parameter: TrafficControl
# Default: no
# TrafficControl no

# Parameter: DownloadLimit
# Default: 0
# DownloadLimit 384

# Parameter: UploadLimit
# Default: 0
# UploadLimit 64

# Paramter: GatewayIPRange
# Default: 0.0.0.0/0
# GatewayIPRange 0.0.0.0/0

Relancer NoDosgSplash

/etc/init.d/nodogsplash stop
/etc/init.d/nodogsplash start
ndsctl status