Installation de chillispot sur un routeur sans-fil WRT54G-openwrt experimental
Par Thus0, samedi 7 mai 2005 à 14:19 :: Wi-Fi ::#36
Description / How-To...
Ce tutorial / How-To décrit l’installation du serveur captif Chillispot sur un routeur sans-fil Linksys WRT54G, flashé avec le firmware openwrt en version expérimentale.
N’hésitez pas à m’envoyer un petit mail pour toute remarque et améliorer ce How-To. 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 */
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é.
Architecture

routeur WRT54G :
| interface LAN [1] | 192.168.1.1 |
| interface WLAN [2] | 192.168.182.1 |
| interface WAN [3] | 10.0.0.10 |
| passerelle par défaut/gateway | 10.0.0.1 |
PC (serveur) relié au switch du WRT54G :
| interface LAN | 192.168.1.2 |
| masque de sous réseau/netmask | 255.255.255.0 |
| passerelle par défaut/gateway | 192.168.1.1 |
Installation de openwrt sur WRT54G
Télécharger le firmware expérimental sur le site openwrt.org
Uploader le firmware sur votre routeur par tftp avec le logiciel aftp (Advanced TFTP) (de préférence, n’utilisez-pas netkit-tftp: j’ai eu beaucoup de problèmes avec).
$ tftp
tftp> connect 192.168.1.1
tftp> mode octet
mode set to octet
tftp> trace
Packet tracing on.
tftp> verbose
Verbose mode on.
tftp> put openwrt-wrt54g-squashfs.binSi tout se passe correctement [4], vous pouvez vous connecter en telnet sur le routeur et modifier le mot de passe. Le serveur telnet sera alors désactivé et vous pourrez ensuite vous connecter en ssh sur votre routeur :
$ telnet 192.168.1.1
Trying 192.168.1.1...
Connected to 192.168.1.1.
Escape character is '^]'.
You need to set a login password to protect your
Router from unauthorized access.
Use 'passwd' to set your password.
telnet login will be disabled afterwards,
You can then login using SSH.
BusyBox v1.00 (2005.04.23-22:18+0000) Built-in shell (ash)
Enter 'help' for a list of built-in commands.
_______ ________ __
| |.-----.-----.-----.| | | |.----.| |_
| - || _ | -__| || | | || _|| _|
|_______|| __|_____|__|__||________||__| |____|
|__| W I R E L E S S F R E E D O M
root@OpenWrt:/# passwdAprès la modification de votre mot de passe, rebootez votre routeur et connectez-vous en ssh :
$ ssh root@192.168.1.1
root@192.168.1.1's password:
BusyBox v1.00 (2005.04.23-22:18+0000) Built-in shell (ash)
Enter 'help' for a list of built-in commands.
_______ ________ __
| |.-----.-----.-----.| | | |.----.| |_
| - || _ | -__| || | | || _|| _|
|_______|| __|_____|__|__||________||__| |____|
|__| W I R E L E S S F R E E D O M
root@OpenWrt:~# Configuration des paramètres du réseau sans-fil
Pour un hotspot, en général, la sécurité est désactivée. Dans cet article, Les paramètres du réseau sans-fil sont les suivants :
| identifiant réseau (ESSID) | monhotspot |
| canal/channel | 10 |
| sécurité | désactivée |
# nvram set wl0_mode=ap
# nvram set wl0_ssid=monhotspot
# nvram set wl0_auth_mode=open
# nvram set wl0_wep=disabled
# nvram set wl0_channel=10
# nvram commitConfiguration des paramètres TCP/IP
La configuration des paramètres TCP/IP dépend de la version de votre WRT54G.
WRT54G v1.x
Les interfaces réseau du WRT54G v1.x sont les suivantes :
| LAN | vlan2 |
| WLAN | eth2 |
| WAN | vlan1 |
# nvram set lan_ifname=vlan2
# nvram set lan_proto=static
# nvram set lan_ipaddr=192.168.1.1
# nvram set lan_netmask=255.255.255.0
# nvram set wifi_ifname=eth2
# nvram set wifi_proto=static
# nvram set wifi_ipaddr=0.0.0.0
# nvram set wifi_netmask=0.0.0.0
# nvram set wan_ifname=vlan1
# nvram set wan_proto=static
# nvram set wan_ipaddr=10.0.0.10
# nvram set wan_netmask=255.255.255.0
# nvram set wan_gateway=10.0.0.1
# nvram set lan_dns=10.0.0.1
# nvram commit
# reboot
WRT54G v2.x/WRT54GS v1.x
Les interfaces réseau du WRT54G v2.x / WRT54GS v1.x sont les suivantes :
| LAN | vlan0 |
| WLAN | eth1 |
| WAN | vlan1 |
# nvram set lan_ifname=vlan0
# nvram set lan_proto=static
# nvram set lan_ipaddr=192.168.1.1
# nvram set lan_netmask=255.255.255.0
# nvram set lan_gateway=0.0.0.0
# nvram set wifi_ifname=eth1
# nvram set wifi_proto=static
# nvram set wifi_ipaddr=0.0.0.0
# nvram set wifi_netmask=0.0.0.0
# nvram set wan_ifname=vlan1
# nvram set wan_proto=static
# nvram set wan_ipaddr=10.0.0.10
# nvram set wan_netmask=255.255.255.0
# nvram set wan_gateway=10.0.0.1
# nvram set lan_dns=10.0.0.1
# nvram commit
# rebootInstallation de Chillispot-1.0RC3-1
A la date de rédaction de cet article, les versions fournies par openwrt sont les suivantes : chillispot-1.0RC3-1 et kmod-tun-2.4.30-1.
# ipkg update
# ipkg install kmod-tun
Downloading http://openwrt.org/downloads/experimental/bin/packages/kmod-tun_2.4.30-1_mipsel.ipk ...
Connecting to openwrt.org[208.185.247.160]:80
kmod-tun_2.4.30-1_mi 100% |**************************************************************************************| 4695 00:00 ETA
Done.
Unpacking kmod-tun...Done.
Configuring kmod-tun...Done.
# ipkg install chillispot
ipkg_depends: Warning: tun-module mentioned in dependency but no package found in /usr/lib/ipkg/lists
Downloading http://openwrt.org/downloads/experimental/bin/packages/chillispot_1.0RC3-1_mipsel.ipk ...
Connecting to openwrt.org[208.185.247.160]:80
chillispot_1.0RC3-1_ 100% |**************************************************************************************| 60574 00:00 ETA
Done.
ipkg_depends: Warning: tun-module mentioned in dependency but no package found in /usr/lib/ipkg/lists
Unpacking chillispot...Done.
Configuring chillispot...Done.Configuration de chillispot
Le daemon chillispot fournit son propre serveur DHCP, il faut donc désactiver le serveur DHCP :
# rm /etc/init.d/S50dnsmasqModifier le fichier /etc/chilli.conf (cf. Installation de chillispot sur une Debian sarge (testing)) et vérifier que la variable dhcpif correspond à l’interface WLAN de votre WRT54G
| WRT54G v1.x | dhcpif eth2 |
| WRT54G v2.x/WRT54GS v1.x | dhcpif eth1 |
Décommenter les lignes suivantes dans le fichier /etc/chilli.conf
| radiusserver1 | 192.168.1.2 | IP du serveur d’authentification Radius |
| radiusserver2 | 192.168.1.2 | IP du serveur d’authentification Radius |
| radiussecret | secretradius | secret partagé entre le serveur Radius et le daemon chillispot |
| radiusnasid | WRT54G-Chillispot | NAS-ID : identifiant de votre chillispot |
| radiuslocationid | isocc=fr,cc=33,ac=75007,network=monhotspot | WISPr-Location-ID de la forme : isocc=PAYS, cc=CODE PAYS, ac=Ville, network=ESSID |
| radiuslocationname | PSF,Invalides | |
| dhcpif | eth2 | pout un WRT54G v1.x ou eth1 pour un WRT54G v2.x/WRT54GS v1.x |
| uamserver | https://192.168.1.2/cgi-bin/hotspotlogin.cgi | |
| uamsecret | secretchilli | secret partagé entre chilli et le serveur web d’authentification |
| uamallowed | www.chillispot.org,192.168.1... web accessibles sans authentification |
Configuration des règles iptables du Firewall
Supprimer les règles iptables fournies par openwrt et les remplacer par le script suivant :
# rm /etc/init.d/S45firewall
# cd /etc/init.d
# wget http://www.pervasive-network.org/SPIP/IMG/txt/S45firewall.txt
# mv S45firewall.txt S45firewall
# chmod u+x /etc/init.d/S45firewallAttention : ce script permet de se connecter en SSH sur le port WAN. Si vous voulez interdire l’accès en SSH depuis Internet sur votre WRT54G, commentez la ligne correspondante dans le script (vous pourrez toujours vous connecter depuis votre réseau filaire LAN).
Installation du serveur d’authentification sous Debian
cf. le chapitre correspondant de l’article : Installation de chillispot sur une Debian sarge (testing). Télécharger le fichier hotspotlogin.cgi et l’installer dans le répertoire cgi-bin de votre serveur web :
# cd /usr/lib/cgi-bin
# wget http://www.pervasive-network.org/SPIP/IMG/txt/hotspotlogin.txt
# mv hotspotlogin.txt hotspotlogin.cgi
# chmod a+x hotspotlogin.cgiDans ce fichier, modifier la variable $uamsecret et mettre la même valeur que dans le fichier /etc/chilli.conf sur le WRT54G
$uamsecret = "secretchilli";Configuration du serveur Freeradius sous Debian
cf. le chapitre correspondant de l’article : Installation de chillispot sur une Debian sarge (testing)
Dans le fichier /etc/freeradius/clients.conf, ajoutez les lignes suivantes :
client 192.168.1.1 {
secret = {{secretradius}} /* mettre le meme secret partagé que dans le fichier /etc/chilli.conf */
shortname = openwrt-chillispot
nastype = other
}
Ajoutez un utilisateur dans Freeradius
Modifier le fichier /etc/freeradius/users
Thus0 Auth-Type:=Local, User-Password=="toto"Test de l’install de Chillispot
cf. le chapitre correspondant de l’article : Installation de chillispot sur une Debian sarge (testing)
Lancer le serveur chillispot sur le routeur WRT54G
# insmod tun
# /etc/init.d/S45firewall
# chilli -f -dDernière étape
Si tout fonctionne bien, vous pouvez rendre les changements permanents pour que chillispot soit lancé automatiquement au démarrage du WRT54G
# mv /etc/init.d/chilli /etc/init.d/S60chilliEn cas de problème : firstboot
Si après l’upload du firmware, vous n’arrivez pas à vous connecter au routeur WRT54G, il faut démarrer le routeur dans un mode particulier, appelé "failsafe" (le routeur s’auto-attribue l’adresse IP : 192.168.1.1)
débrancher le cordon d’alimentation du routeur
rebrancher le cordon d’alimentation du routeur
attendre que la diode DMZ s’allume et appuyer 2 secondes sur le bouton reset situé à l’arrière du routeur
Vous devrez alors pouvoir vous connecter en telnet sur le routeur et initialiser le système de fichiers du routeur :
$ telnet 192.168.1.1
root@OpenWrt:~# firstboot... puis rebooter le routeur
Autres tutoriaux
- [http://www.howtoforge.com/wireless_...] (décembre 2005)

Commentaires
I need help. I read a how to. I installed freeradius and configured in 192.168.1.6 the ip of wrt54g is 192.168.1.2 the ip of the router is 192.168.1.1 and the ip os Laptop is : the chillispot provide 192.168.1.102 and gateway "192.168.1.2". The wrt54g can ping to "192.168.1.1" and "192.168.1.6" but can’t ping to wrt54g clients example : root@OpenWrt : # chilli -f -d ChilliSpot version 1.0RC3 started. Waiting for client request... chillispot[443] : chilli.c : 3041 : New DHCP request from MAC=00-0E-35-6F-E1-C5 New DHCP connection established DHCP requested IP address chillispot[443] : chilli.c : 3011 : Client MAC=00-0E-35-6F-E1-C5 assigned IP 192.168.1.102 ping 192.168.1.102 PING 192.168.1.102 (192.168.1.102) : 56 data bytes
I have a problem the laptop can’t ping anything but wt54g can ping to router and "server freeradius" but can’t ping to her clients. Regards
bonjour et merci pour le tuto, j’ai un p’tit soucis, j’ai le fichier chilli.conf qui se trouve dans /jffs/etc/chilli.conf et quand je veux lancer chilli il le cherche dans /etc/chilli.conf et impossible de le deplacer ou de la copier. Je me serai tromper quelques part ? ou bien y at’il qques choses que j’aurai du faire et que je n’ai pas fait. Ou bien peut ’etre qui il y a un autre moyen de le lancer depuis son emplacement ? Merci de me repondre Cordialement Cyril
bonjour, je suis sur ubuntu 6.0.6 et quand je tape la commande apt-get install chillispot le système me dit impossible de trouver le paquet chillispot et d’après les informations que j’ai eu ubuntu fonctionne comme débian