Wireguard

De The Linux Craftsman
Aller à la navigation Aller à la recherche

Préparation

Les basiques

Dans un premier temps, il faudra avoir une connexion à Internet, utiliser un serveur DNS et désactiver SELinux.

Pour ceux qui auraient manqué des étapes, les voici:

Assurez-vous d'avoir installé le dépôt EPEL car Wireguard vient de cette source.

Paramétrage du pare-feu

Le serveur Wireguard utilise une interface interne pour connecter les clients distants et router le trafique. Pour que le trafique des clients puissent sortir du serveur, il faut plusieurs ingrédients :

  • activer le routage :
# sysctl -w net.ipv4.ip_forward=1
  • installer iptables et le démarrer :
# dnf -y install iptables-services
# systemctl enable iptables --now

N'oubliez pas de retirer firewalld le cas échéant

  • Supprimer la règle qui interdit le routage des paquets :
# iptables -F FORWARD
  • activer le NAT sur votre interface de sortie (ici eth0) :
# iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
  • sauvegarder la configuration du pare-feu :
# service iptables save

Une fois ces étapes effectuées, entrons dans le vif du sujet !

Installation

Le noyau Linux intègre le module Wireguard et il nous faut installer les outils Wireguard pour pouvoir configurer ce module :

# dnf -y install wireguard-tools

Ce paquetage installe deux commandes :

  • wg : cette commande permet de gérer les tunnels, générer les paires de clés, etc...
  • wg-quick : cette commande permet la gestion de l'interface tun utilisé pour la connexion interne des clients VPN

Configuration serveur

Les clés

Dans le répertoire /etc/wireguard il n'y a pour l'instant rien et la première étape consiste à créer le fichier contenant la clé privée du serveur :

# wg genkey > /etc/wireguard/server.key

Cette commande génère le message suivant :

Warning: writing to world accessible file.
Consider setting the umask to 077 and trying again.

Wireguard recommande de modifier les permissions du fichier pour que tout le monde n'y ai pas accès... ce que nous allons faire :

# chmod 0400 /etc/wireguard/server.key

Maintenant que la clé privée est généré et stocké dans son fichier, nous allons générer la clé publique associée :

# cat /etc/wireguard/server.key | wg pubkey > /etc/wireguard/server.pub

Stockage des clés des clients

Pour stocker les clés des clients nous allons créer un répertoire clients :

# mkdir /etc/wireguard/clients

Le fichier wg0.conf

Il ne reste plus qu'a définir la configuration de notre serveur Wireguard à proprement parlé. Cela ce fait dans le fichier /etc/wireguard/wg0.conf:

[Interface]
# La clé privée contenue dans le fichier server.key
PrivateKey = iHaI5bkEbW8wqTQDbU/KITGhxtKoiezWVohVZsKwj3w=

# L'adresse privée du serveur Wireguard, les clients auront dans adresses dans cette plage
Address = 10.8.0.1/24

# Le port d'écoute UDP, remplacé par ce que vous voulez
ListenPort = 51820

# Sauvegarde la configuration dans ce fichier après l'arrêt de l'interface de Wireguard
SaveConfig = true

Démarrage du serveur

Pour démarrer notre serveur Wireguard nous allons utiliser la commande systemctl :

# systemctl enable wg-quick@wg0 --now

Vous devriez être en mesure de voir l'interface wg0 avec l'adresse IP spécifiée précédement :

# ip a sh dev wg0
3: wg0: <POINTOPOINT,NOARP,UP,LOWER_UP> mtu 1420 qdisc noqueue state UNKNOWN group default qlen 1000
    link/none 
    inet 10.8.0.1/24 scope global wg0
       valid_lft forever preferred_lft forever

A ce stade nous n'avons pas encore créé de client ce qui rend notre serveur inutile... pour le moment :)

Création d'un client

Il nous reste plus