A propos...

N’hésitez pas à m’envoyer un petit mail pour toute remarque et améliorer ce tutorial. J’ai également écrit une documentation sur l’installation de chillispot sur une Debian, disponible ici : Installation de chillispot sur une Debian sarge (testing)

Rq : les commentaires dans le code sont en italique : exemple de commentaire ou /* autre commentaire */

Modif : article mis à jour le 2005/05/05. Une nouvelle version de l’article est diponible ici : Installation de chillispot sur un routeur sans-fil WRT54G-openwrt experimental

Chillispot

Le logiciel ChilliSpot est un portail web captif destiné à "sécuriser" le partage d’une connexion sans-fil en redirigeant les utilisateurs vers une page web sur laquelle ils doivent s’authentifier via https avec un login/mot de passe, stoqué dans un serveur Radius. Pour cela, ChilliSpot crée une nouvelle interface réseau "tun0" par laquelle tout le trafic sans-fil passera et sera filtré.

Installation du WRT54G

à compléter...

- Configuration des paramètres NVRAM


# nvram set lan_ifname=vlan2                (=vlan2 sur v1.1) (=vlan0 sur v2)
# nvram set lan_proto=static
# nvram set lan_ipaddr= ?
# nvram set lan_netmask=255.255.255.0
# nvram set lan_ifnames="vla0 eth3"

# nvram set wan_ifname=vlan1
# nvram set wan_proto=static
# nvram set wan_ipaddr= ?
# nvram set wan_netmask=255.255.255.0
# nvram set wan_gateway= ?
# nvram set wan_dns= ?

# nvram set wl0_ifname=eth2
# nvram set wifi_ifname=eth2                (=eth2 sur v1.1) (=eth1 sur v2)
# nvram set wl0_mode=ap
# nvram commit
# /etc/init.d/S40network restart

- Installation du module Tun/Tap


# cd /tmp
# wget http://www.wildcatwireless.net/wrt54g/tun-modules_2.4.20-wrt1_mipsel.ipk
# ipkg install tun-modules_2.4.20-wrt1_mipsel.ipk

- Installation du package Chillispot


# cd /tmp
# wget http://www.chillispot.org/download/chillispot_1.0RC3-1_mipsel.ipk
# ipkg install chillispot_1.0RC3-1_mipsel.ipk
# chmod u+x /etc/firewall.openwrt

le daemon chillispot fournit son propre serveur DHCP, il faut donc désactiver le serveur DHCP :


# rm /etc/init.d/S50dnsmasq

Configuration de Chillispot

Modifier le fichier /etc/chilli.conf :

à compléter... pour le moment, voir la documentation similaire de l’article : Installation de chillispot sur une Debian sarge (testing)

Configuration des règles iptables du Firewall

Désactiver les règles par défaut de openwrt


# rm /etc/init.d/S45firewall
# mv /etc/firewall.openwrt /etc/init.d/S45firewall

Modifier le fichier /etc/init.d/S45firewall


WANIF=$(nvram get wan_ifname)
WLANIF= ?
LANIF= ?

Installation du serveur sous Debian

- Configuration des paramètres réseau

- Configuration de Freeradius

Rajouter dans le fichier /etc/freeradius/clients.conf, les lignes suivantes :


client 192.168.3.1 {
       secret          = secretradius (mettre le meme secret partagé que dans le fichier /etc/chilli.conf
        shortname        = openwrt-chillispot
        nastype                = other
}

Test de l’install de ChilliSpot

Démarrer Chillispot en mode debug


# /usr/sbin/brctl delif br0 eth1 /* à vérifier */
# /sbin/insmod tun
# /usr/sbin/chilli --debug --fg

Attention, le daemon chilli fait office de serveur DHCP, donc arrêtez votre serveur DHCP avant de le lancer.

Sur le poste client sans-fil, si besoin renouveler l’adresse son adresse IP (sous Microsoft Windows, taper dans une console DOS : ipconfig /renew) puis ouvrir un navigateur et taper une URL, par exemple http://www.google.fr. Vous devriez être redirigé vers le CGI hotspotlogin.cgi pour vous authentifier :

[img]

Rentrez votre login/mot de passe. Une page de confirmation apparait et une popup devrait apparaître, indiquant le temps de connexion :

[img]

Si tout fonctionne bien, vous pouvez créer un script de démarrage


# vi /etc/init.d/S51chilli
<code>

et rajouter les lignes suivantes:
<code>
#!/bin/sh
#
# /usr/sbin/brctl delif br0 eth1 /* à vérifier */
# /sbin/insmod tun
# /usr/sbin/chilli

Proxy Transparent

Pour ceux que ca intéresse, j’utilise un proxy-cache transparent à base de squid+privoxy pour filtrer les pubs et sites indésirables... J’ai rajouté les 2 lignes suivantes dans le fichier /etc/chilli.iptables :


$IPTABLES -A INPUT -i tun0 -p tcp -m tcp --dport 3128  --syn -j ACCEPT
$IPTABLES -t nat -A PREROUTING -i tun0 -p tcp --dport 80 -j REDIRECT --to-port 3128