add wireguard doc
All checks were successful
continuous-integration/drone Build is passing

This commit is contained in:
Grégory Lebreton 2026-04-02 11:06:29 +02:00
parent ab3b9dc081
commit 47ff46d936
6 changed files with 331 additions and 2 deletions

View File

@ -9,6 +9,7 @@
- [Installer un serveur Debian SSH + Samba](serveur_debian_smb_ssh.md) - [Installer un serveur Debian SSH + Samba](serveur_debian_smb_ssh.md)
- [Un mémo postgres-cli](postgres.md) - [Un mémo postgres-cli](postgres.md)
- [Un mémo mysql](mysql.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) - [Créer un certificat pour une wildcard](wildcard_certificates.md)
- [calculer les adresses d'un réseau](calculer-adresses-reseau.md) - [Calculer les adresses d'un réseau](calculer-adresses-reseau.md)
- [Installer et gérer un VPN avec Wireguard](wireguard/)

View File

@ -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é.

View File

@ -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/` |

View File

@ -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.

View File

@ -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**.

View File

@ -134,6 +134,10 @@ nav:
- "Wireshark": divers/server/wireshark.md - "Wireshark": divers/server/wireshark.md
- "Calcul Réseau": divers/server/calculer-adresses-reseau.md - "Calcul Réseau": divers/server/calculer-adresses-reseau.md
- "Créer un certificat pour une wildcard (*.domain.com)": divers/server/wildcard_certificates.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": - "Les guides DevOps":
- divers/devops/index.md - divers/devops/index.md
- "Hugo": - "Hugo":