Créer un point relais wifi avec un raspberry

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