Wireguard VPN sur Ubuntu 20.04

Wireguard est un VPN open-source, gratuit qui s’installe en quelques instants.

Prenez notes que l’installation est divisé en 2 procédures, une pour le serveur (192.168.6.1) et l’autre pour le client (192.168.6.2). Nous débuterons avec le serveur.

1. Mettre à jour le système

sudo apt update
sudo apt upgrade

2. Installer Wireguard

sudo apt install wireguard

3. Générer les clefs

Premièrement vous devez crée un répertoire (si il n’existe pas déjà) pour contenir les fichiers de configuration. Notez les permissions strictes et l’utilisation de sudo -i afin d’exécuter les commandes en tant que root (et pas avecsudo)

sudo -i
mkdir -m 0700 /etc/wireguard/
cd /etc/wireguard/

Ensuite crée vos clefs privé et publique et appliquant encore des permissions strictes en tant que root

umask 077; wg genkey | tee privatekey | wg pubkey > publickey

Utiliser la commande catpour afficher les clefs et notez la clef privé que vous aurez besoin pour la prochaine étape. Vous aurez aussi besoin de la clef publique pour configurer le client.

cat privatekey   ## Notez la clef privé pour la prochaine étape
cat publickey    ## Notez la clef publique pour configurer le client

4. Configuration du Serveur

Crée un fichier de configuration wg0.conf dans le même répertoire (/etc/wireguard)

nano /etc/wireguard/wg0.conf 

.. et insérez les paramètres de configuration

[Interface]
Address = 192.168.6.1/24   ## L'adresse IP VPN du serveur
ListenPort = 41194         ## Le port VPN du serveur
PrivateKey = la_clef_PRIVÉ_DU_SERVEUR_que_vous_avez_notez_à_l'étape_3

Après avoir sauvegardé le fichier (CTRL-S) et quitter nano (CTRL-X) vous pouvez revenir à votre utilisateur sudo pour les prochaines étapes du serveur.

5. Configuration du pare-feu

Selon votre configuration et le pare-feu que vous utilisez ces commandes vont variées. Pour la distribution Ubuntu vous pouvez simplement ajouter la directive à ufw pour permettre les connexions UDP entrantes sur le port du VPN.

sudo ufw allow 41194/udp

6. Démarrage et activation du service coté serveur

Une fois la configuration terminé vous pouvez démarrer le service wireguard appelé `wg-quick`en spécifiant la configuration à l’aide d’un arobas, dans ce cas ci @wg0

sudo systemctl start wg-quick@wg0

Si vous n’avez aucune erreur vous pouvez vérifier que le service est bien fonctionnel avec cet commande

sudo systemctl status wg-quick@wg0

Si tous sembles fonctionnel et que vous voulez que le VPN soit disponible au démarrage du serveur vous devez activer le service

sudo systemctl enable wg-quick@wg0

7. Vérification des fonctionalités coté serveur

Vous pouvez avoir le status de wireguard en utilisantwgainsi que voir l’interface VPN avec la commande suivantes

ip a show wg0
sudo wg
interface: wg0
  public key: Notez_cette_clef_publique_pour_la_configuration_client
  private key: (hidden)
  listening port: 41194

sudo ip a show wg0
5: wg0: <POINTOPOINT,NOARP,UP,LOWER_UP> mtu 1420 qdisc noqueue state UNKNOWN group default qlen 1000
    link/none 
    inet 192.168.6.1/24 scope global wg0
       valid_lft forever preferred_lft forever

8. Installation sur le client

Pour l’installation sur le client répétez les étapes 1, 2 et 3 de l’installation du serveur mais sur la machine qui se connectera au serveur

## 1. Mettre à jour le système
sudo apt update
sudo apt upgrade

## 2. Installer wireguard
sudo apt install wireguard

## 3. Générer les clefs
sudo -i
mkdir -m 0700 /etc/wireguard/
cd /etc/wireguard/
umask 077; wg genkey | tee privatekey | wg pubkey > publickey

## Notez les clefs du clients
cat privatekey   ## Notez la clef privé pour la prochaine étape
cat publickey    ## Notez la clef publique pour ajouter à la configuration du serveur

9. Configuration du client

Crée un fichier de configuration wg0.conf pour le client dans le répertoire /etc/wireguard

nano /etc/wireguard/wg0.conf 

Et ajouter la configuration pour le client.

[Interface]
PrivateKey = la_clef_PRIVÉ_DU_CLIENT_que_vous_avez_notez_à_l'étape_8
Address = 192.168.6.2/24  ## L'addresse IP VPN du client
 
[Peer]
PublicKey = la_clef_PUBLIQUE_DU_SERVEUR_que_vous_avez_notez_à_l'étape_3
AllowedIPs = 192.168.6.0/24     ## IP ou subnet qui peux accedez à la machine via le VPN
Endpoint = 172.283.94.105:41194 ## L'addresse IP publique du serveur et le port du VPN
PersistentKeepalive = 15        ## Intervale pour garder la connection ouverte.

10. Démarrage et activation du service coté client

Pour démarrer et activer le service wireguard sur le client vous pouvez utiliser les mêmes commandes que sur le serveur.

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

Et de la même façon vous pouvez également vérifier l’état du VPN avec les mêmes commandes que sur le serveur

sudo wg
interface: wg0
  public key: Notez_cette_clef_publique_pour_ajouter_à_la_configuration_serveur
  private key: (hidden)
  listening port: ...

sudo ip a show wg0
5: wg0: <POINTOPOINT,NOARP,UP,LOWER_UP> mtu 1420 qdisc noqueue state UNKNOWN group default qlen 1000
    link/none 
    inet 192.168.6.2/24 scope global wg0
       valid_lft forever preferred_lft forever

11. Ajouter le client à la configuration serveur

Chaque nouveaux client doit être ajouter à la configuration du serveur. Vous devez donc retourner sur le serveur et configurer le client dans le fichier etc/wireguard/wg0.confdu serveur après avoir arrêté le service.

sudo systemctl stop wg-quick@wg0
sudo nano /etc/wireguard/wg0.conf

… ensuite ajoutez la configuration pour le client à la fin du fichier

[Peer]
PublicKey = la_clef_PUBLIQUE_DU_CLIENT_que_vous_avez_notez_à_l'étape_8
AllowedIPs = 192.168.6.2/32  ## l'Addresse IP VPN du client de l'étape 9. 
                             ## NOTEZ le subnet /32 à la fin du IP.

finalement redémarrer le service et vérifier que la connexion est bien établie.

sudo systemctl start wg-quick@wg0
sudo wg

12. Vérification de la connectivité du coté client

Une dernière vérification pour vous assurez que tout fonctionne bien est de faire un ping sur l’adresse VPN du serveur et un traceroute vers l’extérieur. Vous pouvez également voir l’état de la connexion avec wg

sudo wg
ping 192.168.6.1
traceroute 8.8.8.8
wireguard

Références

  • https://www.wireguard.com
  • https://www.wireguard.com/install/
  • https://www.wireguard.com/quickstart/
  • https://www.wireguard.com/papers/wireguard.pdf
  • https://www.cyberciti.biz/faq/ubuntu-20-04-set-up-wireguard-vpn-server/
  • https://dev.to/tangramvision/what-they-don-t-tell-you-about-setting-up-a-wireguard-vpn-1h2g

S’abonner
Notifier de
guest
0 Commentaires
Inline Feedbacks
View all comments