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


Paramètres de mon serveur sous 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 /etc/wireguard/privatekey :

gJ**********************************************01c=

La clé publique sera dans /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 :

[Ctrl] + [X]

[O]

[Entrée]

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

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

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 le fichier sysctl.conf :

nano /etc/sysctl.conf

# Décommentez la ligne ou l’ajouter dans le fichier.

net.ipv4.ip_forward=1

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 51879 en utilisant le protocole UDP :

iptables -A INPUT -p udp --dport 518** -j ACCEPT

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

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

Mise à jour le 10/11/2024


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

Clients VPN WireGuard

Installation du client pour VPN WireGuard sous Linux Mint :

Installer WireGuard VPN Client sur Linux Mint

Installation du client pour VPN WireGuard sous Windows 11 :

Installer et configurer le client WireGuard sous Windows 11


À voir également

Installation et configuration de WireGuard dans Home Assistant

Retour en haut