Skip to main content

Mise en place du tunnel WireGuard sur votre serveur

Ce tutoriel vous guide à travers la mise en place d'un client WireGuard sur un serveur. Ce tutoriel est conçu pour vous fournir une adresse IPv4 via un tunnel WireGuard.

Ce tuto est idéal pour ajouter une IP additionnelle sur votre serveur.

Prérequis

  • Un serveur Linux avec accès root.
  • Le package WireGuard installé. Si vous ne l'avez pas encore installé, vous pouvez suivre ce guide d'installation de WireGuard pour votre distribution.
  • Un fichier de configuration WireGuard fourni par votre fournisseur de tunnel (vous trouverez un exemple de ce fichier plus bas dans ce guide).

⚠️ Risques d'ajouter une IP publique sur un serveur

Ajouter une adresse IP publique à un serveur comporte certains risques. En exposant une IP publique supplémentaire, vous ouvrez potentiellement le serveur à des attaques externes, notamment des tentatives de connexion non autorisées ou des attaques DDoS. Vous êtes responable de ce que vous faites.

1. Créer le fichier de configuration wg0.conf

Vous allez devoir créer le fichier de configuration WireGuard wg0.conf qui permettra de connecter votre serveur à notre tunnel WireGuard.

Ouvrez un éditeur de texte et créez le fichier /etc/wireguard/wg0.conf :

sudo nano /etc/wireguard/wg0.conf

Ensuite, ajoutez les lignes suivantes dans ce fichier :

[Interface]
PrivateKey = <VotreCléPrivée> # Clé privée
Address = <IPv4 fourni grace au tunnel>/32 # Adresse IP du client
Table = off # Empêche WireGuard d'établir des routes par défaut


PostUp = ip rule add from <IPv4 fourni grace au tunnel> lookup wireguard
PostUp = ip route add default dev wg0 table wireguard

PostDown = ip rule del from <IPv4 fourni grace au tunnel> lookup wireguard
PostDown = ip route del default dev wg0 table wireguard

[Peer]
PublicKey = <CléPubliqueDuServeur> # Clé publique fictive mais réaliste
PresharedKey = <CléPréPartagée> # Clé pré-partagée fictive
Endpoint = <AdresseDuServeur>:51820 # Adresse et port du serveur WireGuard
AllowedIPs = 0.0.0.0/0 # Tout le trafic passera par ce tunnel
PersistentKeepalive = 25 # Garder la connexion active

Les règles (PostUP & Post Down) permettent de préserver la configuration de routage par défaut, tout en acheminant uniquement le trafic destiné à l'adresse IP WireGuard, sans interférer avec les autres ip's du serveur.

2. Ajouter la table wireguard

WireGuard crée des routes spécifiques pour le tunnel, et pour que le trafic IPv4 fonctionne correctement, vous devez définir une table de routage. Ce qui est essentiel ici, c'est d'ajouter la table wireguard dans le fichier /etc/iproute2/rt_tables.

Ouvrez le fichier rt_tables avec un éditeur de texte :

sudo nano /etc/iproute2/rt_tables

Ajoutez la ligne suivante :

200     wireguard

Exemple une fois rempli :

255     local
254 main
253 default
200 wireguard
0 unspec

Cela crée une table de routage appelée wireguard que vous utiliserez dans les règles et routes définies dans wg0.conf.

3. Appliquer la configuration

Une fois que vous avez créé et configuré le fichier wg0.conf, vous pouvez démarrer WireGuard avec la commande suivante :

sudo wg-quick up wg0

Cela activera le tunnel WireGuard et appliquera les règles et routes définies dans le fichier wg0.conf.

4. Vérifier la connexion

Pour vérifier que la connexion fonctionne et que le tunnel est actif, utilisez la commande suivante :

sudo wg show

Exemple de résultat :

interface: wg0
public key: <Clé publique du serveur>
private key: <Clé privée cachée>
listening port: <Port d'écoute caché>

peer: <Clé publique du peer>
preshared key: <Clé pré-partagée cachée>
endpoint: <Adresse IP et port du serveur cachés>
allowed ips: 0.0.0.0/0
latest handshake: 25 seconds ago
transfer: 46.51 MiB received, 102.91 MiB sent
persistent keepalive: every 30 seconds

Cela vous montrera l'état actuel de votre tunnel WireGuard, y compris l'adresse IP assignée et le trafic passant à travers le tunnel.

5. Rendre la connexion persistante

Pour rendre la connexion persistante et s'assurer que WireGuard se lance automatiquement après un redémarrage, vous devez activer le service WireGuard pour démarrer automatiquement au démarrage du système.

Activez et démarrez le service WireGuard avec les commandes suivantes :

sudo systemctl enable wg-quick@wg0
sudo systemctl start wg-quick@wg0

Cela garantit que votre tunnel WireGuard se reconnectera automatiquement après chaque redémarrage du serveur.

6. Dépannage

Si vous rencontrez des problèmes, voici quelques points à vérifier :

  • Assurez-vous que le fichier wg0.conf est correctement configuré et que vous avez ajouté les bonnes clés privées et publiques.
  • Vérifiez que la table wireguard est bien ajoutée dans le fichier /etc/iproute2/rt_tables.
  • Utilisez sudo wg show pour voir l’état de la connexion et si elle transmet des données correctement.
  • Si le tunnel ne se connecte pas, assurez-vous que les ports nécessaires sont ouverts (généralement le port 51820/UDP).

Conclusion

Vous avez maintenant configuré WireGuard sur votre serveur pour obtenir une IPv4 via un tunnel.

Explication détaillée :

  • [Interface] : Section où tu configures les détails du tunnel WireGuard côté client. Le champ PrivateKey et Address doivent être remplacés par les informations que tu fournis à l'utilisateur.

  • PostUp & PostDown : Ces commandes gèrent les règles de routage lorsque le tunnel est établi ou désactivé, en ajoutant et supprimant des règles de routage spécifiques au tunnel WireGuard.

  • [Peer] : Section pour définir les détails du serveur WireGuard auquel le client se connecte, y compris sa clé publique, endpoint et les adresses autorisées (AllowedIPs).