Ceci est une ancienne révision du document !


Pibox : Une rapsberry pour les échanges

J'ai testé les logiciels “piratebox” et je n'ai pas aimé, ni en tant qu'utilisatrice, ni en tant qu'administratrice. Aussi je tente ma propre interprétation de la chose.

Installation du raspberry

Installation du serveur web

Raspberry étant un mini-machin, il faut préférer des outils légers. Ici, ce sera Lighttpd1) plutôt qu'Apache ou Nginx. Et nous allons essayer d'éviter les bases de données et les gros logiciels.

sudo apt-get install lighttpd php5-cgi php5-gd php5-imagick php5-curl php5-intl

Tous ces modules ne vous seront pas forcément utiles, il y a surtout php5-cgi qui compte, mais le reste me sert souvent dans les CMS que j'aime utiliser donc : léger d'un coté, plein de l'autre !

Activer les modules de php :

sudo lighty-enable-mod fastcgi 
sudo lighty-enable-mod fastcgi-php

Et relancer le démon :

sudo service lighttpd force-reload

Pour voir si ça marche :

sudo sh -c 'echo "<?php phpinfo(); ?>" > /var/www/html/info.php'
sudo chown -R www-data:www-data /var/www/html/info.php

Accédez-y via l'adresse ip_de_ma_framboise/info.php.

Reconnaître la clé wifi

Il faut une carte wifi à ajouter et le bon driver pour la faire tourner. La carte (ou clé) wifi doit supporter le mode AP, ce qu'on peut voir avec la commande iw list (installer le paquet iw s'il n'y est pas), qui doit retourner quelque chose comme Supported interface modes: AP/VLAN au milieu des diverses informations.

Dans mon cas, j'ai une clé usb wifi Hercule, bien prise en charge sous linux et qui propose le mode AP. Pour connaître le modèle : lsusb, c'est l'une des lignes.

lsusb
Bus 001 Device 004: ID 06f8:e010 Guillemot Corp. HWGUSB2-54-LB

Un petit tour ensuite sur la database des périphériques usb de Debian : https://wiki.debian.org/DeviceDatabase/USB où cette référence m'indique que mon pilote sera rt73, installé avec firmware-ralink. J'aime quand c'est facile comme ça. À adapter à votre propre périphérique wifi !

sudo apt-get install firmware-ralink

Vérifiez que votre carte wifi est bien wlan0 avec ifconfig, sinon adaptez la suite du tutoriel en remplaçant wlan0 par son identifiant.

Transformer la Raspberry en accès wifi

À noter : je ne cherche pas à sécuriser le réseau donc la configuration d'hostapd et je ne cherche pas à faire un pont vers internet.

Quelques logiciels à installer pour créer un “AP” (Access Point):

sudo apt-get install hostapd dnsmasq iptables-persistent
  • hostapd va générer le réseau sans fil auquel se connecter.
  • dnsmasq sert à la fois à gérer la partie dhcp et la partie dns.
  • iptables-persistent permet de relancer la même configuration iptable d'un redémarrage à l'autre

Il faut aussi tripatouiller dhcpcd, installé et configuré de base. Il suffit de lui dire d'ignorer wlan0, car nous allons configurer ce dernier avec une adresse statique.

sudo nano /etc/dhcpcd.conf

Ajouter au fichier, tout au début :

denyinterfaces wlan0  

Interface, wlan0

On va configurer wlan0

sudo ifdown wlan0

Éditer /etc/network/interfaces

Il doit ressembler à cela (commentez le reste) :

source-directory /etc/network/interfaces.d

auto lo
iface lo inet loopback

iface eth0 inet manual

allow-hotplug wlan0
iface wlan0 inet static
        address 172.24.1.1
        netmask 255.255.255.0
        network 172.24.1.0
        broadcast 255.0.0.0

Relancer dhcpcd pour que tout soit pris en compte.

sudo service dhcpcd

Et ensuite, donnez son adresse ip statique à wlan0 :

sudo ifdown wlan0
sudo ifup wlan0
sudo ifconfig wlan0 172.24.1.1

Hostapd

Cette configuration est particulière car elle ne demande pas de mot de passe pour se connecter. C'est un wifi ouvert !

# interface wlan du Wi-Fi
interface=wlan0
# nl80211 avec tous les drivers Linux mac80211
driver=nl80211
# Nom du spot Wi-Fi
ssid=PiBox
# 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
# 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

Pour le driver, suivant la carte wifi, cela peut être driver=rtl871xdrv ou driver=nl80211 ou même rien, dans le cas des Raspberry avec wifi interne.

Éditer ensuite les fichiers suivants pour que la configuration soit prise en compte par le daemon

  • /etc/default/hostapd : Configurer DAEMON_CONF comme ceci (bien le décommenter !) DAEMON_CONF=“/etc/hostapd/hostapd.conf”
  • /etc/init.d/hostapd : Configurer DAEMON_CONF comme ceci (bien le décommenter !) DAEMON_CONF=“/etc/hostapd/hostapd.conf”

Ensuite on teste si la configuration est bonne :

sudo /usr/sbin/hostapd /etc/hostapd/hostapd.conf

S'il y a des warning et des erreurs, corriger. Sinon, une autre machine ayant le wifi devrait voir apparaître le réseau wifi PiBox (ou le nom que vous lui avez donné) et peut s'y connecter.

Dnsmasq

Sauvegarder le fichier de configuration d'origine, il est plein d'informations utiles, puis éditez /etc/dnsmasq.conf :

sudo mv /etc/dnsmasq.conf /etc/dnsmasq.conf.orig  
sudo nano /etc/dnsmasq.conf  
/etc/dnsmasq.conf
interface=wlan0      # Use interface wlan0  
listen-address=172.24.1.1 # Explicitly specify the address to listen on  
bind-interfaces      # Bind to the interface to make sure we aren't sending things elsewhere  
server=172.24.1.1       # Forward DNS requests to us  
domain-needed        # Don't forward short names  
bogus-priv           # Never forward addresses in the non-routed address spaces.  
dhcp-range=172.24.1.50,172.24.1.150,12h 
# Assign IP addresses between 172.24.1.50 and 172.24.1.150 with a 12 hour lease time 

Donner de l'ipv4 et gérer iptable

Ok, l'ipv4 c'est mort, tout ça, mais vu le réseau on s'en moque.

sudo nano /etc/sysctl.conf

Enlever le commentaire devant net.ipv4.ip_forward=1

Là, j'ai un doute, je crois que ça fait un pont vers internet, et ça, on a pas trop besoin… Mais bon, ça marche.

sudo su
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

iptables-save > /etc/iptables/iptables.rules

Finitions

Relancez les services :

sudo service hostapd start
sudo service dnsmasq start 
sudo service networking start 

Vérifiez que tout tourne sans erreur :

sudo service hostapd status
sudo service dnsmasq status 
sudo service networking status

Connectez-vous depuis votre autre machine sur le réseau PiBox, puis rendez-vous sur 172.24.1.1/info.php : c'est votre page !

Redémarrez la Raspberry, vérifiez que ça marche toujours… c'est bon ? Parfait !

Améliorer l'adresse (Dnsmasq)

Taper une adresse du style “172.24.1.1” ce n'est pas vraiment intuitif…

Bien qu'il soit possible de faire un DNS menteur qui redirige toute demande du navigateur vers notre pi-serveur, cela pose des problèmes éthiques (possibilité de vol de cookies, d'identifiants) donc… on évite de le faire. On peut cependant configurer le DNS local pour ajouter un “nom de domaine”, afin de pouvoir donner une adresse comme “pibox.ici” à taper dans le navigateur, pour nos visiteurs.

sudo nano /etc/dnsmasq.conf

Et copier les informations suivantes :

address=/.pibox.ici/192.168.42.1

#dont use resolv.conf
no-resolv
#dont recheck resolv.conf for changes
no-poll

#overwrite dns..
#dhcp-authoritative

# If you don't want dnsmasq to read /etc/hosts, uncomment the
# following line.
no-hosts
# or if you want it to read another file, as well as /etc/hosts, use
# this.
#addn-hosts=/etc/banner_add_hosts
## ^^^^^^  <- generated

Liens utiles (ou pas)

Pour trouver plus d'informations

Une recherche sur “raspberry wifi access point” donne des choses, on peut d'ailleurs se passer du mot raspberry puisque que tout ça est aussi valable pour toute machine sous linux ayant la capacité de faire du wifi comme point d'accès.

“Honeypot” est le petit mot pour dire “réseau captif” : en gros, quand on se connecte au wifi, tout est ramené dans le pot de miel, pardon la framboise.

1)
Doc basique en français sur https://doc.ubuntu-fr.org/lighttpd
CC Attribution-Noncommercial-Share Alike 4.0 International Driven by DokuWiki
pratique/informatique/pibox.1502124602.txt.gz · Dernière modification : 30/11/2020 10:35 (modification externe)