Il y a 389 articles et 19 utilisateurs inscrits (ce bandeau est défini dans MediaWiki:Sitenotice)

VPN AJLSM par WireGuard

De AJLSM
Aller à la navigation Aller à la recherche


Voir aussi : http://mw.ajlsm.com/wiki/Acc%C3%A8s_VPN_au_r%C3%A9seau_du_bureau

Objectif

Ce VPN permet de faire sortir la connexion Internet par le réseau AJLSM.

Une fois le VPN activé, l'adresse IP publique utilisée sur Internet doit être :

109.190.129.96

Il peut notamment être utilisé lorsqu'un accès distant n'est possible que depuis l'adresse IP d'AJLSM.

WireGuard peut rester utilisé en parallèle d'OpenVPN :

  • WireGuard sert à faire sortir le trafic Internet par AJLSM ;
  • OpenVPN continue à fournir l'accès aux réseaux privés et aux VM.

Le serveur WireGuard est :

local.ajlsm.com:51820

1. Principe des clés

Chaque machine doit posséder sa propre paire de clés WireGuard.

Il faut donc créer :

  • une paire de clés pour le Mac ;
  • une autre paire pour le poste Linux.

IMPORTANT : les clés privées ne doivent jamais être transmises.

Seules les clés publiques seront communiquées à l'administrateur.


2. Accès SSH

L'administration du serveur VPN se fait avec le compte :

ajlsm

L'authentification SSH par mot de passe est désactivée. Il faut donc disposer d'une clé SSH.


2.1. Vérifier si une clé SSH existe déjà

Sur le Mac ou Linux :

ls -la ~/.ssh/*.pub

Si une clé ED25519 existe déjà, par exemple :

~/.ssh/id_ed25519.pub

il n'est normalement pas nécessaire d'en créer une nouvelle.

Afficher la clé publique :

cat ~/.ssh/id_ed25519.pub

La ligne obtenue commence par :

ssh-ed25519 ...

C'est uniquement cette clé publique qui doit être transmise à l'administrateur.


2.2. En l'absence de clé SSH

Créer une clé ED25519 :

ssh-keygen -t ed25519

Puis afficher la clé publique :

cat ~/.ssh/id_ed25519.pub

Ne jamais transmettre ~/.ssh/id_ed25519.

Le fichier sans l'extension .pub est la clé privée.


3. Configuration WireGuard sur macOS

3.1. Application

L'application WireGuard pour macOS doit être installée.

Lancer WireGuard puis choisir :

Ajouter un tunnel
→ Ajouter un tunnel vide

WireGuard génère automatiquement une paire de clés.

La fenêtre contient une configuration de ce type :

[Interface]
PrivateKey = ...
Address =

La clé privée reste sur le Mac.


3.2. Récupérer la clé publique

Dans la fenêtre de configuration du tunnel, relever la clé publique affichée par WireGuard.

Transmettre cette clé publique à l'administrateur en précisant qu'il s'agit de :

WireGuard - Mac

Ne pas transmettre la clé privée.


4. Configuration WireGuard sous Linux

4.1. Installation

Sous Debian/Ubuntu :

sudo apt update
sudo apt install wireguard


4.2. Création des clés

Créer un répertoire réservé à WireGuard :

mkdir -p ~/.wireguard
chmod 700 ~/.wireguard

Créer une nouvelle paire de clés :

umask 077
wg genkey | tee ~/.wireguard/private.key | wg pubkey > ~/.wireguard/public.key

Afficher la clé publique :

cat ~/.wireguard/public.key

Transmettre cette clé à l'administrateur en précisant :

WireGuard - Linux

La clé privée reste dans :

~/.wireguard/private.key

Ne jamais transmettre ce fichier.


5. Informations à transmettre à l'administrateur

Transmettre :

  • la clé publique SSH ;
  • la clé publique WireGuard du Mac ;
  • la clé publique WireGuard du poste Linux.

Par exemple :

SSH :
ssh-ed25519 AAAA...
WireGuard Mac :
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
WireGuard Linux :
yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy=

Ne transmettre aucune clé privée.


6. Attendre la configuration du serveur

L'administrateur doit ensuite déclarer les deux machines sur le serveur VPN.

Les adresses prévues sont :

Mac   : 10.77.0.3
Linux : 10.77.0.4

Une fois les clés publiques enregistrées sur le serveur, terminer la configuration comme indiqué ci-dessous.


7. Finalisation du Mac

Dans l'application WireGuard, éditer le tunnel créé précédemment.

Conserver la ligne PrivateKey créée par WireGuard.

Configuration du tunnel WireGuard sur macOS

La configuration doit être :

[Interface]
PrivateKey = CLE_PRIVEE_WIREGUARD_MAC
Address = 10.77.0.3/32
DNS = 1.1.1.1
[Peer]
PublicKey = 9pRYa0t77+6PInXSc0fD6piEaNmOGL5LnhM2MpGFJRM=
Endpoint = local.ajlsm.com:51820
AllowedIPs = 0.0.0.0/0
PersistentKeepalive = 25

La ligne :

DNS = 1.1.1.1

est nécessaire sur macOS. Sans elle, lors de l'activation du tunnel complet (AllowedIPs = 0.0.0.0/0), macOS peut conserver uniquement le serveur DNS de sa connexion locale. Le tunnel fonctionne alors, mais la résolution des noms Internet ne fonctionne plus.

Après activation, vérifier :

curl -4 ifconfig.me

Le résultat attendu est :

109.190.129.96

Ne pas remplacer la clé privée par celle d'une autre machine.

Enregistrer le tunnel.

8. Activation / désactivation sur Mac

Dans l'application WireGuard, le tunnel peut être activé ou désactivé immédiatement avec :

Activer / Désactiver

Cela permet de revenir rapidement à la connexion Internet normale en cas de problème.


8.1. Vérification

Une fois WireGuard activé, ouvrir un Terminal :

curl -4 ifconfig.me

Le résultat attendu est :

109.190.129.96

Tester ensuite le serveur VPN :

ping 10.77.0.1

Puis l'accès SSH :

ssh ajlsm@10.77.0.1


9. Finalisation sous Linux

Configuration du tunnel WireGuard sous Linux

Créer :

~/.wireguard/bureau.conf

avec :

[Interface]
PrivateKey = CLE_PRIVEE_WIREGUARD_LINUX
Address = 10.77.0.4/32
DNS = 1.1.1.1
[Peer]
PublicKey = 9pRYa0t77+6PInXSc0fD6piEaNmOGL5LnhM2MpGFJRM=
Endpoint = local.ajlsm.com:51820
AllowedIPs = 0.0.0.0/0
PersistentKeepalive = 25

La directive DNS = 1.1.1.1 force l'utilisation d'un serveur DNS accessible à travers le tunnel lorsque WireGuard prend en charge l'ensemble du trafic Internet.

Protéger le fichier :

chmod 600 ~/.wireguard/bureau.conf

Activer WireGuard :

sudo wg-quick up ~/.wireguard/bureau.conf

Vérifier :

curl -4 ifconfig.me

Le résultat attendu est :

109.190.129.96

10. Vérifications sous Linux

État du tunnel :

sudo wg show

Un tunnel fonctionnel doit notamment afficher :

latest handshake: ...

ainsi que des données reçues et envoyées.


10.1. Vérifier l'adresse IP publique

curl -4 ifconfig.me

Résultat attendu :

109.190.129.96


10.2. Tester le serveur VPN

ping 10.77.0.1


10.3. Tester SSH

ssh ajlsm@10.77.0.1


11. Utilisation avec OpenVPN

OpenVPN peut rester connecté.

Le principe est :

  • WireGuard prend en charge la sortie Internet ;
  • OpenVPN conserve les routes spécifiques vers les réseaux privés.

Après avoir activé les deux VPN, vérifier d'abord :

curl -4 ifconfig.me

Le résultat doit être :

109.190.129.96

Puis tester l'accès à une VM habituellement accessible par OpenVPN.

Si un comportement anormal apparaît, désactiver immédiatement WireGuard.

Sur Mac :

Désactiver

dans l'application WireGuard.

Sous Linux :

sudo wg-quick down ~/.wireguard/bureau.conf


12. Diagnostic

En cas de problème, procéder dans cet ordre.

1. Vérifier Internet sans WireGuard

Désactiver WireGuard et vérifier que la connexion Internet fonctionne normalement.


2. Vérifier le nom du serveur

nslookup local.ajlsm.com

Il doit être possible de résoudre le nom du serveur.


3. Activer WireGuard

Puis vérifier :

ping 10.77.0.1


4. Vérifier le handshake

Sous Linux :

sudo wg show

Sur Mac, l'application WireGuard permet également de voir l'activité du tunnel.

Un handshake récent indique que la communication avec le serveur WireGuard fonctionne.


5. Vérifier l'IP publique

curl -4 ifconfig.me

Résultat attendu :

109.190.129.96


6. Vérifier OpenVPN

Si WireGuard fonctionne mais qu'une VM privée n'est plus accessible, vérifier séparément l'état d'OpenVPN.


13. Informations techniques

Serveur WireGuard : local.ajlsm.com
Port              : UDP 51820
IP WireGuard      : 10.77.0.1
Réseau VPN         : 10.77.0.0/24
IP publique AJLSM : 109.190.129.96
Clé publique du serveur WireGuard :
9pRYa0t77+6PInXSc0fD6piEaNmOGL5LnhM2MpGFJRM=
Compte SSH :
ajlsm
SSH :
authentification par clé uniquement

= 14. Résumé des opérations avec un exemple :

1 - AJLSM : autorisation de l'accès SSH de mdia

Ajouter la clé SSH publique de mdia dans :

   /home/ajlsm/.ssh/authorized_keys

sur vpn1.

La clé privée SSH de mdia reste sur son MacBook et ne doit jamais être transmise.


2 - MDIA : installation et configuration de WireGuard sur son MacBook


2-1 - Vérifier si les outils WireGuard sont installés

   wg --version

Si la commande fonctionne, passer au point 2-2.

Sinon, installer les outils WireGuard avec Homebrew :

   brew install wireguard-tools

Puis vérifier :

   wg --version


2-2 - Création des clés WireGuard

Créer un répertoire protégé :

   mkdir -p ~/.wireguard
   chmod 700 ~/.wireguard

Créer la paire de clés :

   umask 077
   wg genkey | tee ~/.wireguard/private.key | wg pubkey > ~/.wireguard/public.key

Deux fichiers sont alors créés :

   ~/.wireguard/private.key
   ~/.wireguard/public.key

La clé PRIVÉE reste exclusivement sur le MacBook de mdia.

Elle ne doit jamais être transmise.


2-3 - MDIA : transmission de la clé publique WireGuard à AJLSM

Afficher la clé publique :

   cat ~/.wireguard/public.key

Mdia transmet uniquement cette valeur à AJLSM.


2-4 - AJLSM : ajout du MacBook de mdia sur vpn1

Après réception de la clé publique WireGuard de mdia, éditer sur vpn1 :

   sudo nano /etc/wireguard/wg0.conf

Ajouter :

   # mdia - MacBook
   [Peer]
   PublicKey = CLE_PUBLIQUE_WIREGUARD_DE_MDIA
   AllowedIPs = 10.77.0.3/32

Recharger ensuite la configuration WireGuard du serveur sans interrompre les connexions existantes.

[Cette opération sera faite ensemble lors de la réception de la clé.]


2-5 - MDIA : création de la configuration WireGuard sur son MacBook

Créer le fichier :

   ~/.wireguard/bureau.conf

avec :

   [Interface]
   PrivateKey = CLE_PRIVEE_WIREGUARD_MAC
   Address = 10.77.0.3/32
   DNS = 1.1.1.1
   [Peer]
   PublicKey = 9pRYa0t77+6PInXSc0fD6piEaNmOGL5LnhM2MpGFJRM=
   Endpoint = local.ajlsm.com:51820
   AllowedIPs = 0.0.0.0/0
   PersistentKeepalive = 25

IMPORTANT :

La valeur de PrivateKey est la clé PRIVÉE du MacBook de mdia.

Pour l'afficher :

   cat ~/.wireguard/private.key

Cette valeur doit être copiée dans :

   PrivateKey = ...

Elle ne doit pas être envoyée à AJLSM.

Protéger ensuite le fichier bureau.conf :

   chmod 600 ~/.wireguard/bureau.conf

Vérifier :

   ls -l ~/.wireguard/bureau.conf

On doit obtenir des droits équivalents à :

   -rw-------


2-6 - Test de WireGuard en ligne de commande

Démarrer le tunnel :

   sudo wg-quick up ~/.wireguard/bureau.conf

Le tunnel WireGuard doit maintenant être actif.


2-7 - Tests

2-7-1 - Test du serveur VPN :

   ping 10.77.0.1

Le Raspberry doit répondre.


2-7-2 - Vérification de l'adresse IP publique :

   curl -4 ifconfig.me

La valeur renvoyée doit être :

   109.190.129.96

Cela confirme que le trafic Internet du MacBook passe bien par :

   MacBook mdia
       → WireGuard
       → vpn1
       → OverTheBox AJLSM
       → Internet


2-7-3 - Test de l'accès SSH :

   ssh ajlsm@10.77.0.1

Si tout va bien, la connexion doit être directe sans demander le mot de passe du compte ajlsm.

L'authentification est réalisée avec la clé SSH de mdia.


2-7-4 - Test réel

Ouvrir normalement le navigateur du MacBook et accéder à l'URL du serveur Proxmox posant problème.

Aucune configuration particulière du navigateur n'est nécessaire.

Le serveur distant doit voir la connexion comme provenant de :

   109.190.129.96


2-8 - Arrêt et redémarrage de WireGuard en ligne de commande

Démarrage :

   sudo wg-quick up ~/.wireguard/bureau.conf

Arrêt :

   sudo wg-quick down ~/.wireguard/bureau.conf

IMPORTANT :

Avec :

   AllowedIPs = 0.0.0.0/0

WireGuard transporte l'ensemble du trafic Internet IPv4.

Si vpn1 ou le tunnel devient indisponible, la connexion Internet du MacBook peut donc sembler coupée.

Dans ce cas, arrêter WireGuard :

   sudo wg-quick down ~/.wireguard/bureau.conf

La connexion Internet normale est alors immédiatement rétablie.


2-9 - Intégration dans l'application WireGuard Mac

Une fois le fonctionnement validé en ligne de commande :

1. Arrêter d'abord le tunnel lancé en ligne de commande :

   sudo wg-quick down ~/.wireguard/bureau.conf

2. Lancer l'application WireGuard.

3. Cliquer sur + pour ajouter/importer un tunnel.

4. Importer :

   ~/.wireguard/bureau.conf

Si le fichier n'est pas accessible dans le sélecteur de fichiers parce que le répertoire .wireguard est caché, faire temporairement une copie sur le Bureau :

   cp ~/.wireguard/bureau.conf ~/Desktop/bureau.conf

Importer cette copie dans WireGuard.

Une fois l'import effectué, supprimer la copie :

   rm ~/Desktop/bureau.conf

Cette suppression est importante car bureau.conf contient la clé privée WireGuard.

5. Activer ou désactiver ensuite WireGuard depuis l'application ou depuis l'icône WireGuard de la barre des menus.


IMPORTANT :

Ne pas lancer simultanément le même tunnel avec l'application WireGuard et avec wg-quick.

Utiliser soit l'application, soit :

   sudo wg-quick up ~/.wireguard/bureau.conf