Table des matières

HotSpot WiFi

hostap: host access point

Pourquoi ?

Quand des invités arrivent à la maison et qu'ils souhaitent accéder au Wifi, il faut leur donner votre mot de passe Wifi, ce qui parait assez gênant en terme de sécurité.

L'idée est donc de mettre a disposition un accès Wifi avec un mot de passe autre que celui du réseau privé.

Wifi Bridge sur Pi 3

http://en.tacticalcode.de/2013/03/use-your-raspberry-pi-as-wifi-bridge-or-ap.html

En montant un bridge wifi, les utilisateurs sont dans le même adressage IP que le réseau principal.

WIFI Access Point sur Pi 3

source: http://learn.adafruit.com/setting-up-a-raspberry-pi-as-a-wifi-access-point/install-software

Cette procédure est valable pour un Raspberry Pi 3 dont on utilise l'antenne WiFi embarquée. Pour une autre version de Raspi, il faut utiliser un wifi USB dont on a un driver compatible Pi.

Installer hostapd et isc-dhcp-server

sudo apt-get update
sudo apt-get install -y hostapd isc-dhcp-server
...
Job for isc-dhcp-server.service failed. See 'systemctl status isc-dhcp-server.service' and 'journalctl -xn' for details.
invoke-rc.d: initscript isc-dhcp-server, action "start" failed.
...
sudo apt-get install iptables-persistent

Les erreurs affichées sont normales car le server DHCP n'est pas encore installé.

Installer iptable

sudo apt-get install -y iptables-persistent

Répondre 'yes' aux deux écrans d'installation.

Configurer le serveur DHCP

sudo nano /etc/dhcp/dhcpd.conf

# Commenter les lignes : 
option domain-name "example.org";
option domain-name-servers ns1.example.org, ns2.example.org;

# Décommenter la ligne :
authoritative;

# A la fin du fichier, ajouter les lignes suivantes :
subnet 192.168.42.0 netmask 255.255.255.0 {
	range 192.168.42.10 192.168.42.50;
	option broadcast-address 192.168.42.255;
	option routers 192.168.42.1;
	default-lease-time 600;
	max-lease-time 7200;
	option domain-name "local";
	option domain-name-servers 8.8.8.8, 8.8.4.4;
}

Configurer isc-dhcp-server

sudo nano /etc/default/isc-dhcp-server

# Aller à INTERFACES="" et completer avec "wlan0"
INTERFACES="wlan0"

Configurer wlan0

# Si wlan0 est actif on l'arrête :
sudo ifdown wlan0
# On peut exécuter la commande précédente même s'il n'est pas actif.

sudo nano /etc/network/interfaces
# Commenter la ligne 'auto wlan0' si elle existe et définir :
allow-hotplug wlan0
iface wlan0 inet static
  address 192.168.42.1
  netmask 255.255.255.0
  
# on configure l'IP fixe attribuée à wlan0 :
sudo ifconfig wlan0 192.168.42.1

Configurer Access Point

sudo nano /etc/hostapd/hostapd.conf
# Insérer le contenu ci-dessous:
interface=wlan0
driver=rtl871xdrv
ssid=Pi_AP
country_code=FR
hw_mode=g
channel=6
macaddr_acl=0
auth_algs=1
ignore_broadcast_ssid=0
wpa=2
wpa_passphrase=Raspberry
wpa_key_mgmt=WPA-PSK
wpa_pairwise=CCMP
wpa_group_rekey=86400
ieee80211n=1
wme_enabled=1

# les éléménts suivants peuvent/doivent être modifiés :
# - driver : rtl871xdrv ou nl80211 ou autre chose
# - ssid : nom du réseau WiFi
# - wpa_passphrase : mot de passe
# - ignore_broadcast_ssid : mettre 1 pour masquer le réseau

Capacités du Wifi :

$ iw list | grep "Supported interface modes" -A 8
	Supported interface modes:
		 * IBSS
		 * managed
		 * AP
		 * P2P-client
		 * P2P-GO
		 * P2P-device
	Band 1:
		Capabilities: 0x1020

Dire au Raspi où est la configuration hostapd

sudo nano /etc/default/hostapd

# activer la ligne DAEMON_CONF avec la valeur suivante
DAEMON_CONF="/etc/hostapd/hostapd.conf"

# faire pareil pour /etc/init.d/hostapd
sudo nano /etc/init.d/hostapd

DAEMON_CONF=/etc/hostapd/hostapd.conf

Configurer le NAT

sudo nano /etc/sysctl.conf
# Ajouter à la fin :
net.ipv4.ip_forward=1

# pour activer immédiatement :
sudo sh -c "echo 1 > /proc/sys/net/ipv4/ip_forward"

Configurer iptable

sudo iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
sudo iptables -A FORWARD -i eth0 -o wlan0 -m state --state RELATED,ESTABLISHED -j ACCEPT
sudo iptables -A FORWARD -i wlan0 -o eth0 -j ACCEPT

# Pour controler le contenu d'iptable :
sudo iptables -t nat -S
sudo iptables -S

# pour que la configuration iptable soit permanente:
sudo sh -c "iptables-save > /etc/iptables.ipv4.nat"

Test final

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

# Si cela fonctionne on obtient : 
# Configuration file: /etc/hostapd/hostapd.conf
# Failed to create interface mon.wlan0: -95 (Operation not supported)
# wlan0: interface state UNINITIALIZED->COUNTRY_UPDATE
# wlan0: Could not connect to kernel driver
# Using interface wlan0 with hwaddr b8:27:eb:5b:38:12 and ssid "jnet"
# wlan0: interface state COUNTRY_UPDATE->ENABLED
# wlan0: AP-ENABLED 

On reboote alors

sudo reboot

On démmare alors les services

sudo service hostapd start 
sudo service isc-dhcp-server start

J'arrive alors à me connecter au réseau Wifi mais pas à accéder ensuite à internet.

:!: Il faut supprimer le WPA-Supplicant pour que tout fonctionne :

sudo mv /usr/share/dbus-1/system-services/fi.epitest.hostap.WPASupplicant.service ~/

Ensuite … Ca marche !!!

Problèmes

En cas de problème on regarde ce qui se passe :

sudo tail -f /var/log/daemon.log 

sudo service hostapd status

sudo service isc-dhcp-server status

Automatisation

Quand on est sûr que tout fonctionne correctement, on peut automatiser le démarrage des services :

sudo update-rc.d hostapd enable 
sudo update-rc.d isc-dhcp-server enable

projet Pi-HotSpot

source: http://www.pihomeserver.fr/2016/09/15/transformer-raspberry-pi-hotspot-wi-fi-facilement-grace-a-script/

Le script installe une multitude de logiciels (nginx, mysql, ….). Il est dangereux d'exécuter un script dont on ne connait pas le contenu.

+ Problème de sécurité.

+ Galère pour désinstaller

A éviter.