Installation sous Alpine Linux du serveur VPN WireGuard
Cette procédure a été créée dans la cadre de l’association Niortaise Mémoire Vive. Si vous avez des suggestions pour l’améliorer n’hésitez pas à me contacter.
Dominique Renaudeau
Proxmox
Testé avec le modèle de conteneur alpine-3.22-defaut_20250617_amd64.tar.xz.
Paramètres de mon serveur sous Alpine Linux
Exemple de procédure de configuration d’Alpine Linux :
IP 192.168.1.*** (fixe) – Port SSH : 22**
Box
Ajout d’un transfert de port UDP dans la box : port 518** vers 192.168.1.***
Paramètres à remplacer
192.168,1,*** – Adresse IP de votre serveur VPN WireGuard.
22** – Port SSH, 22 par défaut, on peut le personnaliser.
518** – Port utilisé par le serveur VPN WireGuard.
Le réseau pour le VPN est le 10.5.0.0/24, l’IP du serveur 10.5.0.1, l’IP pour le client 10.5.0.3 (vous pouvez modifier ces paramètres).
Installation du serveur Wiregard
Les commandes sont à exécuter en administrateur root (su).
On se connecte en SSH depuis Linux ou Windows avec PuTTY pour l’installation (adaptez utilisateur, IP et port SSH) :
ssh utilisateur@192.168.1.*** -p 22**
Se connecter en root : su
Inspiré de ce tuto, https://www.justegeek.fr/tuto-creer-un-serveur-vpn-wireguard-sous-debian-11/
apk update
apk add wireguard-tools
On génère les clés :
wg genkey | tee /etc/wireguard/privatekey | wg pubkey > /etc/wireguard/publickey
La clé privée sera dans le fichier /etc/wireguard/privatekey :
gJ**********************************************01c=
La clé publique sera dans le fichier /etc/wireguard/publickey :
bP**********************************************HQ=
On peut faire un cat des fichiers pour visualiser les clés.
On crée le fichier de configuration sous Linux Alpine
Pour vérifier si le paquet nano est installé, la commande affichera son nom :
apk info -e nano
Intallation de nano :
apk add nano
Pour créer le fichier:
nano /etc/wireguard/wg0.conf
# fichier de configuration [Interface] # Adresse IP du serveur à l’intérieur du VPN Address = 10.5.0.1/24 # Clé privée du serveur PrivateKey = gJ**********************************************01c= ListenPort = 518** # Activer le routage du trafic vers le réseau local PostUp = iptables -A FORWARD -i wg0 -d 192.168.1.0/24 -j ACCEPT PostUp = iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE PostDown = iptables -D FORWARD -i wg0 -d 192.168.1.0/24 -j ACCEPT PostDown = iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE [Peer] # Clé publique du client PublicKey = sR*********************************************Ak= # Adresse IP que le client peut utiliser à l’interieur du VPN AllowedIPs = 10.5.0.3/24
Après avoir modifié votre fichier vous pouvez enregistrer les modifications et quitter Nano :
CRTL + X pour quitter l’éditeur nano.
Y pour confirmer l’enregistrement des modifications.
Entrée pour confirmer le nom du fichier.
Si l’on veut réaliser la procédure sur un autre type de système Linux penser à adapter le nom de l’interface réseau du serveur (eth0 ici). Dans notre exemple, à l’intérieure du VPN, le serveur a l’IP 10.5.0.1/24 et le client 10.5.0.3/24. Le /24 correspond au masque 255.255.255.0. Le réseau local est le 192.168.1.0/24.
La technique de l’IP masquerade, ou **mascarade IP**, permet à un réseau privé de dissimuler ses adresses IP internes derrière une seule adresse IP publique. Utilisée dans le cadre de la traduction d’adresses réseau (NAT), elle permet aux appareils d’un réseau local d’accéder à Internet en utilisant une seule adresse IP externe, simplifiant la gestion des adresses IP et renforçant la sécurité du réseau interne.
Explications :
[Interface] : Contient les paramètres de l’interface Wiregard sur le serveur.
- Address : Adresse IP que le serveur utilisera àl’intérieur du VPN.
- Privatekey : La clé privée du serveur, qui doit être gardée secrète.
- ListenPort : Le port sur lequel le serveur écoute les connexions WireGuard.
[Peer] : Contient les paramètres pour un client (une section [Peer] pour chaque client).
- Publickey : La clé publique du client, qui permet au serveur de l’identifier.
- AllowedIPs : Les adresses IP que le client est autorisé à utiliser à l’interieur du VPN.
Activer le routage IP sur le serveur
Activer l'IP forwarding (L'IP forwarding est le processus par lequel un appareil réseau, tel qu'un routeur, transfère ou relaie des paquets IP).
Pour appliquer la commande immédiatement le temps de la session :
sysctl -w net.ipv4.ip_forward=1
Pour que la commande persiste après un redémarrage on édite un fichier .conf :
nano /etc/sysctl.d/local.conf
Ajouter la ligne dans le fichier :
net.ipv4.ip_forward=1
Vérifier si le service sysctl est activé :
service sysctl status
Si le service est actif, vous devriez voir une ligne comme :
status: started
Si le service n’est pas activé, exécutez :
rc-update add sysctl boot
Pour appliquer les paramètres sysctl sans attendre le prochain redémarrage :
service sysctl start
Pour confirmer que vos paramètres (comme net.ipv4.ip_forward=1) sont bien chargés, utilisez :
sysctl -a | grep net.ipv4.ip_forward
Pour vérifier si le paquet iptables est installé, la command affichera son nom :
apk info -e iptables
Sinon installation d’iptables :
apk add iptables
Quand tout est prêt on démarre l’interface :
wg-quick up wg0
[#] ip link add wg0 type wireguard
[#] wg setconf wg0 /dev/fd/63
[#] ip -4 address add 10.5.0.1/24 dev wg0
[#] ip link set mtu 1420 up dev wg0
[#] iptables -A FORWARD -i wg0 -d 192.168.1.0/24 -j ACCEPT
[#] iptables -t nat -A POSTROUTING -o ens18 -j MASQUERADE
et on regarde :
wg show wg0
Ajouter une règle dans la chaîne INPUT pour accepter tout trafic entrant sur le port 518** en utilisant le protocole UDP :
iptables -A INPUT -p udp --dport 518** -j ACCEPT
J’ai ajouté cette règle, mais je n’ai pas fait en sorte qu’elle soit enregistrée, pourtant après un redémarrage sans que cette règle soit active ça fonctionne néanmoins. (à voir).
POUR DEBUGGER
Analyser le trafic sur les interfaces du serveur avec tcpdump (à installer en root si besoin) :
apk add tcpdump
tcpdump -i wg0
Si vous voulez vérifier si des paquets arrivent bien sur eth0.
Utilisez tcpdump pour surveiller l’interface eth et capturer les paquets sur le port 518** :
tcpdump -i eth0 udp port 518**
Commandes pour WireGuard sur le serveur
Pour voir si WireGuard est activé :
wg show
Pour activer WireGuard pour wg0 en administrateur :
wg-quick up wg0
Commandes iptables
En administrateur root :
iptables -L -v -n
iptables -L -v -n | grep udp
Le protocole UDP correspond au 17 dans iptables.
iptables -L INPUT -v -n
Ces commandes affichent des informations sur les règles actives.
Commandes apk
Mise à jour :
apk update
apk upgrade
Pour vérifier si un paquet est installé, la command affichera son nom :
apk info -e nano
apk info -e iptables
Installer un paquet :
apk add tcpdump
Configurer le lancement automatique de WireGuard
Lancement automatique de WireGuard au démarrage d’un serveur sous AlpineLinux
Fichier sur le client sous Linux Mint
sudo nano /etc/wireguard/wg2.conf
[Interface] # Clé privée du client PrivateKey = 8G*********************************************Gg= # Adresse IP du client à l’intérieur du VPN Address = 10.5.0.3/24 [Peer] # Clé publique du serveur PublicKey = bP*********************************************HQ= AllowedIPs = 192.168.1.0/24, 192.168.2.0/24, 10.5.0.0/24 Endpoint = IP_Publique_Serveur:518**
Après modifications.
CRTL + X pour quitter l’éditeur nano.
O pour confirmer l’enregistrement des modifications.
Entrée pour confirmer le nom du fichier.
- Dans notre exemple les réseaux IP 192.168.1.0/24 et 192.168.2.0/24 se trouvant sur le site du serveur sont accessibles. Le réseau IP 10.5.0.0/24 est celui de notre VPN.

