Connecter votre propre réseau (passerelle VPN)
Atteignez les services d’un réseau privé depuis votre portable, votre bureau ou un autre cloud, par alias, via une passerelle WireGuard ouverte depuis la page Réseaux.
Ce que ça fait
Chaque application, base de données et service que vous déployez tourne sur un
réseau privé : un overlay VXLAN que rien à l’extérieur du cluster ne voit. À
l’intérieur, les services s’atteignent par alias - api, db, redis - sans
qu’aucun port soit publié.
Une passerelle étend ce réseau jusqu’à vous. Ouvrez-en une sur un réseau et n’importe quel appareil ou site dans le monde peut le rejoindre comme pair : un portable, un téléphone, le routeur de votre bureau, un VPC chez un autre cloud. Le pair atteint alors directement les services du réseau, sans aucune exposition publique, et les résout par leur nom exactement comme vos conteneurs :
curl http://api:8000/health # alias nu, via le résolveur de la passerelle
curl http://api.app-tier.isogrid.internal:8000/health # ou sous la zone du réseau
psql -h db -U app # une base qui n'est publiée nulle part
Le tunnel est WireGuard - le VPN intégré au noyau Linux, avec des clients officiels pour Windows, macOS, iOS et Android et pris en charge par la plupart des routeurs (MikroTik, OPNsense, pfSense, OpenWrt, Ubiquiti) et des passerelles VPN cloud. Aucun agent à installer sur vos serveurs, aucun compte chez un tiers : une connexion, c’est deux paires de clés et un port UDP.
Ouvrir une passerelle
Sur la page Réseaux, le bouton Connexions VPN d’un de vos réseaux ouvre le panneau. Cliquez Créer une passerelle VPN. En quelques secondes il affiche :
- le point d’entrée auquel les pairs se connectent (une adresse et un port UDP) ;
- le résolveur, l’adresse de la passerelle dans le tunnel ;
- le suffixe des noms,
<réseau>.isogrid.internal, sous lequel chaque alias du réseau répond aussi ; - le sous-réseau du réseau privé, que les pairs routent dans le tunnel.
Seul le propriétaire du réseau peut ouvrir une passerelle, et la région doit les vendre : une passerelle qui ne peut pas encore être créée le dit, et l’opérateur la tarife par région.
Les adresses du tunnel sont choisies pour vous dans l’espace d’adressage
partagé (100.64.0.0/10), qu’aucun réseau de bureau ou de cloud n’utilise :
elles n’entrent jamais en collision avec le LAN d’un pair. Ne les fixez
vous-même que si le vôtre l’utilise.
Ajouter un pair
Un pair est un appareil ou un site. Donnez-lui un nom et, pour un site, les sous-réseaux derrière lui ; laissez vide pour un portable ou un téléphone. Chaque pair reçoit sa paire de clés et sa clé prépartagée, et une configuration à importer :
- Un portable ou un téléphone. Installez WireGuard, importez la configuration (les applications mobiles scannent le code QR), activez-la. Les services se résolvent alors par alias, nu ou sous la zone, via le résolveur de la passerelle.
- Un site entier ou un VPC. Chargez la configuration sur le routeur ou la
passerelle VPN cloud, avec les sous-réseaux derrière lui déclarés sur le
pair. Puis faites suivre la zone
<réseau>.isogrid.internalvers l’adresse du résolveur dans votre DNS, pour que chaque machine du site résolve les services sans changer son propre résolveur.
La configuration contient la clé privée du pair. Traitez-la comme un mot de passe : importez-la, puis revenez la chercher ici au besoin plutôt que d’en garder des copies dans un chat ou sur un partage.
Renouveler les clés
Aucune clé ne reste dans une configuration que vous ne pourriez pas remplacer. Deux renouvellements existent, effectifs le temps que la passerelle redémarre - quelques secondes :
- Renouveler les clés d’un pair remplace la paire de clés et la clé prépartagée de ce seul pair. Sa configuration actuelle cesse de fonctionner ; importez la nouvelle sur l’appareil. Personne d’autre ne s’en aperçoit. C’est le geste quand un appareil a été perdu ou une configuration a fuité.
- Renouveler les clés de la passerelle remplace la paire de clés de la passerelle elle-même. Chaque configuration de pair la contient : tous les pairs doivent importer une nouvelle configuration. C’est le renouvellement pour « on ne sait pas ce qui a fuité ».
Un pair peut aussi être désactivé, ce qui le tient à l’écart sans le supprimer, et retiré. Chacune de ces opérations interrompt tous les pairs quelques secondes, pendant lesquelles les clients WireGuard réessaient d’eux-mêmes et se reconnectent.
Ce qu’un pair peut faire et ne peut pas faire
La passerelle est une porte d’entrée, pas de sortie :
- Un pair atteint le sous-réseau du réseau privé et le résolveur de la passerelle, rien d’autre : ni les nœuds du cluster, ni internet à travers la passerelle, ni les autres pairs.
- Le trafic va de votre réseau vers le réseau privé. Les services du réseau n’atteignent pas votre LAN en retour.
- Les adresses depuis lesquelles un pair peut émettre sont imposées par WireGuard lui-même à partir des sous-réseaux déclarés du pair, avant toute règle de pare-feu.
- Chaque tunnel utilise une clé prépartagée en plus des paires de clés : une session reste privée même face à quelqu’un qui casserait un jour l’échange à clé publique.
La dernière poignée de main et les compteurs de trafic de chaque pair sont affichés sur le panneau (Actualiser l’état interroge le cluster) : c’est ainsi qu’on distingue un site connecté d’un site qui ne l’est pas.
Depuis la ligne de commande
isogrid networks gateway open --network app-tier
isogrid networks peers add laptop --network app-tier --out .
isogrid networks peers add office --network app-tier --subnet 192.168.1.0/24 --out office.conf
isogrid networks gateway show --network app-tier --live
isogrid networks peers rotate laptop --network app-tier --out .
isogrid networks gateway rotate --network app-tier
Voir la référence du CLI pour chaque option.
Dépannage
Le pair fait sa poignée de main mais rien ne se résout. Le client n’utilise
pas le résolveur de la passerelle. Sur un appareil, gardez la ligne DNS de la
configuration ; sur un site, faites suivre la zone vers l’adresse du résolveur,
ou utilisez directement les adresses du réseau privé.
La poignée de main n’aboutit jamais. L’UDP vers le point d’entrée est bloqué quelque part de votre côté (pare-feu d’entreprise, opérateur mobile). WireGuard n’a besoin que d’un port UDP sortant ; celui du point d’entrée est affiché sur le panneau.
Les services se résolvent mais les connexions restent bloquées. Le sous-réseau du réseau privé entre en collision avec un sous-réseau de votre côté, et la route part du mauvais côté. Créez le réseau avec un sous-réseau de votre choix, ou ré-adressez le côté en collision.
La passerelle affiche une erreur. Le nœud de la région n’a peut-être pas le module noyau WireGuard ou tourne sur un Docker ancien ; l’opérateur voit le message exact dans la console d’administration et l’état de la tâche est affiché sur le panneau.