# WIREGUARD-VPN ## INSTALLATION ET CONFIGURATION SERVEUR (Linux): ### Update et installation: ```bash sudo apt-get update sudo apt install openresolv wireguard -y ``` ### Création des clefs: ```bash wg genkey | sudo tee /etc/wireguard/privatekey | wg pubkey | sudo tee /etc/wireguard/publickey ``` ### Création de la configuration serveur: ```bash sudo nano /etc/wireguard/wg0.conf ``` Dans ce fichier de configuration, CLEF_PRIVEE_SERVEUR et INTERFACE_RESEAU sont à renseigner (remplacer): ```bash [Interface] # Adresse interne du serveur Address = 10.0.0.1/24 ListenPort = 51820 # Clef privée du serveur PrivateKey = 'CLEF_PRIVEE_SERVEUR' # Routing vers l'interface réseau PostUp = iptables -A FORWARD -i %i -j ACCEPT; iptables -t nat -A POSTROUTING -o 'INTERFACE_RESEAU' -j MASQUERADE PostDown = iptables -D FORWARD -i %i -j ACCEPT; iptables -t nat -D POSTROUTING -o 'INTERFACE_RESEAU' -j MASQUERADE [Peer] # Ajouter les clients PublicKey = 'CLE_PUBLIQUE_CLIENT_1' AllowedIPs = 10.0.0.2/32 [Peer] # Ajouter les clients PublicKey = 'CLE_PUBLIQUE_CLIENT_2' AllowedIPs = 10.0.0.3/32 ``` La 'CLEF_PRIVEE_SERVEUR' s'obtient avec la commande: ```bash cat /etc/wireguard/privatekey ``` L' 'INTERFACE_RESEAU' s'obtient avec la commande: ```bash ip -o -4 route show to default | awk '{print $5}' ``` Enfin, on protège l'accès aux fichiers sensibles: ```bash sudo chmod 600 /etc/wireguard/{privatekey,wg0.conf} ``` Configuration de "l'IP forwarding": ```bash sudo nano /etc/sysctl.conf ``` ```bash net.ipv4.ip_forward=1 ``` Vérifier que le fichier /proc/sys/net/ipv4/ip_forward contienne le chiffre 1: ```bash cat /proc/sys/net/ipv4/ip_forward 1 ``` ### Démarrer le serveur: ```bash sudo wg-quick up wg0 ``` Pour activer le serveur au démarrage du système: ```bash sudo systemctl enable wg-quick@wg0.service ``` **NOTE: * Si le serveur se trouve dérrière un routeur ou box internet, ne pas oublier de faire la redirection de port (ici dans l'exemple, le 51820) de la box vers l-IP du serveur (sur le réseau interne) - L'adresse publique du serveur devient alors celle du routeur/box dans la configuration client: Endpoint = SERVER_IP_ADDRESS:51820 ## INSTALLATION ET CONFIGURATION CLIENT: ### LINUX: #### Update et installation: ```bash sudo apt update sudo apt install wireguard ``` #### Création des clefs: ```bash wg genkey | sudo tee /etc/wireguard/clients/clientprivatekey | wg pubkey | sudo tee /etc/wireguard/clients/clientpublickey ``` #### création de la configuration: ```bash nano /etc/wireguard/client.conf ``` ```bash /etc/wireguard/client.conf [Interface] # Clef privée du client PrivateKey = 'CLIENT_PRIVATE_KEY' # Adresse interne du client (en cohérence avec l'IP interne du serveur) Address = 10.0.0.2/24 DNS = 8.8.8.8 [Peer] # Clef publique du serveur PublicKey = 'SERVER_PUBLIC_KEY' # Adresse IP publique du serveur Endpoint = 'SERVER_IP_ADDRESS':51820 AllowedIPs = 0.0.0.0/0 ``` #### Configuration de "l'IP forwarding": ```bash sudo nano /etc/sysctl.conf ``` ```bash /etc/sysctl.conf net.ipv4.ip_forward=1 ``` #### Sécurisation des fichiers sensibles: ```bash sudo chmod 600 /etc/wireguard/{privatekey,wg0.conf} ``` #### Pour démarrer la connection: ```bash sudo wg-quick up wg0 ``` #### Installation d'un plugin pour Gnome - Installer l'extension [Wireguard Indicator, by Gregos-Winus](https://extensions.gnome.org/extension/3160/wireguard-indicator/) - Suivez les indications données en cliquant sur l'applet en haut à droite. ### WINDOWS: #### Télécharger l'application à l'adresse: https://download.wireguard.com/windows-client/wireguard-installer.exe #### Créer une nouvelle config: ![image](docs/win1.png) ![image](docs/win2.png) #### Configuration: Appliquer la configuration suivante en renseignant CLEF-PRIVEE_CLIENT, IP_PUBLIQUE_SERVEUR et CLEF_PUBLIQUE_SERVEUR: ```bash /etc/wireguard/clients/client.conf [Interface] PrivateKey = 'CLIENT_PRIVATE_KEY' Address = 10.0.0.2/24 [Peer] PublicKey = 'SERVER_PUBLIC_KEY' Endpoint = 'SERVER_IP_ADDRESS':51820 AllowedIPs = 0.0.0.0/0 ``` * Note: La port et les adresses IP internes au réseau peuvent également être modifiées (en cohérence avec la configuration du serveur) ### Ajouter un client: Commande à effectuer SUR LE SERVEUR: ```bash sudo wg set wg0 peer 'CLEF_PUBLIQUE_CLIENT' allowed-ips 'IP_INTERNE_CLIENT' ``` * NOTE: Après l'arret du serveur, l'ajout du client est réinitialisé. Privilégier l'ajout du client dans la configuration du serveur au niveau de "[Peer]" La CLEF_PUBLIQUE_CLIENT s'obtient SUR LE CLIENT avec la commande: ```bash sudo cat /etc/wireguard/publickey ``` Pour l'IP interne, elle doit être cohérente avec l'adresse IP interne du serveur. Dans cet exemple, le serveur a pour IP interne 10.0.0.1 et le client 10.0.0.2 Après l'ajout d'un client redémarrer le serveur: ```bash sudo wg-quick down wg0 sudo wg-quick up wg0 ``` #### Connection client Android via QRcode: - Commande à éffectuer sur le serveur pour afficher le QRcode: ```bash sudo apt install qrencode qrencode -t ansiutf8 < /etc/wireguard/clients/client.conf ``` ![image](docs/QRcode.png) ### Accès partage SAMBA: Pour accéder au partage samba d'une machine sur le même réseaux que le serveur: #### A) pour un client Windows: * Dans le barre d'adresse de l'explorateur windows, entrer l'adresse de la machine partageant du contenu via samba: ```bash \\ADRESSEIP.LOCALE.MACHINE.SAMBA\ ``` ![image](docs/win3.png) * Entrer les acréditations (nom d'utilisateur et mot de passe de la session utilisateur) de la machine partageant le contenu samba lors de l'apparition de la fenêtre contextuelle. #### B) pour un client Linux: * Dans l'explorateur de fichiers, choisir autre emplacements; en bas de la fenêtre, un champs de connexion serveur attend une URL, y entrer l'adresse de la machine partageant du contenu via samba: ```bash smb://ADRESSEIP.LOCALE.MACHINE.SAMBA/ ``` ![image](docs/lin1.png) * Enfin, appuyer sur "se connecter" **Attention, sur Linux les slashs sont inversés par rapport à Windows.**