Projet

Général

Profil

Brique vpn » Historique » Révision 23

Révision 22 (stephane.ligozat, 10/03/2019 17:13) → Révision 23/38 (david.daugareil, 10/03/2019 17:18)

# Brique vpn Atelier WIFI + VPN sur PI 

 Séance du samedi 9 mars 2019. 

 Il s'agit d'installer sur un raspberry pi un client VPN et un hotspot wifi. 


 

 Il a été impossible de se connecter aux 2 OLIMEX LIME2, cartes défectueuses ? 

 Cette séance très fructueuse se poursuivra samedi 23 mars. 

 Le système utilisé ce jour est raspbian mais il faudra plus tard essayer openwrt (https://fr.wikipedia.org/wiki/OpenWrt), solution parfaitement dédiée à l'objectif d'un PI offrant **uniquement** une connexion propre à l'internet, pour un foyer, une association ou une petite entreprise. 

 ## Installation du système 

 Télécharger le zip contenant l'image de Raspbian Lite système raspbian dédié aux PIs : https://www.raspberrypi.org/downloads/raspbian/ https://www.raspberrypi.org/downloads/ 

 ## Copier le système sur la carte SD 

 Extraire Copier l'image avec p7zip par exemple : sur une carte SD si possible neuve ou bien formatée bas niveau (à expliquer).  

 Il est conseillé d'utiliser une carte de **class A1**. 

 Avant d'insérer la carte taper dans un terminal  

 ~~~ 
 7z x nom-de-l-image-raspbian-stretch-lite.zip ls /sys/block 
 ~~~ 

 Identifier le périphérique correspondant à sa Insérer la carte micro SD et la démonter : 

  

 ~~~ 
 sudo fdisk -l umount /chemin/du/point/de/montage/de/la/carte 
 ~~~ 
 insérer 

 Maintenant que la carte micro SD et refaire la même manip, est insérée, retaper  

 ~~~ 
 ls /sys/block 
 ~~~ 

 En comparant avec le device supplémentaire /sys/block d'avant l'insertion, on constate qu'un nouvel emplacement est apparu, c'est celui que la carte micro SD. insérée occupe (exemple sdb) 

 Copier l'image sur la micro SD (X est la lettre du device de l'étape précédente) : 

 ~~~ 
 sudo dd bs=4M if=/chemin-de-l-image/nom-de-l-image-raspbian-stretch.img if=/chemin/vers/2018-11-13-raspbian-stretch.img of=/dev/sdX conv=fsync status=progress 
 ~~~ 

 /!\ créer un fichier vide ssh à la racine **if** est le chemin de la partition boot l'image. 

 **of** est l'emplacement de la carte SD pour activer le démon SSH sur le pi 


 : la lettre X doit être remplacée par A ou B ou...  


 Expliquer les arguments **bs** et **conv** 

 ## Trouver la PI sur le réseau 

 Ne pas brancher la PI et afficher la liste des IPS dispos sur le réseau  

 ~~~ 
 sudo arp-scan -l --interface wlp4s0 
 ~~~ 

 ici,  wlp4s0 est le nom de l'interface WiFi 

 Autre méthode possible avec nmap (à adapter votre interface wifi (si vous êtes connecté en fonction de votre IP privée) : wifi) 

 ~~~ 
 nmap -sP 192.168.1.* 
 ~~~ 

 Brancher la PI et relancer la commande précédente de votre choix. précédente. Normalement une nouvelle IP est apparue, c'est celle de votre PI. 

 Se connecter au à la PI : 

 ~~~ 
 ssh pi@<IP_DE_MON_PI> 
 ~~~ 

 Mot de passe par défaut : raspberry 

 ## Première connexion au PI Mise à jour du système 

 Changer le mot de passe par défaut avec la commande : de l'utilisateur PI 

 ~~~ 
 passwd $ sudo apt upgrade 
 $ sudo apt update 
 ~~~ 

 ## Le réseau 

 Mettre à jour Vérifier que l'interface wifi est disponible, dans cette documentation, elle s'appelle **wlan0**.  

 ~~~ 
 ifconfig 
 ~~~ 

 Source de cette documentation : 

 https://www.raspberrypi.org/documentation/configuration/wireless/access-point.md 

 dnsmasq offre un service de nommage des machines du système réseau interne. 
 hostapd le deamon de point d'accès wifi. 

 ~~~ 
 sudo apt update && sudo apt upgrade apt-get install dnsmasq hostapd 
 ~~~ 

 Installer openvpn, hostapd et dnsmasq Stoper ces deamons car leurs configurations n'est pas faites : 

 ~~~ 
 sudo apt install openvpn hostapd systemctl stop dnsmasq 
 sudo systemctl stop hostapd 
 ~~~ 

 Redémarrer pour s'assurer qu'ils sont pris en charge par le PI kernel : 

 ~~~ 
 sudo reboot 
 ~~~ 

 ## Configuration du point d'accès ### Configurer une IP statique 

 Mise en place d'un Le PI doit avoir une IP statique sur affectée à l'interface WiFi, éditer wifi (wlan0) pour agir en tant que serveur. Le réseau utilisera la plage IPs 192.168.x.x donc le PI aura 192.168.0.1 comme IP fixe. 

 Éditer le fichier dhcpcd.conf avec vi, vim, nano...selon vos préférences de conf de dhcpd : 

  

 ~~~ 
 sudo vi /etc/dhcpcd.conf 
 ~~~ 

 A Au redémarrage de la machine hostapd ne part pas. Donc  

 ~~~ 
 sudo systemctl enable hostapd 
 ~~~ 
 Ajouter ceci à la fin du fichier ajouter, avec l'IP privée de votre choix (ici 172.16.10.1) : 

 ~~~ 
 interface wlan0 
     static ip_address=172.16.10.1/24 ip_address=192.168.4.1/24 
     nohook wpa_supplicant 
 ~~~ 

 Remarque Reémarrer le deamon dhcpd : dhcpcd exécute tous les scripts du répertoire '/lib/dhcpcd/dhcpcd-hooks' dans l'ordre croissant. L'option **nohook wpa_supplicant** empèche le script du même nom de s'exécuter et à wpa_supplicant de prendre la main sur le WiFi. 

 Enregistrer et redémarrer le démon dhcpcd 

 ~~~ 
 sudo service dhcpcd restart 
 ~~~ 

 Le message suivant s'affiche : Warning: dhcpcd.service changed on disk. Run 'systemctl daemon-reload' to reload units. ### Configurer le serveur DHCP 

 Faire : 

 ~~~ 
 sudo systemctl daemon-reload 
 sudo Ce service dhcpcd restart 
 ~~~ 

 Configuration du serveur DHCP, editer est fourni par dnsmasq. Sauvegarder le fichier dnsmasq.conf par défaut et en créer un vide. 

 ~~~ 
 sudo mv /etc/dnsmasq.conf /etc/dnsmasq.conf.orig 
   
 sudo touch /etc/dnsmasq.conf 
 sudo vi /etc/dnsmasq.conf 
 ~~~ 

 Et y mettre : Y coller ces instructions qui affectent à l'interface wifi nommée wlan0 la plage d'adresses de 192.168.4.2 à 192.168.4.20 avec un bail de 24 heures. La documentation de dnsmasq offre de nombreuses autres options (http://www.thekelleys.org.uk/dnsmasq/doc.html) 

 ~~~ 
 interface=wlan0        # Interface WiFi Use the require wireless interface - habituellement usually wlan0 
   dhcp-range=172.16.10.100,172.16.10.120,255.255.255.0,24h dhcp-range=192.168.4.2,192.168.4.20,255.255.255.0,24h 
 ~~~ 

 Ici pour wlan0, nous allons fournir des adresses IP entre 172.16.10.100 et 172.16.10.120, avec un temps de location de 24 heures. ### Configurer le point d'accès WIFI 

 Configuration de hostapd : 

 ~~~ 
 sudo touch /etc/hostapd/hostapd.conf 
 sudo vi /etc/hostapd/hostapd.conf 
 ~~~ 

 Y coller : 

 ~~~ 
 interface=wlan0 
 driver=nl80211 # ATTENTION VOTRE DRIVER WIFI PEUT ÊTRE DIFFÉRENT. COMMENT LE CONNAÎTRE ? 
 ssid=SonicLeHerisson ssid=NameOfNetwork 
 hw_mode=g 
 channel=6 channel=7 # CHOIX ARBITRAIRE ? (à expliquer) 
 ieee80211d=1 
 country_code=FR 
 ignore_broadcast_ssid=0 
 wmm_enabled=0 # C'EST QUOI ? 
 macaddr_acl=0    # C'EST QUOI ? 
 wpa_passphrase=lemotdepassedeouf 
 auth_algs=1    # C'EST QUOI ? 
 ignore_broadcast_ssid=0 
 wpa=2 # POURQUOI 2 ? 
 wpa_passphrase=AardvarkBadgerHedgehog # MINIMUM 8 CARACTÈRES 
 wpa_key_mgmt=WPA-PSK 
 wpa_pairwise=TKIP 
 rsn_pairwise=CCMP 
 ~~~ 

 Puis éditer '/etc/default/hostapd' pour modifier la ligne DAEMON_CONF Maintenant il faut indiquer à hostapd où est son fichier de conf : 

  

 ~~~ 
 sudo vi /etc/default/hostapd 
 DAEMON_CONF="/etc/hostapd/hostapd.conf" 
 ~~~ 

 Et on démarre/redémarre tout ce beau monde fraîchement configuré : Chercher DAEMON_CONF et y ajouter le chemin vers le fichier édité juste avant. 

 ~~~ 
 sudo systemctl start hostapd DAEMON_CONF="/etc/hostapd/hostapd.conf" 
 ~~~ 

 Le message suivant s'affiche : Failed to start hostapd.service: Unit hostapd.service is masked. Redémarrer dnsmasq et hostapd 

 Continuer : 

 ~~~ 
 sudo systemctl unmask start hostapd 
 sudo systemctl start hostapd 
 sudo systemctl restart dnsmasq 
 ~~~ 

 Remarque : A partir ### Route et masquerade 

 L'IP masquerade permet aux ordinateurs d'un réseau privé n'ayant aucune adresse IP d'accéder à Internet via l'adresser IP unique d'une machine Linux. Ce sera y l'IP de maintenant, il est possible l'interface WIFI de se connecter sur le hotspot qui doit maintenant être visible, il n'y PI configurée plus haut (http://www.tldp.org/pub/Linux/docs/HOWTO/translations/fr/html-1page/Masquerading-Simple-HOWTO.html). 

 Ouvrir /etc/sysctl.conf et décommenter la ligne suivante : 

 ~~~ 
 net.ipv4.ip_forward=1 
 ~~~ 

 *Add a masquerade for outbound traffic on eth0:* Cette action s'est figée, Stéphane n'a pas encore d'accès au NET, c'est normal. pu aller plus loin (David oui...) 

 Activer le démon hostapd ~~~ 
 sudo iptables -t nat -A    POSTROUTING -o eth0 -j MASQUERADE 
 ~~~ 

 Enregistrement de la nouvelle règle iptables 

 sudo sh -c "iptables-save > /etc/iptables.ipv4.nat" 

 Éditer /etc/rc.local et ajouter cette ligne juste avant "exit 0" pour installer es règles au démarrage et redémarrer pour vérifier si tout ce qui a était fait jusqu'à présent persiste : 

 ~~~ 
 sudo systemctl enable hostapd iptables-restore < /etc/iptables.ipv4.nat 
 sudo reboot 
 ~~~ 


 

 Redémarrer la PI, désormais un nouveau d'accès WIFI doit être disponible pour les postes connectés au réseau local. 

 ## le WIFI VPN 

 ## le VPN par-feu