02/04/2025

Cybersécurité

Découvrez Tailscale : votre futur réseau VPN Mesh basé sur WireGuard

I. Présentation

Besoin d’un accès sécurisé à vos machines sans vous compliquer la vie avec un VPN traditionnel ? Découvrez Tailscale, une solution simple et efficace pour créer un réseau privé en quelques minutes !

Dans cet article, la solution Tailscale sera mise à l'honneur ! Nous commencerons par voir quel type de solution se cache derrière ce nom, avant de faire un comparatif avec une autre solution déjà présentée sur IT-Connect : Twingate. Dans un second temps, la prise en main de Tailscale sera évoquée !

II. Qu'est-ce que Tailscale ?

Tailscale est une solution de VPN moderne que l'on pourrait qualifier de VPN Mesh, qui s'appuie sur le protocole WireGuard. Pour ceux qui ne connaissent pas WireGuard, il s'agit d'une alternative à d'autres protocoles VPN comme OpenVPN. Il présente la particularité d'être open source, performant et de fonctionner selon un modèle Peer-to-Peer (Pair à Pair).

Cette dernière précision est importante et explique notamment le fonctionnement de Tailscale : créer un réseau mailléchaque appareil peut communiquer directement avec les autres appareils (peu importe où il se trouve), sans avoir à exposer de ports ou configurer un serveur VPN. Contrairement aux VPN traditionnels, Tailscale s'appuie sur un système d'authentification basé sur des identités Cloud externes, comme Google, Microsoft, Apple ou GitHub.

Tous les nœuds connectés à un réseau Tailscale, que l'on appelle Tailnet, peuvent communiquer entre eux, mais ce n'est pas obligatoire : des règles de contrôle d'accès permettront de garder le contrôle sur les flux. Le schéma ci-dessous, issu de la documentation officielle, montre bien les interactions entre les différents nœuds. Avec un VPN classique, tous les appareils seraient centralisés sur le même serveur VPN, ce qui peut avoir un impact sur les performances en fonction de la localisation (latence).

Source : Tailscale

Tailscale est une solution flexible et capable de s'adapter à divers environnements, du HomeLab au réseau d'entreprise. Il y a d'ailleurs une offre gratuite, limitée à 3 utilisateurs et compatible jusqu'à 100 appareils, ce qui est très confortable. Un appareil représente un ordinateur, un smartphone, une tablette, un NAS, un serveur, un Docker, etc... Selon vos besoins. Vous pouvez comparer les offres en consultant cette page.

Au niveau de la compatibilité avec les appareils et les ressources, c'est très vaste puisque Tailscale fonctionne avec :

  • Systèmes d'exploitation
    • Windows
    • Linux
    • MacOS
    • iOS (iPhone)
    • iPadOS (iPad)
    • tvOS (Apple TV)
  • NAS
    • Synology (paquet prêt à l'emploi)
    • QNAP
    • TrueNAS SCALE
    • Unraid
    • FreeNAS (paquet communautaire)
  • Conteneurs
    • Docker
    • Kubernetes
  • Firewalls
    • OPNsense
    • pfSense
    • Palo Alto Networks

Cette liste n'est pas exhaustive. D'ailleurs, il est également possible de l'utiliser avec des ressources Cloud, comme des machines virtuelles Azure ou AWS. Il y a également des connecteurs applicatifs et la possibilité de rendre accessible un sous-réseau, en passant par un nœud, ce qui peut être utile pour une imprimante, par exemple. De plus, il est envisageable d'utiliser Tailscale pour interconnecter deux sites ou interconnecter un réseau local et une infrastructure Cloud.

Source : Tailscale

III. Tailscale VS Twingate

Quand on recherche une solution de VPN moderne, on peut tomber rapidement sur Tailscale, mais aussi sur Twingate. Cette solution déjà évoquée dans un précédent article présente aussi l'avantage d'offrir un accès distant à des ressources sans nécessiter d'ouvrir des ports sur un routeur. Néanmoins, ces solutions ont des différences notables.

CritèreTailscaleTwingate
ProtocoleWireGuardPropriétaire
Facilité d'installationUltra simpleRelativement simple
AuthentificationGoogle, Microsoft, GitHub, Apple, etc.Google, Okta, Microsoft, LinkedIn, etc.
Gestion des accèsRègles d'accès à rédiger dans un fichier de configuration centralisé (au format JSON)Gestion simple via une console web
Modèle de tarificationUne offre gratuite et des offres payantesUne offre gratuite et des offres payantes
Authentification MFAMFA par l'intermédiaire du fournisseur d'identité tiersMFA pris en charge pour l'accès aux ressources, de façon indépendante du fournisseur d'identité.
Résolution DNSFonction MagicDNS pour résoudre facilement les noms de tous les appareils du réseau Tailnet.Résolution DNS possible
ArchitectureVPN Mesh en Peer-to-PeerRelais via un réseau Zero Trust en Peer-to-Peer

Twingate et Tailscale sont des solutions qui adoptent le principe du Zero Trust Network Access (ZTNA), même si le premier le met plus en avant que le second, où on parle plus de VPN Mesh. Néanmoins, les fonctionnalités de Tailscale, notamment le contrôle d'accès, la fonction de "routeur" que l'on peut associer à un noeud et la vérification de la conformité avec une solution tierce, vont dans la direction d'une solution ZTNA.

J'aurais tendance à affirmer que Twingate est une solution ZTNA by design, qui est un peu plus "lourde" à déployer (il y a un connecteur que l'on peut déployer avec Docker), mais plus facile à appréhender pour l'approche ZTNA, y compris dans la version gratuite.

Sachez que Tailscale a publié un comparatif entre sa solution et celle de Twingate, et l'inverse est vrai aussi. Voici les deux articles :

IV. Mise en place de Tailscale en 5 minutes chrono

Pour tester Tailscale, vous n'avez besoin que de 2 appareils et de quelques minutes devant vous. Connectez-vous sur cette page pour créer un compte. Vous ne pouvez pas utiliser une adresse e-mail personnalisée, il est obligatoire de s'authentifier via un service tiers : Google, Microsoft, GitHub, etc.

Pour cette mise en route, mon déploiement contiendra plusieurs nœuds : une machine Windows, un NAS Synology et un smartphone Android.

Un assistant est là pour vous guider. Vous devez choisir l'usage que vous ferez de ce Tailnet. Ici, nous partons sur un usage personnel.

Vous devez ensuite ajouter votre premier appareil à ce réseau. À vous de faire le bon choix, selon votre type d'appareil. Par exemple, vous pouvez prendre "Windows" et ensuite effectuer l'installation sur votre PC.

A. Installation de Tailscale sur Windows

L'installation s'effectue en quelques clics, il n'y a rien de spécial à faire. L'essentiel étant de se connecter sur le client Tailscale avec le même compte que celui associé au réseau.

Le client va s'exécuter et il sera visible dans la barre des tâches de Windows. Il y a quelques options disponibles au niveau du client local, mais la gestion du réseau en elle-même s'effectue via la console d'administration web.

Tailscale étant déployé sur une machine Windows nommée "PC-FLO", celle-ci remonte sur l'interface.

Désormais, il est demandé d'ajouter un second appareil... L'idée derrière tout ça étant de vous montrer à quel point il est simple de connecter 2 appareils, même s'ils sont sur 2 sites différents. Pour faire votre test, vous pouvez prendre 2 appareils sur le même site, ce n'est pas gênant.

Note : Sous Windows, le mode "Run Unattended" configure Tailscale pour qu'il s'exécute en tant que système et non en tant qu'utilisateur connecté. Par exemple, une machine fonctionnant sous Windows Server pourrait nécessiter ce mode pour permettre à plusieurs utilisateurs de se connecter via RDP en même temps. Par défaut, ce mode est désactivé, et ce comportement est différent sur Linux.

B. Installation de Tailscale sur Synology

Pour ce second appareil, un NAS Synology sera utilisé : la bonne nouvelle, c'est que le "Centre de paquets" contient un paquet Tailscale prêt à l'emploi ! Il suffit de l'installer. Il a été développé par Tailscale directement et se trouve dans le dépôt officiel de Synology.

Si vous avez configuré le pare-feu de DSM, veillez à autoriser le port 41641/UDP tel que présenté par la notification déclenchée suite à l'installation du paquet Tailscale. Sinon, créez la règle manuellement.

Lancez l'application Tailscale sur votre NAS. Cela va ouvrir un nouvel onglet dans votre navigateur.

Vous devez alors vous connecter avec votre compte (Google, Microsoft, etc...) pour rattacher l'équipement à votre réseau Tailscale. D'ailleurs, l'appareil est dès à présent visible sur l'interface : il y a donc 2 appareils dans le réseau Tailnet. Comme le suggère l'assistant de mise en route, il est possible de tester un ping entre les deux appareils : nous pouvons voir que cela fonctionne !

C. La console d'administration

La phase de création de l'environnement Tailscale est terminée ! Vous voilà désormais lâché sur l'interface d'administration. Que faire ? Par où commencer ? C'est ce que nous allons voir en évoquant certaines fonctionnalités et options clés. Sachez qu'en l'état, vous pouvez aussi décider de ne rien faire de plus : vous pourriez alors vous connecter à votre NAS Synology à distance via le service de Tailscale.

L'interface est organisée en plusieurs sections :

  • Machines : vous pouvez visualiser toutes les machines avec un client Tailscale, ainsi que leur état
  • Apps : connecter des services externes pour les rendre accessibles via Tailscale (SSO)
  • Services : activer la découverte des services sur les nœuds où Tailscale est installé
  • Users : la gestion des utilisateurs, avec la liste des utilisateurs actuels (ou pour lancer des invitations)
  • Access Controls : déclarer le fichier de configuration, avec les règles d'accès (ACL)
  • Logs : les logs liés aux actions effectuées dans la configuration de Tailscale, sur les 90 derniers jours
  • DNS : les paramètres DNS, et la gestion du nom du réseau Tailnet
  • Settings : les paramètres généraux de votre environnement

V. Configuration de Tailscale

A. Approbation manuelle des appareils et utilisateurs

Par défaut, tous les appareils et tous les utilisateurs seront automatiquement approuvés. Bien que cela nécessite une invitation au préalable, il peut s'avérer judicieux de modifier ce comportement : l'administrateur devra approuver manuellement chaque utilisateur / appareil.

Dans la partie "Settings", cliquez sur "User management" et activez l'option "Manually approve new users".

Descendez dans la section "Device management" et cochez l'option "Manually approve new devices" pour avoir le même comportement avec les appareils. La fonctionnalité "Tailnet Lock", encore en Beta, est décrite sur cette page.

B. Nom du réseau et MagicDNS

Désormais, basculez sur la section "DNS" du menu, afin d'évoquer la possibilité de changer le nom de votre Tailnet. Par défaut, un nom aléatoire est généré, par exemple : tailfac29b.ts.net. Vous ne pouvez pas choisir votre propre nom, mais il est possible de le modifier quand même. Cliquez sur "Rename tailnet...".

Plusieurs noms vous seront proposés. Choisissez celui qui vous convient puis validez. Si vous souhaitez d'autres noms, cliquez de nouveau sur "Re-roll options". Il est préférable de le faire dès le début et de ne pas y revenir. L'idée étant de choisir sur un nom qu'il sera plus facile de mémoriser. Ici, ce sera centaur-bowfin.ts.net, pour ma part. Il faut savoir, que par défaut, Tailscale distribue son propre DNS sur les machines clientes, ce qui permet la résolution de noms avec les appareils du réseau VPN Mesh.

Cela est notamment possible grâce à la fonctionnalité de MagicDNS, activée par défaut. Grâce à elle, la gestion des enregistrements DNS est automatique et vous pouvez même utiliser les noms courts. Par exemple, la machine "PC-FLO" peut être contactée simplement avec ce nom, sans préciser le nom de domaine complet, à savoir "pc-flo.centaur-bowfin.ts.net".

C'est pratique, mais pas forcément utile dans tous les scénarios. Il faut savoir que ça existe, que c'est activé par défaut, et qu'il est possible de le désactiver.

C. Les règles de contrôle d'accès (ACL)

Basculez maintenant sur une section très intéressante nommée "Access controls". Actuellement, il y a trois appareils sur mon réseau Tailnet (j'ai ajouté un smartphone Android en supplément) et ils peuvent communiquer les uns avec les autres sans restriction. Ce qui me gêne, c'est que mon PC soit en mesure de contacter mon smartphone, et inversement. Mon idée de départ étant de pouvoir accéder à mon serveur à distance (représenté par le NAS).

Avec le système d'ACL, il est envisageable de ne pas autoriser les communications entre certains appareils. Plusieurs méthodes sont disponibles, notamment grâce à des groupes, mais aussi des tags. Ici, nous allons adopter la stratégie suivante :

  • Créer un tag "clients" que l'on affectera à tous les périphériques clients, comme un PC ou un smartphone
  • Créer un tag "servers" que l'on affectera à tous les périphériques serveurs, comme le NAS
  • Autoriser uniquement les clients à se connecter aux serveurs : un client ne peut pas se connecter sur un autre client

Il convient donc d'éditer le fichier de configuration par défaut, afin d'inclure ce code au format JSON. Dans cet exemple, le compte compte.administrateur@gmail.com est propriétaire des deux tags, c'est-à-dire qu'il peut associer ces tags aux machines (et seulement lui peut le faire).

{
	"tagOwners": {
		"tag:clients": ["compte.administrateur@gmail.com"],
		"tag:servers": ["compte.administrateur@gmail.com"]
	},
	"acls": [
		{
			"action": "accept",
			"src": [
				"tag:clients"
			],
			"dst": [
				"tag:servers:*"
			]
		}
	]
}

Ce qui donne :

Il faut ensuite ajouter le bon tag sur chaque machine à partir de l'onglet "Machines". Une option "Edit ACL tags..." est présente sur chaque machine.

Une fois la configuration en place, si je fais un ping de mon smartphone vers le PC, cela ne fonctionne pas ! À l'inverse, cela fonctionne lorsque je ping le NAS ! L'ACL est donc opérationnelle.

Vous pourriez aussi limiter les connexions des clients vers un hôte de destination particulier, sur un seul port. Voici un exemple ci-dessous. La valeur 100.121.156.58 correspond à l'adresse IP de synoflo dans Tailscale, et nous autorisons uniquement le port 8080.

{
	"tagOwners": {
		"tag:clients": ["compte.administrateur@gmail.com"],
		"tag:servers": ["compte.administrateur@gmail.com"]
	},
	"acls": [
		{
			"action": "accept",
			"src": [
				"tag:clients"
			],
			"dst": [
				"100.121.156.58:8080"
			]
		}
	]
}

Les ACL de Tailscale fonctionnent selon un modèle "deny-by-default", sont directionnelles, appliquées localement et n'affectent pas le trafic du réseau local.

  • Refus par défaut : une politique de refus par défaut empêche toute communication entre les appareils, sauf si un accès explicite est défini. Toutefois, si la section ACLs est absente du fichier de configuration de la politique Tailnet, Tailscale applique par défaut une politique autorisant toutes les connexions.
  • Directionnelles : autoriser une source à se connecter à une destination ne signifie pas que la destination peut faire de même en retour, sauf si une règle explicite le permet.
  • Appliquées localement : chaque appareil applique les règles d'accès aux connexions entrantes en fonction des règles distribuées à l'ensemble des appareils du réseau Tailnet. Cette application se fait directement sur chaque appareil, sans intervention supplémentaire du serveur de coordination de Tailscale.

Il est également possible d'autoriser l'accès en fonction de la posture de sécurité de l'appareil, selon quelques critères, notamment le système d'exploitation et sa version. Il y a aussi un critère basé sur la localisation de l'appareil, mais c'est limité à la version Enterprise, tout comme l'intégration avec une solution tierce (Intune, Jamf Pro, SentinelOne, CrowdStrike Falcon, etc.).

Pour avoir des exemples d'ACL selon différents scénarios, consultez cette page :

D. Le mode Subnet Router

Vous l'aurez compris : le client Tailscale doit être installé sur chaque appareil qui doit rejoindre le réseau maillé. Néanmoins, ce n'est pas obligatoire. C'est plutôt une bonne nouvelle, notamment pour accéder à d'autres types de périphériques sur lesquels l'installation n'est pas possible : imprimantes, caméras, etc...

Dans ce cas, il convient d'utiliser la fonction de "Subnet Router" sur l'une de vos machines. Cela va permettre d'autoriser les autres machines à passer par cette machine-là pour accéder à un sous-réseau.

Si nous prenons l'exemple d'une machine sous Windows qui doit assurer cette fonction, il suffit de lancer la commande suivante dans une console (en spécifiant le(s) sous-réseau(x) à autoriser) :

tailscale up --advertise-routes=192.168.1.0/24

Ici, nous diffusons une route pour atteindre le réseau 192.168.1.0/24 via ce nœud du réseau.

En plus de cette commande, l'administrateur doit accéder à la configuration de l'appareil sur l'interface Tailscale pour approuver la route. Il est nécessaire de cliquer sur "Edit" dans la section "Awaiting Approval".

Puis, la route doit être approuvée pour qu'elle soit diffusée.

Vous pouvez en savoir plus sur cette fonctionnalité en consultant la documentation :

E. La fonctionnalité Exit Node

Dans son comportement par défaut, Taiscale permet une connexion sécurisée entre les différents nœuds du VPN Mesh, grâce au protocole WireGuard. Néanmoins, si vous accédez à Internet, vous utilisez la connexion Internet de votre appareil : il peut s'agir de celle de votre domicile, d'un restaurant, d'un hôtel, etc...

La fonctionnalité Exit Node, vous pouvez de déterminer un nœud de sortie, c'est-à-dire un nœud Taiscale vers laquelle doit transiter le trafic sortant. Autrement dit, vous allez pouvoir acheminer tout le trafic non-Tailscale via un nœud de sortie spécifique.

Prenons un exemple : votre serveur Linux ou Windows est connecté à Internet via la connexion de votre domicile. Si vous l'utilisez comme nœud de sortie, toute votre navigation web passera par lui, donc vous exploitez votre connexion Internet personnelle à distance (adresse IP, etc.).

Il y a plusieurs étapes de configuration à effectuer :

  • Autoriser les utilisateurs à utiliser un Exit Node (ACL)
  • Activer la fonction Exit Node sur la machine souhaitée
  • Autoriser l'Exit Node sur l'interface d'administration
  • Activer l'Exit Node sur chaque appareil qui doit l'utiliser

Pour en savoir plus, référez-vous à la documentation :

F La fonctionnalité Funnel

Funnel, c'est le nom d'une fonctionnalité innovante proposée par Tailscale que vous pouvez utiliser pour exposer une ressource locale sur Internet. La ressource sera accessible par l'intermédiaire d'un nom de domaine DNS, correspondant à votre réseau Tailnet. Dans mon cas, cela pourrait donner : mon-app.centaur-bowfin.ts.net.

Source : Tailscale

VI. Conclusion

Tailscale est une solution puissante et facilement déployable pour interconnecter facilement plusieurs machines. Il est possible d'aller très loin dans la configuration, notamment au niveau des règles d'accès, ce qui permet d'adapter la solution à différents scénarios d'utilisation. La version gratuite et personnelle est vraiment très pratique. Elle vous conviendra si vous recherchez une solution simple à utiliser, qui allie performance et sécurité.

Si vous avez plutôt besoin d'une solution basée sur le déploiement d'un connecteur unique au niveau du réseau, et des fonctions de gestion de conformité intégrée, regardez plutôt du côté de Twingate. Dans les deux cas, Twingate et Tailscale représentent des solutions modernes qui vous feront oublier les VPN traditionnels...

Enfin, sachez qu'il existe un projet nommé Headscale dont l'objectif est de proposer une alternative auto-hébergée du serveur de contrôle Tailscale. Si certains d'entre vous ont déjà testé, nous sommes preneurs de retours !

author avatar
Florian BURNEL Co-founder of IT-Connect
Ingénieur système et réseau, cofondateur d'IT-Connect et Microsoft MVP "Cloud and Datacenter Management". Je souhaite partager mon expérience et mes découvertes au travers de mes articles. Généraliste avec une attirance particulière pour les solutions Microsoft et le scripting. Bonne lecture.
Partagez cet article Partager sur Twitter Partager sur Facebook Partager sur Linkedin Envoyer par mail

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur la façon dont les données de vos commentaires sont traitées.