Raspberry Pi, CoovaChilli et Freeradius pour un Hotspot Wifi avec portail captif

Je vous avais parlé il y a un moment de faire un point d’accès Wifi en PHP et de contrôler les connexions. Seulement si le principe était simple, le résultat l’était aussi peut être un peu trop. Donc aujourd’hui on va installer un outil beaucoup plus abouti : CoovaChilli.

WiFI-Hotspot-Raspberry Pi

Attention : cet article est long, très long…

Qu’est-ce que CoovaChilli ?

CoovaChilli est la version OpenSource du projet ChilliSpot. Il propose une interface utilisateur pour authentifier les utilisateurs qui se connectent à un hotspot (pas forcément Wifi). Il a l’avantage de ne pas nécessiter de modules spécifiques au niveau du kernel, la gestion AAA est déléguée à un serveur RADIUS (local ou non) et l’authentification OAuth (non testée par votre serviteur).

Bref ca fait tout ce qu’il faut pour gérer son hotspot (y compris authentification 802.1x ou par adresse MAC) !

Qu’est ce que FreeRadius ?

FreeRadius (version OpenSource de RADIUS) permet d’avoir sur son serveur/machine un protocole réseau qui est utilisé pour gérer les authentifications et les comptes d’utilisateurs. Il permet de contrôler les accès (authentification) mais aussi d’en surveiller les usages et d’y appliquer des règles d’autorisation ou de rejet sur base d’attributs comme par exemple l’heure, la durée, le volume de données, etc.. Le fameux AAA : authentication, authorization, and accounting

Installation

Ce dont vous allez avoir besoin :

  • Un Raspberry Pi avec sa carte SD (minimum 2Gb)
  • Un adaptateur Wifi. Pensez à vérifier sa compatibilité avec le Raspberry au moment de l’achat ! De plus la taille de la clé va jouer sur sa portée et le débit proposé. Il pourrait vous falloir une clé Wifi avec antenne intégrée. Dans ce cas un hub USB alimenté pourra être utile.
  • Un câble Ethernet pour relier le Raspberry à votre routeur. C’est par cette connexion que le Raspberry doit avoir accès à Internet (et que le SSH doit être disponible)

La connexion sur le hotspot se fait sur l’interface Wifi. Le Raspberry doit donc être connecté à Internet via le câble Ethernet. C’est d’ailleurs par lui que je vais me connecter en SSH pour faire l’installation et configuration.

Concernant le système d’exploitation, j’ai installé une Raspbian minimaliste par le réseau pour qu’elle soit à jour. Vous trouverez toutes les démarches ici.

Le Wifi

Il s’agit de mettre en place votre dongle wifi pour pouvoir faire office de hotspot. J’utilise une clé Ralink RT5370:

Ralink Technology, Corp. RT5370 Wireless Adapter

Utilisant un composant non supporté par défaut il a donc fallu mettre en place un module avant de configurer l’interface :

  1. Télécharger le module pour supporter le rt2870 (si vous en avez besoin !)
    wget "http://git.kernel.org/?p=linux/kernel/git/firmware/linux-firmware.git;a=blob_plain;f=rt2870.bin" -O /lib/firmware/rt2870.bin
  2. Désactiver le mode turbo qui pose des problèmes de stabilité (si vous utilisez une clé avec un chipset rt2870)
    bash -c "echo options smsc95xx turbo_mode=N > /etc/modprobe.d/smscnonturbo.conf"
  3. Vous pouvez redémarrer le Raspberry pour que le module soit pris en charge. La commande « ifconfig -a » va lister votre nouvelle interface.
  4. Pensez à contrôler que cette clé peut être utilisée en tant que point d’accès (c’est quand même le but !) :
    • Téléchargez les outils iw pour obtenir des informations sur votre clé Wifi
      wget https://www.kernel.org/pub/software/network/iw/iw-3.14.tar.gz
      tar zxvf iw-3.14.tar.gz
      cd iw-3.14
      make
    • Vous pouvez maintenant tester si votre clé Wifi supporte le mode Access Point avec la commande iw list

      Si vous avez « AP » (Access Point) dans les modes supportés, c’est gagné !
  5. Pour configurer maintenant cette interface, il faut éditer le fichier /etc/network/interfaces et y ajouter la configuration suivante à la fin du fichier :
    auto wlan0
    allow-hotplug wlan0
    iface wlan0 inet static
        address 192.168.10.1
        netmask 255.255.255.0
        network 192.168.10.0
        post-up echo 1 > /proc/sys/net/ipv4/ip_forward
    

    Vous définissez le réseau 192.168.10.0 comme étant celui lié à l’interface Wifi. Votre clé sera le routeur du réseau. Et vous activez l’IP forwarding pour lier l’interface sans fil avec l’interface Ethernet.

  6. Enfin il faut activer l’IP Forwarding au niveau système. Je pense que cela fait double emploi avec le post-up de l’interface, mais il vaut mieux être sûre. Enlever le caractère # à la ligne 29 du fichier /etc/sysctl.conf :
    net.ip4.ip_forward=1

    Pour une prise en charge immédiate, exécutez la commande

    /etc/init.d/networking restart

Freeradius

  1. Préparation de l’installation des paquets. Le mot de passe Mysql est fixé à « raspbian ». Vous pouvez bien entendu mettre ce que vous voulez mais pensez à changer la valeur dans les différentes instructions sur la base de données.
    apt-get install -y debconf-utils
    debconf-set-selections <<< 'mysql-server mysql-server/root_password password raspbian'
    debconf-set-selections <<< 'mysql-server mysql-server/root_password_again password raspbian'
    apt-get install -y debhelper libssl-dev libcurl4-gnutls-dev mysql-server freeradius freeradius-mysql gcc make libnl1 libnl-dev pkg-config iptables
  2. Configuration de FreeRadius :
    1. Création de la base de données dans MySQL dédiée à FreeRadius. Vous devrez saisir le mot de passe demandé lors de l’installation de MySQL.
      echo "create database radius;" | mysql -u root -praspbian
    2. Installation du schéma de la base radius que nous venons de créer
      mysql -u root -praspbian radius < /etc/freeradius/sql/mysql/schema.sql
    3. Installation de la partie d’administration. Cela va créer un utilisateur d’administration et lui donner tous les droits nécessaires.
      mysql -u root -praspbian radius < /etc/freeradius/sql/mysql/admin.sql
    4. Installation de tables supplémentaires pour le NAS
      mysql -u root -praspbian radius < /etc/freeradius/sql/mysql/nas.sql
    5. Editez le fichier /etc/freeradius/radiusd.conf pour charger le module SQL. Il faut décommenter la ligne 700 :
      freeradius sql module
    6. Vous devez activer l’authentification par la base MySQL. Pour ça éditez le fichier /etc/freeradius/sites-enabled/default et cherchez les lignes où sql est commenté. Chez moi je l’ai trouvé trois fois aux lignes 177, 406 et 454. Vous enlevez la mise en commentaire en supprimant # du début de chaque ligne.
    7. Vous pouvez dès maintenant tester votre configuration en arrêtant FreeRadius et en le relançant en mode debug.
      service freeradius stop

      puis

      freeradius -X

      Si vous n’avez pas d’erreur c’est champagne !
      freeradius ready

    8. Nous allons faire un test de connexion. Pour cela, nous allons créer un utilisateur de test usertest avec son mot de passe passwd
      echo "insert into radcheck (username, attribute, op, value) values ('usertest', 'Cleartext-Password', ':=', 'passwd');" | mysql -u root -praspbian radius

      Et maintenant pour tester vous utilisez la commande

      radtest usertest passwd localhost 0 testing123

      La valeur testing123 vient du fichier de configuration /etc/freeradius/clients.conf. C’est le mot « secret » qui va être utilisé pour sécuriser la connexion entre FreeRadius et ce qui s’appelle le NAS, ce qui va capter les connexions.
      Vous devrez donc changer cette valeur lorsque vous allez installer votre hotspot en « production » !
      freeradius radtest

CoovaChilli

  1. Compilation et installation de CoovaChilli
    1. Téléchargez l’archive
      cd /usr/src
      wget https://coova.github.io/Download/coova-chilli-1.3.0.tar.gz
      tar zxvf coova-chilli-1.3.0.tar.gz
      cd coova-chilli-1.3.0
    2. Lancez la configuration pour la compilation
      export CFLAGS= "-Wno-error"
      ./configure  --prefix=/usr --mandir=\$${prefix}/share/man \
      --infodir=\$${prefix}/share/info \
      --sysconfdir=/etc --localstatedir=/var --enable-largelimits \
      --enable-binstatusfile --enable-statusfile --enable-chilliproxy \
      --enable-chilliradsec --enable-chilliredir --with-openssl --with-curl \
      --with-poll --enable-dhcpopt --enable-sessgarden --enable-dnslog \
      --enable-ipwhitelist --enable-redirdnsreq --enable-miniconfig \
      --enable-libjson --enable-layer3 --enable-proxyvsa --enable-miniportal \
      --enable-chilliscript --enable-eapol --enable-uamdomainfile \
      --enable-modules --enable-multiroute
      
    3. Modifiez le niveau de compatibilité pour la compilation
      echo 9 > debian/compat
    4. Modifier le répertoire où va être créé le paquet en modifiant la ligne 54 du fichier /usr/src/coova-chilli-1.3.0/debian/rules :
      $(MAKE) DESTDIR=/ install
    5. Lancez la compilation
      dpkg-buildpackage -us -uc

      Vous devriez obtenir un paquet prêt à être installé (au bout de 15 minutes environ sur un modèle B 512Mb)!

    6. Installez le paquet
      cd ..
      dpkg -i coova-chilli_1.3.0_armhf.deb

      Utilisez l’option Y lorsqu’on va vous poser une question. L’erreur à la fin est normale car nous n’avons pas encore configuré CoovaChilli et n’existe pas (en principe)
      Capture d’écran 2015-07-15 à 21.00.48

  2. Compilation et installation de Haserl. Il s’agit d’un outil qui à partir de script UNIX ou LUA va générer des script CGI. Il est nécessaire pour le fonctionnement de CoovaChilli.
    1. Téléchargez Haserl
      cd /usr/src
      wget http://downloads.sourceforge.net/project/haserl/haserl-devel/haserl-0.9.35.tar.gz
      tar zxvf haserl-0.9.35.tar.gz
      cd haserl-0.9.35
    2. Compilez puis installer Haserl
      ./configure && make && make install
  3. Configurer CoovaChilli
    1. A la fin du fichier /etc/chilli/up.sh vous ajoutez la ligne
      iptables -I POSTROUTING -t nat -o $HS_WANIF -j MASQUERADE

      Elle va permettre de transférer ce qui arrive par le Wifi vers l’Ethernet

    2. Dans le fichier /etc/default/chilli vous remplacez
      START_CHILLI=0

      par

      START_CHILLI=1

      Cela autorise le démarrage de CoovaChilli

    3. Dans le fichier /etc/chilli/wwwsh il faut donner l’emplacement exact de haserl à la ligne 9
      haserl=/usr/local/bin/haserl
    4. Dans le fichier /etc/chilli/config se trouve la configuration principale de Chilli. Là où vous allez pouvoir définir quelles interfaces sont utilisées, quel réseau, etc. Certaines des valeurs ci-dessous sont commentées par défaut, il faudra donc enlever le # en début de ligne si nécessaire. Et toutes ces valeurs ne sont pas regroupées au même endroit.
      HS_WANIF=eth0
      HS_LANIF=wlan0
      HS_NETWORK=192.168.10.0
      HS_UAMLISTEN=192.168.10.1
      HS_UAMALLOW=192.168.10.0/24
      HS_SSID=PiHomeServerAP

      Le détail des paramètres configurés :
      HS_WANIF est l’interface reliée à Internet
      HS_LANIF est l’interface du Wifi/Hotspot
      HS_NETWORK le réseau du hotspot
      HS_UAMLISTEN la gateway du réseau du hotspot
      HS_UAMALLOW les IP du réseau du hotspot autorisées à se connecter
      HS_SSID le SSID (ne semble pas avoir d’effet)

    5. Rendre le démarrage définitif
      update-rc.d chilli start 99 2 3 4 5 . stop 20 0 1 6 .
  4. Démarrez le service
    service chilli start

    Avec la commande ifconfig vous devriez voir apparaitre une interface tun0 qui confirme que CoovaChilli est bien exécuté.
    Capture d’écran 2015-07-15 à 21.29.18

Hostapd

  1. Pour rendre votre point d’accès Wifi visible, nous allons installer hostapd qui va faire tout le travail
    apt-get install -y hostapd
  2. Editer le fichier /etc/default/hostapd et ajouter à la fin :
    DAEMON_CONF="/etc/hostapd/hostapd.conf"
  3. Editer le fichier /etc/hostapd/hostapd.conf (qui n’existe pas encore) et y copier les lignes suivantes :
    # interface wlan du Wi-Fi
    interface=wlan0
    # nl80211 avec tous les drivers Linux mac80211
    driver=nl80211
    # Nom du spot Wi-Fi
    ssid=PiHomeServerAP
    # mode Wi-Fi (a = IEEE 802.11a, b = IEEE 802.11b, g = IEEE 802.11g)
    hw_mode=g
    # canal de fréquence Wi-Fi (1-14)
    channel=6
    # Wi-Fi ouvert, pas d'authentification !
    auth_algs=1
    # Beacon interval in kus (1.024 ms)
    beacon_int=100
    # DTIM (delivery trafic information message)
    dtim_period=2
    # Maximum number of stations allowed in station table
    max_num_sta=255
    # RTS/CTS threshold; 2347 = disabled (default)
    rts_threshold=2347
    # Fragmentation threshold; 2346 = disabled (default)
    fragm_threshold=2346
  4. Vous pouvez démarrer manuellement le service
    service hostapd start

Nous voilà arriver à la fin de la configuration ! Ouf ! Il est temps de tester la connexion (avec le user créé plus haut : usertest / passwd) :

  1. Se connecter au point d’accès
    raspberry pi hotspot SSID selection
  2. Vous allez automatiquement avoir une fenêtre de redirection (sur mon Mac. Sur iPhone/iPad/Windows il faut essayer d’accéder à Internet via le navigateur)
    raspberry pi hotspot redirection
  3. Saisissez vos identifiants (usertest / passwd)
    raspberry pi hotspot login
  4. Vous aurez ensuite des écrans confirmant la connexion
    raspberry pi hotspot success raspberry pi hotspot success end
  5. A vous les joies d’Internet par votre Hotspot !
    raspberry pi hotspot wifi coovachilli freeradius internet

Bonus : daloRADIUS

Ok mais certains d’entre vous vont me poser la question : « oui mais comment je gère les utilisateurs ? », « Je dois faire une requête SQL à chaque fois ? ». En théorie oui ! Il n’y a pas d’interface par défaut pour FreeRadius. Sauf que … il existe des projets pour vous aider. Et daloRadius en fait partie ! Grâce à une interface web vous allez pouvoir gérer les utilisateurs, gérer leurs droits, heures de connexion, débits autorisés, etc.

  1. Installer un serveur web. Mon préféré reste Nginx.
    apt-get install -y php5-mysql php-pear php5-gd php-db php5-fpm libgd2-xpm libpcrecpp0 libxpm4 nginx php5-xcache
    apt-get remove -y apache2.2-bin apache2-utils apache2.2-common
  2. Télécharger daloRadius
    cd /usr/src
    wget http://downloads.sourceforge.net/project/daloradius/daloradius/daloradius0.9-9/daloradius-0.9-9.tar.gz
    tar zxvf daloradius-0.9-9.tar.gz -C /usr/share/nginx/www/
    mv /usr/share/nginx/www/daloradius-0.9-9 /usr/share/nginx/www/daloradius
    cd /usr/share/nginx/www/daloradius
  3. Ajouter les informations utilisées par daloRadius dans la base de données de FreeRadius
    mysql -u root -praspbian radius < /usr/share/nginx/www/daloradius/contrib/db/fr2-mysql-daloradius-and-freeradius.sql
    mysql -u root -praspbian
    GRANT ALL ON radius.* to 'radius'@'localhost';
    GRANT ALL ON radius.* to 'radius'@'127.0.01';
    exit;
  4. Dans le fichier /usr/share/nginx/www/daloradius/library/daloradius.conf.php vous définissez les droits d’accès à la base de données (ici les valeurs par défaut)
    $configValues['CONFIG_DB_USER'] = 'radius';
    $configValues['CONFIG_DB_PASS'] = 'radpass';
    $configValues['CONFIG_DB_NAME'] = 'radius';
  5. Mettre à jour la configuration du site par défaut en activant le support PHP. Les informations sont à ajouter (ou enlever les commentaires) dans la section server.
    A la ligne 25 (toujours par défaut)

    index index.php index.html index.htm;

    Et activer le support PHP

    location ~ .php$ {
    fastcgi_split_path_info ^(.+\.php)(/.+)$;
    fastcgi_pass unix:/var/run/php5-fpm.sock;
    fastcgi_index index.php;
    include fastcgi_params;
    }
  6. Redémarrez Nginx
    service nginx restart
  7. Vous pouvez maintenant vous connecter sur http://<ip de votre raspberry>/daloradius
    Login : administrator / Password : radius

Alors maintenant comment créer un utilisateur ? Rien de plus simple :

  1. Connectez-vous puis allez dans l’onglet Management
    raspberry pi daloradius management hotspot
  2. Saisissez le Username puis Password et cliquez sur Apply. Vous pouvez bien sur choisir le type d’encodage du mot de passe, saisir des informations sur l’utilisateur et … des attributs. Nous y reviendrons plus tard (oui ça n’est pas encore terminé !)
    raspberry pi daloradius management hotspot create user

Vous pouvez dès maintenant utiliser cet identifiant. Il apparait dans la liste des utilisateurs avec un beau drapeau vert pour signaler que l’utilisateur est activé.raspberry pi daloradius management hotspot list users

Double bonus : les attributs

Nous avons un hotspot Wifi, un service d’authentification, une interface de gestion des utilisateurs. Mais comment faire pour définir des heures de connexions ? Une durée de connexion ? Un volume de données maximum ? Bref que ce ne soit pas open bar all inclusive !

Tout se passe au niveau des attributs associés à un utilisateur. Dans l’interface de daloRadius, vous pouvez éditer un utilisateur et lui ajouter des attributs.

hotspot raspberry pi coovachilli daloradius attributes

Ci dessus, j’ajoute à l’utilisateur pi, l’attribut Login-Time avec la valeur Wk1800-2100. L’utilisateur ne pourra se connecter que de 18:00 à 21:00 du lundi au vendredi. Vous pouvez aller plus loin : « Wk0855-2355,Sa,Su1655-2305 », les jours de la semaine de 08:55 à 23:55, le samedi et le dimanche de 16:55 à 23:05.

Vous pouvez retrouver plus en détail certains attributs ici. Les plus courants : Login-Time, Simultaneous-Use, Expiration. Malheureusement je n’ai pas trouvé un endroit où l’ensemble des attributs sont détaillés avec leur signification et les valeurs possibles. Si vous avez un lien n’hésitez pas à le partager dans les commentaires.

Si vous êtes arrivés au bout de cet article vous méritez une médaille ! Mais vous avez maintenant un super hotspot raspberry inside !

Prochaine étape : intégrer Squid comme proxy transparent ?

Sources :

  • https://www.raspberrypi.org/forums/viewtopic.php?t=24105&p=224789
  • http://doc.ubuntu-fr.org/coovachilli
  • http://ehc.ac/p/radiusdesk/wiki/install_ubuntu_nginx/?version=14#install-radiusdesk
  • http://www.binaryheartbeat.net/2013/12/raspberry-pi-based-freeradius-server.html
  • google, bing, duckduck, etc.

Vous aimerez peut être aussi...

  • Excellent article, ça m’étonne qu’il n’y ait pas encore de commentaires ! 😀
    Je n’ai pas encore eu l’occasion de tester ceci dit, mais ça ressemble très fort à ce que l’on faisait pendant mes études (à la diférence qu’on utilisait du matériel Cisco pour AP et Switch, mais couplé avec une Debian), je reconnais beaucoup d’étapes dans le processus.
    Je pense que je tenterai d’appliquer ton tuto, mais sans utiliser le raspberry pour le WiFi. A la place, j’ai un petit routeur TP-Link WR841ND sur lequel j’ai flashé DD-WRT. Il est compatible Chillispot et il suffit de renseigner l’adresse du serveur radius.
    Bon par contre j’ai un peu du mal à première vue à distinguer la différence entre le « NAS ID » et UAM Secret, ainsi que les UAM allowed/domains (cfr screenshot)
    Le but à terme sera sans doute d’implémenter cette solution dans un petit hôtel 🙂
    A voir s’il faudra plusieurs AP.

  • J’ajouterais aussi que je viens de découvrir RadiusDesk (je vois un lien dans les sources, mais leur site officiel est très bien fait avec beaucoup de guides), visiblement ça a l’air excellent pour gérer les utilisateurs, un peu comme daloradius, avec une interface web qui semble un peu plus conviviale

    • Salut
      Je n’ai pas réussi à faire fonctionner radiusdesk sur le raspberry je me suis dpnc rabattu sur daloradius qui est effectivement moins sexy !

  • Lucas F

    Bonjour,
    Excellent tuto, que je mettrai en place sous peu.

    Cependant, y-a-t-il moyen de mettre en place une limitation de la bande passante ? Par exemple, ne pas dépasser 1MB/S pour le « serveur » en général, ou encore pour chaque user ?
    Merci

    • Salut,

      Oui c’est possible dans FreeRadius avec les options WISPr-Bandwidth-Max-Down et WISPr-Bandwidth-Max-Up

  • JNO

    Bonjour,
    Excellent tuto !

    La législation française impose de conserver les traces … est-ce le cas ici avec FreeRadius (si oui comment faut-il faire ?) ou cela nécessite-t-il Squid obligatoirement ?
    Merci

    • Salut,
      Squid ne conserve que les accès depuis les IP locales. Est-ce suffisant ? Je pense que dans le cas d’attribution d’une IP locale à un identifiant il faut aussi conserver l’information pour pouvoir savoir qui se cache derrière la connexion. Ca doit être faisable dans FreeRadius mais je ne sais pas comment …

  • JNO

    Re-bonjour,
    J’ai essayé de mettre tout cela en place sur une raspberry PI 2 (raspbian Jessie). Malheureusement, la compilation de CoovaChilli échoue : #dpkg-buildpackage -us -uc


    main-opt.c: In function ‘main’:
    main-opt.c:786:29: error: ‘ptr’ may be used uninitialized in this function [-Werror=maybe-uninitialized]
    _options.uamdomains[i++] = STRDUP(tok);
    ^
    cc1: all warnings being treated as errors
    Makefile:755: recipe for target ‘main-opt.o’ failed
    make[4]: *** [main-opt.o] Error 1
    make[4]: Leaving directory ‘/usr/src/coova-chilli-1.3.0/src’
    Makefile:813: recipe for target ‘all-recursive’ failed
    make[3]: *** [all-recursive] Error 1
    make[3]: Leaving directory ‘/usr/src/coova-chilli-1.3.0/src’
    Makefile:313: recipe for target ‘all-recursive’ failed
    make[2]: *** [all-recursive] Error 1
    make[2]: Leaving directory ‘/usr/src/coova-chilli-1.3.0’
    Makefile:240: recipe for target ‘all’ failed
    make[1]: *** [all] Error 2
    make[1]: Leaving directory ‘/usr/src/coova-chilli-1.3.0’
    debian/rules:36: recipe for target ‘build’ failed
    make: *** [build] Error 2
    dpkg-buildpackage: erreur: debian/rules build a produit une erreur de sortie de type 2
    root@raspberrypi2:/usr/src/coova-chilli-1.3.0#

    Que faire ?
    Merci d’avance

    • On dirait que les warning sont traités comme des erreurs … A voir pour supprimer le flag de compilation
      -Werror dans le Makefile ?

      • JNO

        J’ai fait une recherche dans le répertoire /usr/src/coova-chilli-1.3.0 : il y a 9 fichiers dans lesquels on trouve l’option Werror.
        dans le fichier Makefile on trouve la ligne 490 : AM_CFLAGS = -D_GNU_SOURCE -Wall -Werror -fno-builtin

        Faut-il modifier ces 9 fichiers ? ou uniquement le fichier Makefile ? oubien ajouter une option « –disable-Werror » (je ne sais pas si c’est possible) dans la commande ./configure que vous indiquez dans le tuto ?

    • Patrick Dupertuis

      J’ai eu le même problème : il s’agit d’un bug de la dernière version de raspbian (jessie)
      Il faut désactiver la correction d’erreur et la création du package se fait sans problème.

      export CFLAGS= »-Wno-error »

      AVANT de faire :

      ./configure –prefix=/usr –mandir=$${prefix}/share/man
      –infodir=$${prefix}/share/info
      –sysconfdir=/etc –localstatedir=/var –enable-largelimits
      –enable-binstatusfile –enable-statusfile –enable-chilliproxy
      –enable-chilliradsec –enable-chilliredir –with-openssl –with-curl
      –with-poll –enable-dhcpopt –enable-sessgarden –enable-dnslog
      –enable-ipwhitelist –enable-redirdnsreq –enable-miniconfig
      –enable-libjson –enable-layer3 –enable-proxyvsa –enable-miniportal
      –enable-chilliscript –enable-eapol –enable-uamdomainfile
      –enable-modules –enable-multiroute

      • Mikymike

        Quelqu’un pourrait-il me dire commant on fais pour désactiver la correction d’erreur pour la création du package svp. Merci par avance.

        • C’est la commande export expliquée ci dessus par Patrick

          • Mikymike

            Ok je connaissai pas cette commande, je pensai que s’était à rajouter dans un fichier avant de lancer la compilation. Merci pour la réponse.

      • Joris Sjaaksken

        je rencontre le même souci mais même avec le ‘export CFLAGS= »-Wno-error »‘ je rencontre la même erreur.
        Quelqu’un a une autre solution?

    • Axl Mtz

      Hello,

      Hope you are well.

      I have the same problem with coovachilli.

      I am wonder if you can help me?

      Can you tell me how did you resolved it?

      Thank you.
      Regards.

      • Please look at patrick answer below. You have to set an env variable before compiling.

      • JNO

        Hello,

        I removed the Werror options from Makefile.am and Makefile.in the /usr/src/coova-chilli-1.3.0 directory.

        Good luck,
        Regards,

        2016-02-09 6:24 GMT+01:00 Disqus :

  • JNO

    Dans ce forum la longueur des messages est-elle limitée ?
    Cela fait plusieurs fois que j’essaie de poster mais mon message disparait après quelques minutes …

  • Thierry Fernandez

    Bonsoir,
    Problème résolu

  • Jeerapong Putthanbut

    Thank you so much for the nice tutorial 🙂

  • Gauthier

    Bonjour, c’est un tres bon tuto mais par contre j’aimerais savoir combien de personne au max peuvent se connecter simultanement a ce hotspot.

    • Bonjour,
      Techniquement c’est limité par la bande passante. Il est aussi possible de limiter le nombre de connexion

  • Paul

    De mon côté j’ai un problème lors de la compilation, j’ai bien suivi le tutoriel, même corrigé le bug avec les informations dans les commentaires, moi moi j’ai le problème la. (voir pj)

    Une idée?

    http://i.imgur.com/c4Dmbid.png

    • Bizarre on dirait que la partie documentation n’est pas présente. Est ce que ca bloque la suite ? Si oui peut etre desactiver cette partie …

      • Paul

        Oui car je ne peux pas avoir le .deb donc c’est assez important, j’ai tenter de réinstaller de tout refaire, rien n’y change.

        • Peut etre une mauvaise archive car les autres personnes ne rencontrent pas ce probleme

          • Paul

            Le lien http://ap.coova.org/chilli/coova-chilli-1.3.0.tar.gz n’existe plus, j’ai donc fait une recherche de l’archive sur Google, mais il est en effet possible que celle si ne soit pas bonne. Aurais tu un lien valide s’il te plaît?

          • Paul

            J’utilise « NOOBS » comme os (donc raspbian) ton tuto est fait pour celui la ou non?

          • J’utilise toujours la version réseau de Raspbian qui est allégée (bcp de paquets en moins)
            Donc oui c’est bien pour une Raspbian

          • Paul

            La ça a fonctionné sans problèmes 🙂

            Merci, si ta du temps à perdre faudrait faire un edit du post avec le nouvel url et la commande a mettre (export CFLAGS= »-Wno-error »)

            Merci !

          • Paul

            Après avoir fini le tuto jusqu’à l’étape « Hostapd 4 », et j’ai aucune diffusion. Pourtant, ma clé fonctionne bien car quand je fait un « iwlist scan » j’obtient bien le wifi de mon domicile.

            La clé est une tl wn821n et la première étape avec iw list ne fonctionne pas… (voir pj) Je ne sais donc pas si ma clé supporte l’access point

            Je possède une autre clé (bien plus vielle) une Sagem xg-762n

          • Problème de drivers avec la clé. Il faut trouver quel est le bon driver à charger en fonction du modèle de clé. Il faut la référence exacte pour ensuite chercher dans Google

          • Paul

            Je suis pas sur que ça soit un problème de pilote car il arrive à faire un scan wifi…

          • Paul

            Je suis pas sur que ça soit un problème de pilote, car la il arrive bien à me faire un scan wifi…

  • Rodrigo Fuentes

    Hi, im having issues after running dpkg -i coova-chilli_1.3.0_armhf.deb it says

    Unpacking replacement coova-chilli …

    Setting up coova-chilli (1.3.0) …

    Starting chilli: SIOCSIFADDR: No such device

    eth1: ERROR while getting interface flags: No such devic

    But I only have a eth0 and wlan0 on my raspberry

    Thank you

    • Because default configuration files use eth1 but by default on the pi it’s eth0. Continue to next steps and in files replace eth1 with eth0

  • Kazadrur & Moonev (Kazadrur_Mo

    Bonjour,

    J’ai un problème avec la commande : export CFLAGS= « -Wno-error »
    Quand je la lance, il me met : -bash: export: « -Wno-error » : identifiant non valable

    Je suis pourtant bien dans le dossier coova-chilli-1.3.0/

    Merci d’avance !

    • C’est pas un soucis de repertoire mais de commande. Peut etre l’espace apres le egal. J’ai pas de machine unix sous la main pour tester

      • Kazadrur & Moonev (Kazadrur_Mo

        ok, je viens de tester : export CFLAGS= »-Wno-error »
        Plus d’erreur, mais rien ne se passe, c’est normal ?

        • Oui ca positionne une variable d’environnement
          Essaye
          echo $CFLAGS
          Ca va afficher la valeur

          • Kazadrur & Moonev (Kazadrur_Mo

            Ah ok ^^
            C’est bon, ça a marché !

            Merci d’avoir pris le temps de répondre, et merci pour le tuto !

  • Matteo Lioi

    it’ wheezy or jessy? a lot of problem when download package

  • Christophe

    Salut,

    D’abord merci pour ton tuto ! Il est très bien expliqué, mais j’ai un léger soucis

    J’ai configurer mon CoovaChilli et le hostapd mais lorsque je fais un « service hostapd start » tous ce passe bien mais IMPOSSIBLE de voir mon WIFI sur un PC Portable.. Je ne comprends pas pourquoi, j’ai vérifier chaque fichier et ils sont identiques au tiens.

    Merci pour ton aide ! 🙂

    PS : Ma clé wifi est une ALFA AWUS036NH (iw list renvoi bien le mode AP et j’étais co en WIFI avec)

    • Salut. Le problème vient de Hostapd qui ne génère pas le réseau wifi. D’après le lien (https://www.raspberrypi.org/forums/viewtopic.php?f=28&t=17489) malgré ce qui est marqué par la clé, l’AP ne fonctionne pas. Si tu as une autre clé il faut peut être l’essayer

      • Christophe

        Merci pour ta réponse,

        Au vu de ton lien, ma clé fonctionne (selon une réponse)

        J’ai une ALFA ASUW036NH et elle est utilisée avec aircrack etc..

        Je vais essayer avec une autre clé, mais lorsque je fais un  » hostapd -dd /etc/hostapd/hostapd.conf pour voir le fichier de conf, j’ai une erreur avec « nl80211 driver initialization failed » mais je ne sais pas quel autre driver je peux utiliser..

        Si tu as une idée 🙂

        PS : J’essaierai quand même avec une autre clé si j’en trouve une ^^

        • Ok au moins on sait d’ou vient le pb. Il faut trouver le driver associé. En debut d’article je montre pour compiler le support du chipset rt2870 present dns certaines clés. Si ca peut t’inspirer …

  • Matteo Lioi

    i’d like to create a rule for a Group of user to connent max for an half or hour. is possible?
    and
    how to create a system of payment for my hotspot to generate user name and automatically?
    the sistem preferred payment could be paypal
    great tutoria
    i’m installed on same raspberry
    freepbx, Wifi Hotspot with captive portal, and plex. great 🙂

  • Manoj Mathivanan

    I have set up an hotsopt with coovachilli & freeradius. Everything is working fine. I get a landing page, after logging in, I am able to access internet.

    Now, I have also hosted a web server which is listening at port 3740 in the same system as coovachilli and freeradius. I am not able to access that port from any system connected to the hotspot.

    My wifi hotspot access point IP is 192.168.10.1 and the webserver is running at port 3740. Even if I login to my hotspot, the port is not accessible. Can you let me know how to open this port?

    • Hi
      Are you sure that your server is listening to the correct interface / lan ?

      • Manoj Mathivanan

        Yes, it is listening to the proper interface. I did wget 192.168.10.1:3740 to test ‘wlan0’ and wget http:\192.168.1.2:3740 to test the ‘eth0’.

        I am able to ping the webserver’s computer(192.168.10.1) from another computer(192.168.10.3) which is connected through wlan0. I am not able to access the port 3740, only 3990 and 4990 are accessible since they are coovachilli ports.

      • Manoj Mathivanan

        Its working now. I had to change the coovachilli config file to allow the ports
        HS_TCP_PORTS= »3740″

  • Maxamed Daahir Maxamed

    is there an attribute to disconnect user when time limit exceeds

  • AnwarWijaya

    Hi, I get a problem with compilation coova-chilli like on this picture.
    that error cause there is no coova-chilli_1.3.0_armhf.deb on /usr/src

    any solution ?
    thanks 🙂

  • AnwarWijaya

    Hi all, I get a problem with compilation coova-chilli like on this picture.
    that error cause there is no coova-chilli_1.3.0_armhf.deb on /usr/src
    any solution ?

    thanks 🙂

    • That’s normal, the compilation failed (see error messages ?) look at the error (upper in your screen), correct and try to compile again
      I guess that the reason is the flag for warnings (look comments below about how to set the flag)

      • AnwarWijaya

        thanks for attention.

        this is an error message (?) on picture below.

        btw, I have try echo $ CFLAGS but the result is same.

        • It’s not echo that you have to do but the export command below. The echo is only to check the variable content

          • AnwarWijaya

            ok thanks for your help I done that step.

            But, when i want to compile and install haserl with:

            ./configure && make && make install

            there are « nothing to be done »:

            ** Configuration summary for haserl 0.9.35:

            Building haserl with with lua disabled
            Building haserl with with bash-extensions disabled
            libs:

            make[2]: Leaving directory ‘/usr/src/haserl-0.9.35/doc’
            make[1]: Leaving directory ‘/usr/src/haserl-0.9.35/doc’
            make[1]: Entering directory ‘/usr/src/haserl-0.9.35’
            make[2]: Entering directory ‘/usr/src/haserl-0.9.35’
            make[2]: Nothing to be done for ‘install-exec-am’.
            make[2]: Nothing to be done for ‘install-data-am’.
            make[2]: Leaving directory ‘/usr/src/haserl-0.9.35’
            make[1]: Leaving directory ‘/usr/src/haserl-0.9.35’
            root@raspberrypi:/usr/src/haserl-0.9.35#

            any solution ?

            i am newbie 🙂

          • Try to do a « make clean » first, then check that the export worked (using echo and get the content displayed) and then compile

          • AnwarWijaya

            thanks Pi Home Server.
            I have done this tutorial and can running normal, but sometime some devices (esespecially Iphone & MAC Book) difficult to connect access point and I must stop and start freeradius to solve it. Do yo know why it happened ?

          • Hi.
            Do you restart freeradius only ? Difficulties to connect : do you see the wifi network ? If not it could be due to your wifi dongle that switch in energy saving mode.

  • Matteo Lioi

    is it possible to authenticate with facebook or Google?

    • Hi. Never tried and not sure it’s possible natively. Try for google results with « coovachilli oauth » seems that some people want to do the same than you
      About paypal same idea. Not sure it’s possible

      • Matteo Lioi

        Yes I study a lot but I haven’t found this argument for raspberry

  • Hi. Never tried and not sure it’s possible natively. Try for google results with « coovachilli oauth » seems that some people want tondonthe same than you

  • aurelien

    Bonjour,

    Merci pour le tuto complet etl que je suis à la lettre, mais chez moi cela ne fonctionne pas. Le point d’accès n’apparait pas.
    lsusb me renvoit ça : « Bus 001 Device 004: ID 148f:5370 Ralink Technology, Corp. RT5370 Wireless Adapter »

    J’en déduis donc que j’utilise le même matériel que toi, mais mon rasp 2 sous Jessie ne veut rien savoir.

    Merci pour vos tuyaux.

    • Il faudra un peu plus d’infos. Est-ce que la clé est bien compatible Access Point ? Est-ce que hotspotd est bien démarré ? Est-ce que l’interface WLAN a bien une IP attribuée ?

      • aurelien

        Alors, j’ai repris le tuto dés le départ, sur la base de l’image raspbian minimale dispo sur le site de la fondation. Alors cette fois ci tout s’est bien passé sauf pour haserl ou je n’ai pas réussi à compiler. Un apt-get install haserl m’a dépanné. J’ai également commenté les lignes dans /etc/network/interfaces relatives à wpa-supplicant

        Mon point d’accès est visible et fonctionne mais uniquement quand je lance hostapd en débug via « hostapd -dd /etc/hostapd/hostapd.conf » . La je ne comprends pas.
        De plus, comment faire pour lancer hostapd automatiquement au démarrage ? Je passe par le daemon ou en service ?

        • Le point 4 de hostapd ne fonctionne pas ?

          • aurelien

            Je n’ai aucun retour du prompt. Je passe ma commande, il cherche 30 secondes puis aucun message d’erreur (mais pas de confirmation de lancement) et il me redonne la main

          • aurelien

            Problème résolu. L’adresse du daemon était commentée dans /etc/default/hostapd. Merci pour le tuto et pour ton aide.

            Je termine ce soir la réalisation du tuto

          • aurelien

            J’ai tenté de terminé le tuto, et je coince avec Nginx, quand je tape l’ip de mon rasp/daloradius j’ai une jolie erreur 404. Je ne sais pas quoi faire et je patauge dans la configuration de Nginx, à tel point que je ne sais même pas dans quel fichier serait l’erreur.

            A vrai dire, je cherche un poil à compliquer l’installation, car je souhaiterai avoir daloradius et ez service monitor dans sa version web en paralléle.

            Je ne voudrais pas abuser, mais si tu pouvais m’apporter ton aide, ou m’indiquer un tuto de config sur Nginx, car je dois sauter une case dans ceux que j’ai parcouru jusque là.

  • Théa Van

    salut je tiens d’abord à vous dire merci pour ce tuto très complet.

    j ai un souci au niveau de la redirection vers ma page web index.html

    fichier :/etc/chilli/www/login_success_tmpl

    Success!

    You are about to be redirected $(href= »index.html » « projet « )

    To log out, type « logout » (or « http://logout/ ») enjoy!

    merci pour le tuyau