From 47ff46d93641588ce67053f38966b218ad863371 Mon Sep 17 00:00:00 2001 From: greg Date: Thu, 2 Apr 2026 11:06:29 +0200 Subject: [PATCH] add wireguard doc --- docs/divers/server/index.md | 5 +- docs/divers/server/wireguard/clients/index.md | 106 ++++++++++++++++++ docs/divers/server/wireguard/gestion/index.md | 84 ++++++++++++++ docs/divers/server/wireguard/index.md | 35 ++++++ docs/divers/server/wireguard/serveur/index.md | 99 ++++++++++++++++ mkdocs.yml | 4 + 6 files changed, 331 insertions(+), 2 deletions(-) create mode 100644 docs/divers/server/wireguard/clients/index.md create mode 100644 docs/divers/server/wireguard/gestion/index.md create mode 100644 docs/divers/server/wireguard/index.md create mode 100644 docs/divers/server/wireguard/serveur/index.md diff --git a/docs/divers/server/index.md b/docs/divers/server/index.md index f1494e0c..ea9d502e 100644 --- a/docs/divers/server/index.md +++ b/docs/divers/server/index.md @@ -9,6 +9,7 @@ - [Installer un serveur Debian SSH + Samba](serveur_debian_smb_ssh.md) - [Un mémo postgres-cli](postgres.md) - [Un mémo mysql](mysql.md) -- [capturer le traffic réseau avec Wireshark](wireshark.md) +- [Capturer le traffic réseau avec Wireshark](wireshark.md) - [Créer un certificat pour une wildcard](wildcard_certificates.md) -- [calculer les adresses d'un réseau](calculer-adresses-reseau.md) \ No newline at end of file +- [Calculer les adresses d'un réseau](calculer-adresses-reseau.md) +- [Installer et gérer un VPN avec Wireguard](wireguard/) \ No newline at end of file diff --git a/docs/divers/server/wireguard/clients/index.md b/docs/divers/server/wireguard/clients/index.md new file mode 100644 index 00000000..32bee47a --- /dev/null +++ b/docs/divers/server/wireguard/clients/index.md @@ -0,0 +1,106 @@ +# Clients WireGuard + +## Linux + +### Installation + +```bash +sudo apt update +sudo apt install wireguard +``` + +### Génération des clés + +```bash +wg genkey | sudo tee /etc/wireguard/clients/clientprivatekey | wg pubkey | sudo tee /etc/wireguard/clients/clientpublickey +``` + +### Configuration `/etc/wireguard/client.conf` + +```bash +nano /etc/wireguard/client.conf +``` + +```ini +[Interface] +PrivateKey = CLIENT_PRIVATE_KEY +Address = 10.0.0.2/24 +DNS = 1.1.1.1 + +PostUp = iptables -A FORWARD -i %i -j ACCEPT; iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE +PostDown = iptables -D FORWARD -i %i -j ACCEPT; iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE + +[Peer] +PublicKey = SERVER_PUBLIC_KEY +Endpoint = SERVER_IP_ADDRESS:51820 +AllowedIPs = 0.0.0.0/0 +``` + +IP Forwarding : + +```bash +sudo nano /etc/sysctl.conf +# Ajouter : net.ipv4.ip_forward=1 +``` + +Sécuriser les fichiers : + +```bash +sudo chmod 600 /etc/wireguard/{privatekey,wg0.conf} +``` + +Démarrer la connexion : + +```bash +sudo wg-quick up wg0 +``` + +### Extension Gnome (optionnel) + +Installer le connecteur GNOME Shell : + +```bash +sudo apt-get install gnome-browser-connector +``` + +Puis installer l'extension [WireGuard Indicator](https://extensions.gnome.org/extension/3612/wireguard-indicator/) depuis le navigateur. + +--- + +## Windows + +Télécharger et installer le client : [wireguard-installer.exe](https://download.wireguard.com/windows-client/wireguard-installer.exe) + +Ouvrir l'application, cliquer sur **+** → **Créer un tunnel vide**, puis appliquer la configuration : + +```ini +[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 +``` + +!!! tip + La clé publique du client est affichée automatiquement dans l'interface de l'application. Transmettez-la à l'administrateur du serveur. + +--- + +## Android (via QR Code) + +Sur le **serveur**, générer et afficher le QR Code : + +```bash +sudo apt install qrencode +qrencode -t ansiutf8 < /etc/wireguard/clients/client.conf +``` + +Télécharger l'application WireGuard : [Play Store](https://play.google.com/store/apps/details?id=com.wireguard.android) ou [APK direct](https://download.wireguard.com/android-client/com.wireguard.android-1.0.20231018.apk) + +Dans l'application : **+** → **Scanner depuis QR Code** → pointer la caméra vers le QR Code du terminal. + +!!! warning + Le QR Code contient la clé privée du client. Générez-le dans un environnement sécurisé. diff --git a/docs/divers/server/wireguard/gestion/index.md b/docs/divers/server/wireguard/gestion/index.md new file mode 100644 index 00000000..657accb9 --- /dev/null +++ b/docs/divers/server/wireguard/gestion/index.md @@ -0,0 +1,84 @@ +# Gestion des clients + +## Ajouter un client + +### Méthode recommandée — ajout permanent + +Éditer le fichier de config du serveur : + +```bash +sudo nano /etc/wireguard/wg0.conf +``` + +Ajouter un bloc `[Peer]` : + +```ini +[Peer] +PublicKey = CLE_PUBLIQUE_CLIENT +AllowedIPs = 10.0.0.X/32 +``` + +Puis redémarrer : + +```bash +sudo wg-quick down wg0 +sudo wg-quick up wg0 +``` + +### Méthode temporaire — ajout à chaud + +```bash +sudo wg set wg0 peer 'CLEF_PUBLIQUE_CLIENT' allowed-ips 'IP_INTERNE_CLIENT' +``` + +!!! warning + Cet ajout est **réinitialisé à chaque arrêt** du serveur. Préférer l'ajout dans `wg0.conf`. + +## Obtenir la clé publique d'un client Linux + +Commande à exécuter **sur le client** : + +```bash +sudo cat /etc/wireguard/publickey +``` + +## Adressage interne + +| Machine | IP interne | +|---|---| +| Serveur | `10.0.0.1` | +| Client 1 | `10.0.0.2` | +| Client 2 | `10.0.0.3` | +| Client N | `10.0.0.N+1` | + +--- + +# Accès aux partages Samba + +Une fois connecté au VPN, les partages réseau des machines sur le même réseau que le serveur sont accessibles. + +## Depuis Windows + +Dans la barre d'adresse de l'Explorateur Windows : + +``` +\\ADRESSEIP-SERVER-SAMBA\ +``` + +Renseigner les identifiants de la machine distante lors de l'invite. + +## Depuis Linux + +Dans l'explorateur de fichiers → **Autres emplacements** → champ "Connexion au serveur" : + +``` +smb://ADRESSEIP-SERVER-SAMBA/ +``` + +Cliquer sur **Se connecter**. + +!!! warning "Sens des slashs" + | OS | Format | + |---|---| + | Windows | `\\ADRESSE\` | + | Linux | `smb://ADRESSE/` | diff --git a/docs/divers/server/wireguard/index.md b/docs/divers/server/wireguard/index.md new file mode 100644 index 00000000..41be4418 --- /dev/null +++ b/docs/divers/server/wireguard/index.md @@ -0,0 +1,35 @@ +# WireGuard VPN + +![wireguard-logo](https://www.wireguard.com/img/wireguard.svg) + +Guide d'installation et de configuration d'un VPN WireGuard — serveur Linux, clients multi-plateformes et gestion des accès réseau. + +--- + +## Sections + +### [Serveur](serveur/index.md) +Installation sous Linux, génération des clés, configuration de `wg0.conf`, IP forwarding et démarrage du service. + +### [Clients](clients/index.md) +Configuration sous Linux, Windows et Android. Inclut l'extension Gnome et l'import par QR Code pour mobile. + +### [Gestion des clients](gestion/index.md) +Ajouter des pairs au serveur (temporaire ou permanent), récupérer les clés publiques et gérer l'adressage interne. + +### [Accès Samba](gestion/index.md#accès-aux-partages-samba) +Accéder aux partages réseau depuis un client Windows ou Linux via le VPN. + +--- + +## Informations générales + +| Paramètre | Valeur | +|---|---| +| Port par défaut | `UDP 51820` | +| Réseau interne (exemple) | `10.0.0.0/24` | +| Adresse serveur (exemple) | `10.0.0.1` | +| Dépôt | [GARAGENUM/wireguard-vpn](https://git.legaragenumerique.fr/GARAGENUM/wireguard-vpn) | + +!!! tip "Serveur derrière un routeur" + Si le serveur est derrière une box, pensez à rediriger le port **UDP 51820** vers son IP interne. L'`Endpoint` côté client sera l'IP publique de la box. diff --git a/docs/divers/server/wireguard/serveur/index.md b/docs/divers/server/wireguard/serveur/index.md new file mode 100644 index 00000000..4d2f2e15 --- /dev/null +++ b/docs/divers/server/wireguard/serveur/index.md @@ -0,0 +1,99 @@ +# Serveur WireGuard + +## Installation + +```bash +sudo apt update +sudo apt install wireguard +``` + +## Génération des clés + +```bash +wg genkey | sudo tee /etc/wireguard/privatekey | wg pubkey | sudo tee /etc/wireguard/publickey +``` + +Afficher la clé privée (nécessaire pour la config) : + +```bash +cat /etc/wireguard/privatekey +``` + +Identifier l'interface réseau active : + +```bash +ip -o -4 route show to default | awk '{print $5}' +``` + +## Configuration `/etc/wireguard/wg0.conf` + +```bash +sudo nano /etc/wireguard/wg0.conf +``` + +```ini +[Interface] +Address = 10.0.0.1/24 +ListenPort = 51820 +PrivateKey = CLEF_PRIVEE_SERVEUR + +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] +PublicKey = CLE_PUBLIQUE_CLIENT_1 +AllowedIPs = 10.0.0.2/32 + +[Peer] +PublicKey = CLE_PUBLIQUE_CLIENT_2 +AllowedIPs = 10.0.0.3/32 +``` + +| Variable | Comment l'obtenir | +|---|---| +| `CLEF_PRIVEE_SERVEUR` | `cat /etc/wireguard/privatekey` | +| `INTERFACE_RESEAU` | `ip -o -4 route show to default \| awk '{print $5}'` | +| `CLE_PUBLIQUE_CLIENT_X` | Fournie par chaque client | + +Protéger les fichiers sensibles : + +```bash +sudo chmod 600 /etc/wireguard/{privatekey,wg0.conf} +``` + +## IP Forwarding + +```bash +sudo nano /etc/sysctl.conf +``` + +```ini +net.ipv4.ip_forward=1 +``` + +Vérification : + +```bash +cat /proc/sys/net/ipv4/ip_forward +# Résultat attendu : 1 +``` + +## Démarrage + +```bash +# Démarrer +sudo wg-quick up wg0 + +# Activer au démarrage du système +sudo systemctl enable wg-quick@wg0.service +``` + +| Action | Commande | +|---|---| +| Démarrer | `sudo wg-quick up wg0` | +| Arrêter | `sudo wg-quick down wg0` | +| Statut | `sudo wg show` | +| Activer au boot | `sudo systemctl enable wg-quick@wg0.service` | + +!!! warning "Serveur derrière un routeur / box" + Pensez à rediriger le port **UDP 51820** vers l'IP interne du serveur. L'`Endpoint` côté client sera alors l'**IP publique de la box**. diff --git a/mkdocs.yml b/mkdocs.yml index 6ec8a177..27f0a105 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -134,6 +134,10 @@ nav: - "Wireshark": divers/server/wireshark.md - "Calcul Réseau": divers/server/calculer-adresses-reseau.md - "Créer un certificat pour une wildcard (*.domain.com)": divers/server/wildcard_certificates.md + - "VPN Wireguard (installation et gestion)": + - Serveur: divers/server/wireguard/serveur/index.md + - Clients: divers/server/wireguard/clients/index.md + - Gestion & Samba: divers/server/wireguard/gestion/index.md - "Les guides DevOps": - divers/devops/index.md - "Hugo":