De plus en plus de personnes utilisent leur propre VPN plutôt que de recourir à des services payants : c’est moins cher, plus respectueux de la vie privée et cela permet un contrôle total du serveur. L’une des solutions les plus efficaces pour les régions où le blocage de réseau est strict est AmneziaWG, un protocole développé par le projet Amnezia sur la base de WireGuard.
WireGuard classique est rapide et fiable, mais sa structure de paquets fixe et son protocole d'établissement de liaison prévisible permettent aux systèmes DPI (inspection approfondie des paquets) de l'identifier et de le bloquer efficacement. AmneziaWG résout ce problème : il ajoute des paquets parasites à la connexion WireGuard standard, randomise les en-têtes et modifie la taille des champs d'établissement de liaison. Ainsi, la signature caractéristique de WireGuard disparaît et le trafic ne se distingue plus du trafic UDP ordinaire.
Vous utilisez déjà un tunnel VPN classique et vous vous demandez s'il est judicieux de changer ? Comparez cette configuration à une configuration OpenVPN/PPTP simple dans l'article « Configuration d'un serveur VPN sous Linux : PPTP ou OpenVPN ? » , ou à une configuration WireGuard standard (sans obfuscation) dans l'article « Comment configurer un VPN WireGuard sur votre serveur ».
Ce guide explique comment configurer manuellement un serveur AmneziaWG, sans Docker ni interface web : une solution ultra-légère qui minimise l’impact sur votre VPS, entièrement configurée en ligne de commande. Elle est idéale pour les VPS économiques, car elle ne nécessite ni interface graphique, ni base de données, ni proxy inverse. L’adresse IP du serveur d’exemple ci-dessous est fictive ; remplacez-la par celle de votre propre VPS.
Vous aurez besoin d'un VPS sous Ubuntu 22.04/24.04 ou Debian 11/12, d'un accès root et de l'adresse IP de votre VPS. Un nom de domaine n'est pas nécessaire : AmneziaWG n'utilise pas de certificats, il n'y a donc rien à renouveler et aucune vérification DPI à effectuer (ni négociation TLS, ni autre).
Vous n'avez pas encore de serveur ? Consultez la page « Comment commander un serveur ».
Connexion au serveur
Windows (PuTTY)
Ouvrez PuTTY, entrez l'adresse IP de votre VPS dans le champ Nom d'hôte, définissez le port sur 22 et connectez-vous en tant que root en utilisant le mot de passe que votre fournisseur de VPS vous a envoyé par e-mail.
Adresse IP du serveur : votre adresse IP
Se connecter en tant que : root
Mot de passe : votre mot de passe
1. Ouvrez PuTTY, entrez l'adresse IP de votre VPS dans le champ Nom d'hôte.
2. Réglez le port sur 22.
3. Connectez-vous en tant que root.
4. En utilisant le mot de passe que votre fournisseur de VPS vous a envoyé par e-mail.
Le résultat devrait être le suivant :
Pour une description détaillée de la connexion via PuTTY/SSH, consultez Comment se connecter à un serveur Linux via SSH
Linux / macOS (terminal)
ssh root@YOUR_SERVER_IP
Toutes les commandes ci-dessous sont exécutées sur le serveur, dans cette même session SSH — cela couvre les sections 2 à 5, ainsi que les vérifications côté serveur de la section 9. Les sections 6 à 8 (installation et configuration du client VPN) se déroulent quant à elles sur votre propre appareil Windows/macOS/Linux, puisque c'est sur cet appareil que le VPN doit s'exécuter ; chacune de ces sections indique explicitement quelles lignes, le cas échéant, touchent encore le serveur.
Préparation du serveur
Mettre à jour le système
Avant toute installation, actualisez la liste des paquets et mettez à jour les paquets installés :
apt update -y && apt upgrade -y
Si cette opération met à jour le noyau, redémarrez avant de compiler le module noyau AmneziaWG (voir section 3). Sinon, DKMS risque d'utiliser des en-têtes de noyau incorrects et le module ne pourra pas se charger. (Pour un rappel sur apt et le fonctionnement des gestionnaires de paquets Linux, consultez la documentation relative aux gestionnaires de paquets Linux .) Vérifiez auprès de :
cat /var/run/reboot-required
Activer le transfert IP
Ce paramètre permet au serveur de transférer les paquets des clients sur Internet ; sans lui, le tunnel sera établi mais aucun trafic ne le traversera.
echo "net.ipv4.ip_forward = 1" > /etc/sysctl.d/00-amnezia.conf
sysctl --system
La première commande crée un fichier de configuration dédié ; la seconde l’applique sans redémarrer le serveur.
Configurer le pare-feu (UFW)
Pour en savoir plus sur les règles UFW, consultez la section Configuration du pare-feu sous Linux.
Ouvrez les deux ports dont vous aurez besoin : le port 22/tcp pour SSH (ignorez cette règle et vous risquez de perdre l’accès au serveur) et le port 42666/udp, le port sur lequel AmneziaWG écoutera.
apt install ufw -y
ufw allow 22/tcp
ufw allow 42666/udp
ufw --force enable
ufw status
Les deux règles devraient apparaître comme AUTORISÉES dans la sortie d'état ufw.
Installation d'AmneziaWG
Debian ne prend pas directement en charge les PPA de type Ubuntu ; le dépôt doit donc être ajouté manuellement plutôt qu'avec la commande `add-apt-repository`. La procédure est identique sur Ubuntu.
Ajouter le dépôt manuellement
echo "deb [arch=amd64] https://ppa.launchpadcontent.net/amnezia/ppa/ubuntu jammy main" > /etc/apt/sources.list.d/amnezia.list
Ajouter la clé de signature GPG
Utilisez un fichier de trousseau de clés désarmé plutôt que la commande apt-key obsolète et récupérez la véritable clé de signature du PPA (empreinte digitale 75C9DD72C799870E310542E24166F2C257290828) :
apt install -y gnupg2
gpg --keyserver keyserver.ubuntu.com --recv-keys 57290828
gpg --export 57290828 | tee /usr/share/keyrings/amnezia.gpg > /dev/null
echo "deb [arch=amd64 signed-by=/usr/share/keyrings/amnezia.gpg] https://ppa.launchpadcontent.net/amnezia/ppa/ubuntu jammy main" > /etc/apt/sources.list.d/amnezia.list
Mettre à jour et installer
apt update
apt install -y amneziawg
Vérifiez que le module est chargé.
modprobe amneziawg
lsmod | grep amnezia
Génération de la configuration du serveur et du client
Installer les utilitaires auxiliaires
Installez la dépendance qrcode, puis créez un répertoire de travail dédié et téléchargez-y le script community config-generator :
apt install -y python3-qrcode
mkdir -p ~/awg && cd ~/awg
wget -O awgcfg.py \
https://gist.githubusercontent.com/remittor/8c3d9ff293b2ba4b13c367cc1a69f9eb/raw/awgcfg.py
Si python3-qrcode n'est pas disponible dans les dépôts de votre distribution, utilisez pip3 install qrcode --break-system-packages (cette option est requise sur Debian 12+/Ubuntu 24.04, qui bloquent par défaut les installations via pip non gérées). N'effectuez pas les deux installations simultanément : choisissez-en une.
Générer la configuration du serveur
Créez le fichier /etc/amnezia/amneziawg/awg0.conf. Vous pouvez conserver les valeurs par défaut du sous-réseau interne et du port UDP du tunnel ou définir vos propres paramètres :
python3 awgcfg.py --make /etc/amnezia/amneziawg/awg0.conf \
-i 10.10.8.1/24 -p 42666
L'option -i définit l'adresse réseau interne et le masque du tunnel ; -p définit le port UDP du serveur (le même que celui ouvert à l'étape 2.3).
Créer le modèle de configuration client
python3 awgcfg.py --create
Cela enregistre un modèle dans le même dossier à partir duquel les configurations individuelles des clients sont construites — il comprend déjà la clé publique du serveur, son adresse IP et les paramètres d'obfuscation (Jc, Jmin, Jmax, S1, S2, H1–H4) qui distinguent AmneziaWG de WireGuard simple.
Ajouter des clients
Créez une entrée par appareil — le nom peut être n'importe quoi, par exemple le nom de l'appareil :
python3 awgcfg.py -a "laptop"
python3 awgcfg.py -a "phone"
Générer des fichiers clients et des codes QR
python3 awgcfg.py -c -q
Le dossier ~/awg contiendra désormais des fichiers tels que laptop.conf et phone.conf, ainsi que des codes QR PNG correspondants que vous pourrez scanner directement dans une application mobile.
Le dossier ~/awg contiendra désormais des fichiers tels que laptop.conf et phone.conf, ainsi que des codes QR PNG correspondants que vous pourrez scanner directement dans une application mobile.
Démarrage du service et activation du démarrage automatique
Activez l'interface awg0 et configurez-la pour qu'elle démarre automatiquement au redémarrage :
systemctl enable --now awg-quick@awg0
systemctl restart [email protected]
systemctl status [email protected]
L'état devrait indiquer « actif » (terminé) avec l'unité activée au démarrage. Si la console semble se bloquer sur l'affichage des journaux, appuyez sur Q pour quitter.
Consultez la liste des pairs actifs et le trafic par pair avec :
awg show
Connexion depuis Windows
Tout ce qui est décrit dans cette section se déroule sur votre PC Windows, et non via SSH : le client VPN doit être installé sur l’appareil qui utilisera le tunnel. La seule interaction avec le serveur est le téléchargement via scp (étape 6.2), et même cette commande est saisie sur votre PC, téléchargeant un fichier déjà généré par le serveur dans la section 4.
Installer le client
AmneziaWG dispose d'une application Windows dédiée ; son interface est similaire à celle du client WireGuard standard, mais elle prend en charge les paramètres d'obfuscation. Téléchargez le programme d'installation depuis le dépôt officiel du projet :
https://github.com/amnezia-vpn/amneziawg-windows-client/releases
Le lien ci-dessus vous dirige vers la page des versions du client Windows maintenu ; téléchargez-y le fichier .msi/.exe le plus récent. Ouvrez cette page dans votre navigateur, il ne s'agit pas d'une commande à copier dans un terminal.
Exécutez le programme d'installation et suivez les instructions de l'assistant de configuration ; il n'est pas nécessaire de modifier les paramètres par défaut.
Importer la configuration
Copiez le fichier de configuration client du serveur vers votre ordinateur — le moyen le plus simple est d'utiliser scp, exécuté dans PowerShell sur votre ordinateur, et non sur le serveur :
scp root@YOUR_SERVER_IP:~/awg/laptop.conf .
Dans l'application AmneziaWG, cliquez sur « Importer le(s) tunnel(s) depuis un fichier », sélectionnez laptop.conf et activez le bouton à bascule en regard du nouveau tunnel.
Connexion depuis macOS
Deux options sont possibles :
- AmneziaWG (Mac App Store) : client léger, compatible avec macOS 12 et versions ultérieures. Recherchez « AmneziaWG » dans l’App Store, installez-le, puis utilisez « Importer un ou plusieurs tunnels depuis un fichier » et sélectionnez votre fichier .conf — la procédure est identique à celle du client Windows.
- AmneziaVPN (application complète, macOS 14+) : téléchargez le fichier .pkg depuis github.com/amnezia-vpn/amnezia-client/releases/latest si vous préférez utiliser l’application Amnezia complète plutôt que le client léger AmneziaWG uniquement.
Copiez d'abord la configuration du client si nécessaire, comme à l'étape 6.2 :
scp root@YOUR_SERVER_IP:~/awg/laptop.conf .
Connexion depuis Linux
Sur un ordinateur de bureau ou portable Linux, vous avez deux options :
- Interface graphique : installez le client de bureau AmneziaVPN complet depuis github.com/amnezia-vpn/amnezia-client/releases, puis importez le fichier .conf de la même manière que sous Windows/macOS.
- CLI, utilisant les mêmes outils amneziawg que ceux utilisés sur le serveur (awg / awg-quick) :
apt install -y amneziawg
cp laptop.conf /etc/amnezia/amneziawg/awg0.conf
awg-quick up awg0
Exécutez ce code pour vous déconnecter.
awg-quick down awg0
Pour que le tunnel s'ouvre automatiquement à l'ouverture de session, activez-le en tant que service :
systemctl enable --now awg-quick@awg0
Vérification de la connexion
Une fois le tunnel actif (voir section 6, 7 ou 8), retournez sur votre appareil (et non dans la session SSH) et ouvrez un outil de vérification d'adresse IP dans un navigateur : l'adresse affichée doit correspondre à celle de votre VPS. Pour vérifier depuis la session SSH, exécutez la commande `awg show` sur le serveur et assurez-vous que le client a bien établi une connexion et que le trafic est actif.
Référence:
|
Champ |
Valeur |
|
Adresse |
VOTRE_ADRESSE_IP_TUNNEL (l'adresse du client à l'intérieur du tunnel, par exemple 10.10.8.2/32 — attribuée automatiquement lorsque le client a été ajouté à l'étape 4.4) |
|
Endpoint |
VOTRE_ADRESSE_IP_SERVEUR:42666 (Adresse IP externe du serveur et port UDP auquel le client se connecte.) |
|
DNS |
8.8.8.8 |
|
Jc / Jmin / Jmax |
Le nombre et la taille des paquets « indésirables » envoyés avant l'établissement de la connexion peuvent différer entre le serveur et le client sans interrompre la connexion. |
|
S1 / S2 |
La taille des champs de remplissage de la négociation de connexion doit correspondre octet par octet entre le serveur et chaque client. |
|
H1 – H4 |
Les en-têtes de type paquet qui masquent le protocole en le faisant passer pour du trafic ordinaire doivent également correspondre exactement et être uniques les uns par rapport aux autres. |
Seuls S1/S2 et H1–H4 doivent être identiques aux deux extrémités du tunnel ; Jc, Jmin et Jmax concernent uniquement la manière dont chaque côté remplit son propre trafic indésirable sortant, de sorte que les valeurs du client et du serveur peuvent légitimement différer, comme c’est le cas dans l’exemple ci-dessus.
Conclusion
En suivant ce guide, votre VPS exécutera son propre serveur AmneziaWG : un protocole compatible WireGuard avec obfuscation du trafic, nettement plus difficile à distinguer du trafic UDP ordinaire par les systèmes DPI que WireGuard seul. Ce service s'exécute en tant qu'unité systemd awg-quick@awg0 et reste actif après un redémarrage du serveur sans aucune intervention de votre part.
Les fichiers .conf et les codes QR résultants dans ~/awg fonctionnent non seulement avec le client Windows, mais peuvent également être importés dans les applications AmneziaWG ou Amnezia pour Android, iOS, macOS et Linux, ainsi que dans les routeurs Keenetic et OpenWrt.
Ajoutez de nouveaux clients à tout moment en répétant les étapes 4.4–4.5 (python3 awgcfg.py -a "nom", puis awgcfg.py -c -q) et en redémarrant l'interface avec systemctl restart [email protected].
Quelques habitudes à conserver une fois le serveur en marche :
- Maintenez le système à jour. Relancez régulièrement les commandes `apt update -y && apt upgrade -y` et redémarrez après chaque mise à jour du noyau afin que DKMS puisse reconstruire le module amneziawg avec le nouveau noyau.
- Sauvegardez le répertoire ~/awg. Il contient la clé privée de chaque client et la paire de clés propre au serveur dans awg0.conf ; sa perte implique de régénérer les configurations pour chaque appareil.
- Révoquez rapidement les périphériques perdus. Supprimez le bloc [Peer] correspondant du fichier /etc/amnezia/amneziawg/awg0.conf et exécutez la commande systemctl restart [email protected].
Si la connexion ne s'établit pas, vérifiez dans l'ordre :
- l'état du service (systemctl status) [email protected])
- les règles du pare-feu (état ufw — le port 42666/udp doit être ouvert)
- l'état du module DKMS si l'interface ne démarre même pas (dkms status, lsmod | grep amnezia)
- la liste des pairs actifs sur le serveur (awg show)
- que la configuration du client pointe vers l'adresse IP correcte du serveur externe
Vous souhaitez comparer AmneziaWG à d'autres solutions avant de vous engager ? Consultez les articles « Configuration d'un serveur VPN sous Linux : PPTP ou OpenVPN ? » et « Comment configurer WireGuard VPN sur votre serveur » . Si vous n'avez besoin que d'un simple proxy plutôt que d'un tunnel VPN complet, la configuration de 3proxy sous CentOS/Arch Linux est une alternative plus légère. Pour renforcer la sécurité de votre serveur une fois le VPN opérationnel, consultez la section « Utilisateurs Linux : Gestion et permissions ».