hostap: host access point
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é.
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.
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.
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é.
sudo apt-get install -y iptables-persistent
Répondre 'yes' aux deux écrans d'installation.
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; }
sudo nano /etc/default/isc-dhcp-server # Aller à INTERFACES="" et completer avec "wlan0" INTERFACES="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
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
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
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"
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"
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 !!!
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
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
+ Problème de sécurité.
+ Galère pour désinstaller
A éviter.