Différences entre versions de « Wireguard »
Ligne 142 : | Ligne 142 : | ||
PublicKey = iWskvxyj+QK4185xO6Z2Fb0XYo1jGyiyI3iKbyGTkT8= | PublicKey = iWskvxyj+QK4185xO6Z2Fb0XYo1jGyiyI3iKbyGTkT8= | ||
# L'IP du client | # L'IP du client | ||
− | AllowedIPs = 10.8.0.8/ | + | AllowedIPs = 10.8.0.8/32 |
</pre> | </pre> | ||
Il ne faut pas oublier de redémarrer le serveur : | Il ne faut pas oublier de redémarrer le serveur : |
Version du 11 novembre 2023 à 11:06
Protocole | udp |
Port | 51820 |
Configuration Iptables | iptables -I INPUT 2 -p udp --dport 51820 -j ACCEPT |
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 # sysctl -p
- 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
- ouvrir le port utilisé par Wireguard (ici 51820) :
# iptables -I INPUT 2 -p udp --dport 51820 -j ACCEPT
- 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
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
On peut également voir le service en écoute sur le port UDP 51820 :
# ss -aunp State Recv-Q Send-Q Local Address:Port Peer Address:Port Process UNCONN 0 0 0.0.0.0:51820 0.0.0.0:* UNCONN 0 0 [::]:51820 [::]:*
Gardez en tête qu'à ce stade nous n'avons pas encore créé de client ce qui rend notre serveur inutile... pour le moment :)
Création d'un client sur le serveur
A chaque fois que vous voudrez ajouter un client à votre serveur Wireguard vous devrez :
- générer la clé privé
# wg genkey > /etc/wireguard/clients/client1.key
- modifier ces droits :
# chmod 0400 /etc/wireguard/clients/client1.key
- générer la clé publique
# cat /etc/wireguard/clients/client1.key | wg pubkey > /etc/wireguard/clients/client1.pub
- ajouter la ligne suivante dans le fichier /etc/wireguard/wg0.conf (à la fin) :
[Peer] # La clé de client1 - client1.pub PublicKey = iWskvxyj+QK4185xO6Z2Fb0XYo1jGyiyI3iKbyGTkT8= # L'IP du client AllowedIPs = 10.8.0.8/32
Il ne faut pas oublier de redémarrer le serveur :
# systemctl restart wg-quick@wg0
Fichier de configuration du client
Pour que le client puisse se connecter, il faut qu'il importe dans son client Wireguard le fichier suivant :
[Interface] # L'adresse IP du client Address = 10.8.0.8/24 # La clé privée du clients - client1.key PrivateKey = 4FsCdtKr9GrLiX7zpNEYeqodMa5oSeHwH/m9hsNNfEs= [Peer] # La clé publique du serveur Wireguard - server.pub PublicKey = aK+MQ48PVopb8j1Vjs8Fvgz5ZIG2k6pmVZs8iVsgr1E= # On route tout le trafique dans l'interface VPN (modifiez en fonction de votre besoin) AllowedIPs = 0.0.0.0/0 # L'adresse IP publique du serveur Wireguard (habituellement celle de votre box) Endpoint = 1.2.3.4:51820 # La durée des message keepalive en seconde PersistentKeepalive = 25
Ce fichier doit se terminer par .conf, par exemple client1.conf.
Installation du client
Vos pouvez télécharger le client Wireguard et pour ajouter le tunnel il suffit d'importer le fichier précédent ! Sur MacOS vous pouvez envoyer votre fichier via airdrop :
Sur l'iPhone ou l'iPad vous aurez le prompt suivant, il faudra sélectionner Wireguard :
Une fois Wireguard autorisé à modifier sa configuration :
Le tunnel apparait :
Vérification
Une fois le client connecté, vous devriez être en mesure de le joindre depuis le serveur Wireguard :
# ping 10.8.0.8 PING 10.8.0.8 (10.8.0.8) 56(84) bytes of data. 64 bytes from 10.8.0.8: icmp_seq=1 ttl=64 time=47.0 ms 64 bytes from 10.8.0.8: icmp_seq=2 ttl=64 time=42.1 ms 64 bytes from 10.8.0.8: icmp_seq=3 ttl=64 time=156 ms
Si ce n'est pas le cas :
- vérifiez les clés dans le fichier de configuration du client (mauvais copié / collé)
- vérifier le AllowedIPS dans le fichier wg0.conf
Si c'est le cas et que vous n'arrivez pas à joindre les machines sur le réseau, vérifiez votre pare-feux !