Pour mes besoins personnelles j’ai besoin de créer un point wifi et pour éviter d’ajouter un vieux routeur dans le réseau, je décide d’utiliser mon raspberry pi 2 avec une clé wifi. J’utilise Rasbian comme distribution.
Voici ma configuration réseau pour avoir une idée plus claire :
Le raspberry est connecté directement à la box internet grace au switch (j’utilise un switch car il n’y a pas assez de port réseau).
J’utilise une clé wifi US Robotics usr805423 qui est compatible avec Linux. Vous trouverez toutes les infos nécessaires ici : https://wiki.debian.org/fr/WiFi.
Vous pouvez taper la commande « lsusb » pour directement voir la modèle de votre clé wifi et le driver.
La commande « ifconfig » vous affichera aussi votre nouvelle clé wifi.
Elle est normalement reconnue directement par le système, vérifier aussi que la clé vous autorise à faire office de point relais.
Vous pouvez taper cette commande:
iw list
Il y a une section « Supported interface modes » si vous avez « AP » alors votre clé est compatible.
Création du point relais
Première étape, installer hostapd:
apt-get install hostapd
Ensuite nous allons indiquer à hostapd un fichier de configuration
vim /etc/default/hostapd
Éditez la ligne 10 environ et indiquez un chemin vers un fichier de configuration
# Defaults for hostapd initscript # # See /usr/share/doc/hostapd/README.Debian for information about alternative # methods of managing hostapd. # # Uncomment and set DAEMON_CONF to the absolute path of a hostapd configuration # file and hostapd will be started during system boot. An example configuration # file can be found at /usr/share/doc/hostapd/examples/hostapd.conf.gz # DAEMON_CONF="/etc/hostapd/hostapd.conf" # Additional daemon options to be appended to hostapd command:- # -d show more debug messages (-dd for even more) # -K include key data in debug messages # -t include timestamps in some debug messages # # Note that -B (daemon mode) and -P (pidfile) options are automatically # configured by the init.d script and must not be added to DAEMON_OPTS. # #DAEMON_OPTS=""
Créez ensuite un fichier de configuration
vim /etc/hostapd/hostapd/conf
Insérez ces lignes dans le fichier de configuration:
interface=wlan0 ### Set your bridge name ### bridge=br0 driver=nl80211 country_code=BE ssid=SSIDNom hw_mode=g channel=6 wpa=2 wpa_passphrase=motDePasse ## Key management algorithms ## wpa_key_mgmt=WPA-PSK ## Set cipher suites (encryption algorithms) ## ## TKIP = Temporal Key Integrity Protocol ## CCMP = AES in Counter mode with CBC-MAC wpa_pairwise=TKIP rsn_pairwise=CCMP ## Shared Key Authentication ## auth_algs=1 ## Accept all MAC address ### macaddr_acl=0
Modifier la ligne ssid avec le nom du wifi désiré, la ligne country_code avec le code votre pays (FR, US, …) et la ligne wpa_phrase avec le mot de passe d’accès.
Testez votre réseau avec hostapd avec le fichier de configuration pour voir les détails :
hostapd /etc/hostapd/hostapd.conf
Vous devriez voir les détails et les erreurs si il y en a. Vous pouvez aussi le démarrer en tâche de fond :
/etc/init.d/hostapd start
A partir de maintenant votre point d’accès est fonctionnel, maintenant nous allons configurer le réseau.
Configuration réseau
Nous allons d’abord assigner une ip fixe à notre interface wlan0.
vim /etc/network/interfaces
auto lo iface lo inet loopback auto eth0 iface eth0 inet static address 192.168.0.100 netmask 255.255.255.0 gateway 192.168.0.1 allow-hotplug wlan0 auto wlan0 iface wlan0 inet static address 10.0.0.1 network 10.0.0.0 netmask 255.255.255.0 broadcast 10.0.0.255
Voilà ce que vous devriez avoir dans votre fichier interfaces.
Activez ensuite l’interface
ifup wlan0
Installez ensuite dnsmasq, qui est un petit serveur DNS et serveur DHCP.
apt-get install dnsmasq
Editez le fichier dnsmasq.conf
vim /etc/dnsmasq.conf
Voici ce qu’on retrouve dans mon fichier:
interface=wlan0 expand-hosts domain=local dhcp-range=10.0.0.10,10.0.0.100,24h dhcp-option=3,10.0.0.1
Vous lui indiquez l’interface et un range d’adresse IP et le tour est joué!
Vous pouvez démarrez le service
/etc/init.d/dnsmasq start
Il nous reste à activer l’ip forwading et une règle nat pour partager la connexion internet. (Pour rendre permanente cette règle http://www.octetmalin.net/linux/tutoriels/ip-forward.php)
echo 1 > /proc/sys/net/ipv4/ip_forward
Ensuite on ajoute une règle dans iptables
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
Installez iptables-persistent pour rendre cette règle active à chaque démarage (http://romain.therrat.fr/iptables-rendre-ses-regles-persistantes-sous-gnudebian-avec-iptable-persistent/).
Votre point wifi avec partage de connexion internet devrait être fonctionnel :).
EDIT 04/04/2017
Je rencontre un soucis avec iptables-persistent qui n’applique pas mes règles au démarrage. J’ai donc utilisé cette astuce pour les ré-injecter à chaque démarrage.
Rajoutez dans votre fichier /etc/network/interfaces à la fin de votre interface cette ligne:
post-up iptables-restore < /etc/iptables/rules.v4
Cela permettra de restaurer les règles après l’activation de l’interface.
sources:
https://seravo.fi/2014/create-wireless-access-point-hostapd
WiFi Access Point with TP-Link TL-WN722n on Ubuntu 12.04
http://chrisjrob.com/2011/03/14/sharing-a-wireless-connection-via-ethernet-port/
http://www.revsys.com/writings/quicktips/nat.html