Transformer le Raspberry Pi en hot spot Wifi avec portail captif (1/2)

Si vous souhaitez partager votre connexion sans fil mais contrôler qui peut l’utiliser, vous pouvez mettre en place un portail captif qui ressemblera à ce que font SFR ou Free par exemple. Et bien sur le Raspberry Pi va pouvoir nous y aider !

Hotspot_WiFi

Nous allons donc commencer par installer et configurer un point d’accès

  • Installer les outils pour compiler et installer iw
    apt-get install gcc make libnl1 libnl-dev pkg-config
  • Télécharger iw
     wget https://www.kernel.org/pub/software/network/iw/iw-3.14.tar.gz
  • Décompresser et compiler iw version 3.14 (non ce n’est pas lié au Raspberry 😉 )
     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
    Capture d’écran 2014-05-18 à 22.14.59Si vous avez « AP » (Access Point) dans les modes supportés, c’est gagné !

Installer le hotspot

  • Installer les différents paquets pour le point d’accès et le portail
     apt-get install hostapd nginx isc-dhcp-server iptables iptables-persistent
  • Configurer votre clé pour avoir une IP fixe sur votre nouveau réseau. J’ai choisi de définir un réseau sur le 192.168.10.0/24. Changez le contenu du fichier /etc/network/interfaces
    auto lo
    
    iface lo inet loopback
    iface eth0 inet dhcp
    
    allow-hotplug wlan0
    iface wlan0 inet static
     address 192.168.10.1
     netmask 255.255.255.0
     network 192.168.10.0
    
    iface default inet dhcp
  • Modifier le fichier /etc/default/hostapd. Je ne sais pas pourquoi le daemon n’est pas configuré correctement, vous devez ajouter la ligne suivante :
    DAEMON_CONF="/etc/hostapd/hostapd.conf"
  • Maintenant il faut créer ce fameux fichier /etc/hostapd/hostapd.conf. Utilisez les commentaires pour modifier les paramètres en fonction de votre besoin :
    # 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
    
  • Vous pouvez maintenant démarrer le service hostapd :
    service hostapd start

    A ce stade votre réseau doit apparaitre dans la liste des point d’accès. Ici vous voyez bien PiHomeServerAP dans la liste des réseaux visibles.Capture d’écran 2014-05-20 à 22.14.56

  • Etape suivante : activer le serveur DHCP pour envoyer les informations aux périphériques qui se connectent à notre hotspot. Pour cela vous devez modifier le fichier /etc/dhcp/dhcpd.conf :
  • Ensuite il faut modifier le fichier /etc/default/isc-dhcp-server pour sélectionner l’interface sur laquelle ca va s’appliquer. Remplacer la dernière ligne :
    INTERFACES=""

    par :

    INTERFACES="wlan0"
  • Vous pouvez démarrer votre serveur DHCP
    service isc-dhcp-server start
  • Pour le moment, votre interface wifi n’est pas liée à votre interface ethernet. Du coup vous pouvez vous connecter mais vous n’aurez pas accès à internet. Pour ça il faut lier les deux. Commencez par activer l’IP forwarding vers votre interface ethernet en ajoutant dans /etc/sysctl.conf la ligne :
    net.ipv4.ip_forward=1
    

    Ca sera pris en compte au prochain boot. Pour ne pas devoir redémarrer vous pouvez exécuter la commande :

    sh -c "echo 1 > /proc/sys/net/ipv4/ip_forward"
  • Faites le lien entre les deux interfaces :
     iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
     iptables -A FORWARD -i eth0 -o wlan0 -m state --state RELATED,ESTABLISHED -j ACCEPT
     iptables -A FORWARD -i wlan0 -o eth0 -j ACCEPT
  • Problème ça n’est pas sauvegardé. On va donc extraire la configuration, et demander son chargement à chaque démarrage.
    Sauvegardez la configuration

    service iptables-persistent save
  • Et enfin il faut activer les services pour les prochains reboot :
    update-rc.d hostapd enable
    update-rc.d isc-dhcp-server enable
  • Vous pouvez donc maintenant utiliser votre point d’accès ou pour valider l’installation faire un redémarrage

 

Vous avez maintenant un point d’accès sans fil opérationnel. Le prochain article va vous expliquer comment installer et configurer un portail captif pour contrôler qui peut utiliser votre réseau.

 

Sources :

Vous aimerez aussi...

  • Michel

    Merci pour ce tuto.
    J’ai toujours voulu savoir comment faire cela.
    J’attends la suite avec impatiente.

    • La suite demain 🙂

  • sacha

    Bonsoir, il manque la partie modification du fichier dhcpd.conf. Serait-il possible de la rajouter ?
    Merci.

    • Ok merci je vais regarder ca (j’ai supprimé les deux autres commentaires identiques ;-))

      • Julien

        Oui effectivement « Etape suivante : activer le serveur DHCP pour envoyer les informations aux périphériques qui se connectent à notre hotspot. Pour cela vous devez modifier le fichier /etc/dhcp/dhcpd.conf : » c’est pas complète 😉

  • sacha

    Oui j’ai vu merci 😀

  • Geoffrey

    Bonjour,

    Lorsque je lance « service isc-dhcp-server start » après avoir faites les manipulations décrites, j’ai « [FAIL] Starting ISC DHCP server: dhcpd[….] check syslog for diagnostics. … failed! » qui s’affiche.
    Un peu d’aide ne serai pas de refus.

    Merci d’avance!

    • Salut. Que disent les logs justement dans /var/log ?

  • Nestor

    Bonjour,
    Merci pour votre tuto.

    J’ai installé iw-3.14 et j’ai ce résultat : nl80211 not found.
    je possède une MT7601 que j’ai configuré suivant la procédure de Comendatore.net lors d’un lsusb cette clef Wifi apparait comme « Ralink Technology, Corp », je peux me connecter à un réseau avec cette clef. Mais je bute pour la configuration d’un hotspot. iwconfig trouve ceci :
    ra0 Ralink STA ESSID: »11n-AP » Nickname: »MT7601STA »
    Mode:Auto Frequency=2.412 GHz Access Point: Not-Associated
    Bit Rate:1 Mb/s
    RTS thr:off Fragment thr:off
    Link Quality=10/100 Signal level:0 dBm Noise level:0 dBm
    Rx invalid nwid:0 Rx invalid crypt:0 Rx invalid frag:0
    Tx excessive retries:0 Invalid misc:0 Missed beacon:0

    Avez vous une idée si cette clef est compatible pour créer un hotspot?
    Merci
    ND

    • Bonsoir. Il semble que les dongles à base de MT7601 supportent la création d’access point. Pour la configuration, ça semble délicat. A voir s’il ne faut pas charger un module particulier pour le faire fonctionner ou le compiler avec une option particuliere

  • mainard

    Je cherche à faire l »inverse: exploiter le dongle pour me connecter à internet (jusque là, OK) et faire bénéficier un équipement connecté su rle port Ethernet de l’accès wifi. c’est certainemen tfiasable, ais comment?

  • Moohr

    Où est la partie « modifier le fichier /etc/dhcp/dhcpd.conf » ? Tout fonctionne bien jusque là mais même après plusieurs recherches sur le web je reste bloqué :/

  • Leo

    Et maintenant… rajouter la config IPv6 ! Eh oui, plus vite on s’y met, plus vite ce sera adopte par tous et franchement j’ai hate !

  • Fish

    [ apt-get install hostapd nginx isc-dhcp-server iptables ] ,the last one should be

  • Winny Bouriquet

    Bonjour,
    J’ai un soucis avec mon hotspot pi3, je n’arrive pas à accéder à Internet avec mes périphériques Android (tablettes, smartphones). alors qu’avec des PC sous windows 7, aucun problème.

    Quelqu’un aurait une idée du pourquoi ? ça fait 2 jours que je me bats avec diverses configs mais rien…
    Ce que j’ai remarqué, c’est que ça serait surtout un problème de DNS que Android ne trouve pas. Il faut que je connecte mes périphériques en statique et pas DHCP pour que ça marche…
    C’est très embêtant…Merci.

    • Ca semble donc plutot venir de DHCPD plutot que de hotspot ?

  • Xsoft

    Total waste of time 🙁
    Sorry, but this looks like a crappy copy/paste tutorial.

    Half of command doesnt work (missing spaces, missing newline, missing config). Blah

    • Sorry. Please use the French version of the post. It has been used successfully by many users. The translator changes script content

  • Carlos Espetia Ortuño

    Hola, que sistema operativo estas usando en la Raspberry :)? Saludos.