ARCHITECTURE VPN MESH TAILSCALE Laptop 100.64.0.1 WireGuard Connecte Serveur Linux 100.64.0.2 Routeur de Sous-reseau Connecte Telephone 100.64.0.3 WireGuard Connecte Coordination Tailscale Echange de Cles Uniquement Tunnels WireGuard directs pair-a-pair — aucun relais central de trafic

Mettre en place un VPN securise a traditionnellement exige une expertise approfondie en reseaux, de la redirection de ports, de la gestion de cles et une maintenance constante. Tailscale change completement la donne. Construit sur WireGuard, Tailscale cree un VPN mesh — appele tailnet — ou chaque appareil se connecte directement a tous les autres via des tunnels chiffres pair-a-pair. Il n’y a pas de goulot d’etranglement sur un serveur central, pas de ports a ouvrir et pas de certificats a gerer. Vous installez le client, vous vous authentifiez, et vos appareils peuvent communiquer de maniere securisee, qu’ils soient derriere un NAT, des pare-feux ou sur des continents differents.

Ce guide couvre tout, de l’installation sur Linux, Windows et macOS aux fonctionnalites avancees comme le routage de sous-reseaux, les noeuds de sortie, les listes de controle d’acces (ACLs) et MagicDNS.

Qu’est-ce que Tailscale ?

Tailscale est un VPN mesh sans configuration qui utilise WireGuard en interne. Au lieu de mettre en place un serveur VPN central par lequel transite tout le trafic, Tailscale etablit des tunnels WireGuard directs et chiffres entre vos appareils. Le serveur de coordination de Tailscale ne gere que l’echange de cles et l’authentification des appareils — il ne voit jamais votre trafic reel.

Caracteristiques principales de Tailscale :

  • Topologie mesh : Chaque appareil se connecte directement a tous les autres. Le trafic entre votre laptop et votre serveur ne passe pas par un point central.
  • Base sur WireGuard : Utilise le protocole WireGuard pour le chiffrement, offrant une cryptographie moderne (ChaCha20, Curve25519) avec une surcharge minimale.
  • Traversee de NAT : Tailscale traverse automatiquement les pare-feux et le NAT en utilisant STUN, les serveurs relais DERP et d’autres techniques. Aucune redirection de ports necessaire.
  • Base sur l’identite : L’authentification est liee a votre fournisseur d’identite existant (Google, Microsoft, GitHub), et non a des certificats ou des cles pre-partagees gerees manuellement.
  • Adresses 100.x.y.z : Chaque appareil recoit une adresse IP Tailscale stable dans la plage 100.64.0.0/10 (espace CGNAT) qui ne change pas, quel que soit le reseau physique sur lequel se trouve l’appareil.

Tailscale vs VPN Traditionnels

Comprendre en quoi Tailscale differe des configurations VPN traditionnelles vous aide a apprecier quand et pourquoi l’utiliser :

CaracteristiqueTailscaleVPN Traditionnel (OpenVPN/IPsec)WireGuard Manuel
TopologieMesh (pair-a-pair)Hub-and-spoke (serveur central)Point a point ou hub
ConfigurationZero-configConfiguration complexe serveur + clientEchange manuel de cles
Traversee de NATAutomatiqueNecessite une redirection de portsNecessite une redirection de ports
Gestion des clesAutomatique via serveur de coordinationPKI manuelle ou cles pre-partageesPaires de cles manuelles
IdentiteSSO (Google, Microsoft, GitHub)Certificats ou identifiantsCles pre-partagees
PerformancePair-a-pair direct, faible latenceTout le trafic via le serveur centralDirect, mais configuration manuelle
EvolutiviteAjout d’un appareil en quelques secondesReconfigurer le serveur pour chaque clientModifier les configs sur tous les pairs
Support mobileApplications natives (iOS, Android)Clients tiersClients tiers

Quand choisir Tailscale : Lorsque vous souhaitez un VPN qui connecte tous vos appareils avec un effort minimal, en particulier a travers differents reseaux et environnements NAT. Il est ideal pour l’acces distant a des laboratoires domestiques, la connexion d’equipes distribuees ou la creation d’un reseau prive superpose entre des instances cloud.

Quand rester sur WireGuard manuel : Lorsque vous avez besoin d’un controle total sur chaque aspect du VPN, que vous operez dans un environnement isole d’internet, ou que vous avez des exigences de conformite interdisant l’utilisation d’un service de coordination tiers.

Prerequis

Avant de commencer, assurez-vous de disposer de :

  • Un compte Tailscale (offre gratuite disponible sur tailscale.com)
  • Au moins deux appareils que vous souhaitez connecter (Linux, Windows, macOS, iOS ou Android)
  • Un acces root ou sudo sur les serveurs Linux
  • Un acces administrateur sur Windows (pour l’installation)
  • Des connaissances de base de la ligne de commande

Installation de Tailscale sur Linux

Tailscale fournit des paquets officiels pour toutes les distributions Linux majeures. La methode recommandee utilise le script d’installation officiel.

Ubuntu / Debian

# Ajouter la cle de signature et le depot de Tailscale
curl -fsSL https://tailscale.com/install.sh | sh

Si vous preferez ajouter le depot manuellement :

# Ajouter la cle GPG de Tailscale
curl -fsSL https://pkgs.tailscale.com/stable/ubuntu/jammy.noarmor.gpg | sudo tee /usr/share/keyrings/tailscale-archive-keyring.gpg >/dev/null

# Ajouter le depot Tailscale
curl -fsSL https://pkgs.tailscale.com/stable/ubuntu/jammy.tailscale-keyring.list | sudo tee /etc/apt/sources.list.d/tailscale.list

# Installer Tailscale
sudo apt update
sudo apt install -y tailscale

Fedora / RHEL / CentOS

# Ajouter le depot Tailscale
sudo dnf config-manager --add-repo https://pkgs.tailscale.com/stable/fedora/tailscale.repo

# Installer Tailscale
sudo dnf install -y tailscale

# Activer et demarrer le daemon
sudo systemctl enable --now tailscaled

Arch Linux

sudo pacman -S tailscale
sudo systemctl enable --now tailscaled

Verifier l’Installation

Apres l’installation sur n’importe quelle distribution, verifiez que le daemon Tailscale est en cours d’execution :

# Verifier l'etat du service tailscaled
sudo systemctl status tailscaled

# Verifier que le CLI Tailscale est disponible
tailscale version

Vous devriez voir une sortie similaire a :

1.62.0
  tailscale commit: abcdef1234567890
  other commit: abcdef1234567890
  go version: go1.22.0

Installation sur Windows et macOS

Windows

  1. Telechargez l’installateur depuis tailscale.com/download/windows
  2. Executez l’installateur .msi
  3. Tailscale apparait dans la barre des taches apres l’installation
  4. Cliquez sur l’icone Tailscale et selectionnez Se connecter
  5. Authentifiez-vous avec votre fournisseur d’identite dans le navigateur

Alternativement, installez via la ligne de commande avec winget :

winget install Tailscale.Tailscale

macOS

Installez depuis le Mac App Store ou avec Homebrew :

# Installer via Homebrew
brew install --cask tailscale

Ou telechargez directement depuis tailscale.com/download/mac. Apres l’installation, ouvrez Tailscale depuis le dossier Applications et il apparaitra dans la barre de menus.

Docker

Pour les environnements conteneurises, Tailscale fournit une image Docker officielle :

docker run -d \
  --name=tailscale \
  --hostname=my-container \
  --cap-add=NET_ADMIN \
  --cap-add=NET_RAW \
  -v /dev/net/tun:/dev/net/tun \
  -v tailscale-state:/var/lib/tailscale \
  -e TS_AUTHKEY=tskey-auth-xxxxxxxxxxxx \
  -e TS_STATE_DIR=/var/lib/tailscale \
  tailscale/tailscale:latest

Astuce : Utilisez une cle d’authentification pre-autorisee (TS_AUTHKEY) pour eviter l’etape de connexion manuelle dans les environnements sans interface graphique. Generez les cles d’authentification dans la console d’administration de Tailscale sous Parametres > Cles.

Connecter les Appareils a Votre Tailnet

Une fois Tailscale installe, connectez chaque appareil a votre tailnet :

Authentifier Votre Premier Appareil

# Demarrer Tailscale et s'authentifier
sudo tailscale up

Cette commande affiche une URL. Ouvrez-la dans votre navigateur, connectez-vous avec votre fournisseur d’identite et autorisez l’appareil. Apres l’authentification, l’appareil rejoint votre tailnet et recoit une adresse IP Tailscale.

Verifier l’Etat de Votre Connexion

# Voir votre IP Tailscale et l'etat de la connexion
tailscale status

Exemple de sortie :

100.64.0.1   laptop           user@example.com  linux   -
100.64.0.2   server           user@example.com  linux   -
100.64.0.3   phone            user@example.com  iOS     -

Tester la Connectivite

Une fois que deux appareils ou plus sont connectes, testez la connectivite :

# Envoyer un ping a un autre appareil par son IP Tailscale
tailscale ping 100.64.0.2

# Ou par son nom MagicDNS
tailscale ping server

Le premier tailscale ping peut montrer le trafic achemine via un relais DERP. Les pings suivants etablissent generalement une connexion directe pair-a-pair :

pong from server (100.64.0.2) via DERP(nyc) in 45ms
pong from server (100.64.0.2) via 203.0.113.50:41641 in 12ms
pong from server (100.64.0.2) via 203.0.113.50:41641 in 11ms

Remarque : Le relais DERP n’est utilise que lorsqu’une connexion directe ne peut pas etre etablie (cas rare). DERP signifie Designated Encrypted Relay for Packets, et il s’agit d’un mecanisme de secours, pas du chemin par defaut.

Routage de Sous-reseaux

Le routage de sous-reseaux permet a un noeud Tailscale d’agir comme passerelle, donnant aux autres noeuds de votre tailnet l’acces aux appareils d’un reseau local qui n’ont pas Tailscale installe.

Pourquoi Utiliser le Routage de Sous-reseaux ?

  • Acceder aux imprimantes, appareils NAS, appareils IoT ou autres equipements qui ne peuvent pas executer Tailscale
  • Atteindre l’integralite d’un LAN de bureau ou domestique depuis n’importe quel appareil de votre tailnet
  • Eviter d’installer Tailscale sur chaque appareil individuel d’un reseau

Activer le Routage de Sous-reseaux

Sur la machine Linux qui servira de routeur de sous-reseau :

# Activer le transfert IP (requis pour le routage)
echo 'net.ipv4.ip_forward = 1' | sudo tee -a /etc/sysctl.d/99-tailscale.conf
echo 'net.ipv6.conf.all.forwarding = 1' | sudo tee -a /etc/sysctl.d/99-tailscale.conf
sudo sysctl -p /etc/sysctl.d/99-tailscale.conf

# Annoncer le sous-reseau local
sudo tailscale up --advertise-routes=192.168.1.0/24

Si vous avez plusieurs sous-reseaux :

sudo tailscale up --advertise-routes=192.168.1.0/24,10.0.0.0/24

Approuver la Route dans la Console d’Administration

Les routes de sous-reseaux ne sont pas actives tant qu’un administrateur ne les a pas approuvees :

  1. Rendez-vous sur la console d’administration de Tailscale
  2. Trouvez la machine routeur de sous-reseau
  3. Cliquez sur le menu a trois points et selectionnez Modifier les parametres de routage
  4. Activez les routes annoncees

Verifier l’Acces au Sous-reseau

Depuis n’importe quel autre appareil de votre tailnet :

# Envoyer un ping a un appareil sur le LAN distant (ex. un NAS a 192.168.1.100)
ping 192.168.1.100

# Se connecter en SSH a un appareil sur le LAN distant
ssh admin@192.168.1.50

Noeuds de Sortie

Un noeud de sortie achemine tout le trafic internet d’un appareil via un autre appareil de votre tailnet. C’est utile pour :

  • Acheminer le trafic via un appareil situe dans une zone geographique specifique
  • Utiliser la connexion internet d’un reseau de confiance lorsque vous etes sur un Wi-Fi non securise
  • Acceder a du contenu geo-restreint depuis l’adresse IP de votre domicile

Configurer un Noeud de Sortie

Sur l’appareil qui servira de noeud de sortie :

# Annoncer cet appareil comme noeud de sortie
sudo tailscale up --advertise-exit-node

Approuvez le noeud de sortie dans la console d’administration de Tailscale, de la meme maniere que pour les routes de sous-reseaux.

Utiliser un Noeud de Sortie

Sur l’appareil qui doit acheminer le trafic via le noeud de sortie :

# Acheminer tout le trafic via un noeud de sortie specifique
sudo tailscale up --exit-node=server

# Ou utiliser l'IP Tailscale
sudo tailscale up --exit-node=100.64.0.2

Pour cesser d’utiliser le noeud de sortie :

sudo tailscale up --exit-node=

Verifier que le Noeud de Sortie Fonctionne

# Verifier votre IP publique -- elle doit correspondre a l'IP publique du noeud de sortie
curl -s https://ifconfig.me

# Verifier l'etat de Tailscale pour les informations sur le noeud de sortie
tailscale status

Important : Lorsque vous utilisez un noeud de sortie, toutes les requetes DNS sont egalement acheminees via ce noeud par defaut. Cela empeche les fuites DNS mais signifie que la vitesse de resolution DNS depend de la configuration DNS du noeud de sortie.

Listes de Controle d’Acces (ACLs)

Les ACLs de Tailscale definissent quels appareils et utilisateurs peuvent communiquer entre eux. Par defaut, tous les appareils d’un tailnet peuvent atteindre tous les autres. Les ACLs vous permettent de restreindre ces acces.

Comprendre la Syntaxe des ACLs

Les ACLs sont definies dans la console d’administration de Tailscale sous Controles d’acces. Le fichier de politiques utilise une syntaxe de type JSON appelee HuJSON (Human JSON) qui prend en charge les commentaires :

{
  // Autoriser tous les utilisateurs a un acces complet (politique par defaut)
  "acls": [
    {
      "action": "accept",
      "src": ["*"],
      "dst": ["*:*"]
    }
  ]
}

Exemple d’ACL Restrictive

Une politique plus pratique qui segmente l’acces par role :

{
  "groups": {
    "group:admin": ["user@example.com"],
    "group:developers": ["dev1@example.com", "dev2@example.com"]
  },
  "tagOwners": {
    "tag:server": ["group:admin"],
    "tag:database": ["group:admin"]
  },
  "acls": [
    // Les administrateurs peuvent acceder a tout
    {
      "action": "accept",
      "src": ["group:admin"],
      "dst": ["*:*"]
    },
    // Les developpeurs peuvent acceder aux serveurs sur des ports specifiques
    {
      "action": "accept",
      "src": ["group:developers"],
      "dst": ["tag:server:80,443,22"]
    },
    // Seuls les administrateurs peuvent acceder aux bases de donnees
    {
      "action": "accept",
      "src": ["group:admin"],
      "dst": ["tag:database:5432,3306"]
    },
    // Tous les utilisateurs peuvent envoyer un ping a tous les appareils
    {
      "action": "accept",
      "src": ["*"],
      "dst": ["*:*"],
      "proto": "icmp"
    }
  ]
}

Appliquer des Tags aux Appareils

Les tags sont appliques lors du demarrage d’un appareil :

# Taguer un appareil comme serveur
sudo tailscale up --advertise-tags=tag:server

# Taguer un appareil avec plusieurs tags
sudo tailscale up --advertise-tags=tag:server,tag:database

Remarque : Les appareils tagues appartiennent au tag, pas a un utilisateur. Cela signifie qu’ils ne peuvent pas etre utilises pour des connexions interactives et sont ideaux pour les noeuds d’infrastructure.

Tester les Regles ACL

Utilisez la fonctionnalite de test ACL dans la console d’administration pour verifier vos regles avant de les appliquer. Vous pouvez egalement utiliser tailscale ping et tailscale netcheck pour verifier la connectivite apres avoir applique les ACLs.

MagicDNS et DNS Personnalise

MagicDNS attribue automatiquement des noms DNS a vos appareils Tailscale, vous permettant de les designer par leur nom plutot que par adresse IP.

Activer MagicDNS

MagicDNS est active par defaut sur les nouveaux tailnets. S’il n’est pas active :

  1. Rendez-vous sur la console d’administration de Tailscale
  2. Naviguez vers DNS
  3. Activez MagicDNS

Avec MagicDNS active, vous pouvez utiliser directement les noms d’appareils :

# Au lieu de :
ssh user@100.64.0.2

# Vous pouvez utiliser :
ssh user@server

# Ou le nom complet qualifie :
ssh user@server.tailnet-name.ts.net

Ajouter des Serveurs DNS Personnalises

Vous pouvez configurer des parametres DNS globaux ou fractionnes dans la console d’administration :

# Serveurs de noms globaux (utilises pour toutes les requetes DNS)
# A configurer dans la console d'admin sous DNS > Serveurs de noms

# DNS fractionne (acheminer des domaines specifiques vers des serveurs DNS specifiques)
# Exemple : Acheminer *.corp.example.com vers votre DNS d'entreprise
# A configurer dans la console d'admin sous DNS > Serveurs de noms > Ajouter un DNS fractionne

Le DNS fractionne est particulierement utile lorsqu’il est combine avec le routage de sous-reseaux. Par exemple, si vous annoncez une route vers le LAN de votre bureau, vous pouvez egalement configurer le DNS fractionne pour que les requetes *.office.local soient resolues via le serveur DNS du bureau.

Remplacer le DNS Local

Pour forcer toutes les requetes DNS a transiter par les serveurs de noms configures de Tailscale :

sudo tailscale up --accept-dns=true

Pour desactiver MagicDNS sur un appareil specifique :

sudo tailscale up --accept-dns=false

Partager des Noeuds avec d’Autres Utilisateurs

Tailscale vous permet de partager des appareils specifiques avec des utilisateurs en dehors de votre tailnet. C’est utile pour donner a un prestataire l’acces a un serveur specifique sans l’ajouter a l’ensemble de votre reseau.

Partager un Noeud

  1. Rendez-vous sur la console d’administration de Tailscale
  2. Trouvez la machine que vous souhaitez partager
  3. Cliquez sur le menu a trois points et selectionnez Partager
  4. Saisissez l’adresse e-mail de l’utilisateur externe

Le noeud partage apparait dans le tailnet de l’utilisateur externe, mais il ne peut acceder qu’a cet appareil specifique — pas a l’ensemble de votre reseau.

Acces de l’Utilisateur Externe

L’utilisateur externe doit :

  1. Posseder un compte Tailscale
  2. Accepter l’invitation de partage
  3. L’appareil partage apparait dans la sortie de sa commande tailscale status
# L'utilisateur externe voit l'appareil partage
tailscale status
# 100.64.0.50   shared-server    shared by user@example.com  linux

Astuce : Combinez le partage de noeuds avec les ACLs pour restreindre les ports auxquels l’utilisateur externe peut acceder sur l’appareil partage. Par exemple, autorisez uniquement SSH (port 22) et HTTP (port 80).

Reference des Commandes Tailscale

CommandeDescription
tailscale upSe connecter a votre tailnet et s’authentifier
tailscale downSe deconnecter du tailnet
tailscale statusAfficher les appareils connectes et leurs adresses IP
tailscale ping <host>Envoyer un ping a un appareil et afficher le chemin de connexion
tailscale netcheckExecuter un diagnostic reseau
tailscale ipAfficher vos adresses IP Tailscale
tailscale dns statusAfficher la configuration DNS actuelle
tailscale file send <fichier> <host>Envoyer un fichier a un autre appareil via Taildrop
tailscale file get <repertoire>Recevoir les fichiers envoyes via Taildrop
tailscale ssh <utilisateur>@<host>Se connecter en SSH a un appareil via Tailscale SSH
tailscale cert <domaine>Obtenir un certificat TLS pour un domaine Tailscale
tailscale logoutSe deconnecter et supprimer l’appareil du tailnet
tailscale up --advertise-routes=<CIDR>Annoncer des routes de sous-reseaux
tailscale up --advertise-exit-nodeS’annoncer comme noeud de sortie
tailscale up --exit-node=<host>Utiliser un noeud de sortie specifique
tailscale up --advertise-tags=<tags>Appliquer des tags ACL a l’appareil
tailscale up --accept-dns=falseDesactiver MagicDNS sur cet appareil
tailscale bugreportGenerer un rapport de bug pour le depannage

Depannage

L’Appareil n’Apparait pas dans la Console d’Administration

# Verifier que le daemon est en cours d'execution
sudo systemctl status tailscaled

# Rechercher les erreurs d'authentification dans les logs
sudo journalctl -u tailscaled --since "10 minutes ago"

# Forcer la re-authentification
sudo tailscale up --force-reauth

Impossible d’Atteindre les Autres Appareils

# Executer un diagnostic reseau
tailscale netcheck

# Verifier si la connexion est directe ou relayee
tailscale ping <nom-appareil>

# Verifier que le pare-feu ne bloque pas Tailscale
sudo iptables -L -n | grep -i tailscale

# Verifier si le port UDP 41641 est accessible (utilise pour les connexions directes)
sudo ss -ulnp | grep tailscaled

Connexions Lentes (Trafic Relaye)

Si tailscale ping montre que le trafic passe par un relais DERP au lieu d’une connexion directe :

# Executer netcheck pour voir le type de NAT et la connectivite
tailscale netcheck

# Exemple de sortie montrant des problemes potentiels :
#   UDP: true
#   IPv4: yes, 203.0.113.50:41641
#   MappingVariesByDestAddr: false
#   PortMapping: UPnP
#   Nearest DERP: New York City

Causes courantes de connexions relayees :

  • NAT symetrique d’un cote ou des deux (MappingVariesByDestAddr: true)
  • Pare-feu bloquant UDP sur le port 41641
  • Pare-feux d’entreprise effectuant une inspection approfondie des paquets

Solutions :

# Sous Linux, assurez-vous que l'UDP n'est pas bloque
sudo ufw allow 41641/udp

# Si vous etes derriere un pare-feu d'entreprise strict, Tailscale utilisera le relais DERP
# DERP est chiffre et fonctionnel, juste legerement plus lent

Les Routes de Sous-reseaux ne Fonctionnent pas

# Verifier que le transfert IP est active
sysctl net.ipv4.ip_forward
# Doit retourner : net.ipv4.ip_forward = 1

# Verifier que les routes sont annoncees
tailscale status --json | grep -A5 "AllowedIPs"

# Verifier que les routes sont approuvees dans la console d'administration
# Les routes non approuvees ne fonctionneront pas

MagicDNS ne Resout pas

# Verifier l'etat du DNS
tailscale dns status

# Verifier que resolv.conf est gere par Tailscale
cat /etc/resolv.conf

# Si vous utilisez systemd-resolved, verifier sa configuration
resolvectl status

# Forcer le rafraichissement DNS
sudo tailscale down && sudo tailscale up

Resume

Tailscale transforme la complexite de la configuration VPN en une experience quasiment sans configuration. En s’appuyant sur les fondations cryptographiques de WireGuard et en y ajoutant la traversee automatique de NAT, l’authentification basee sur l’identite et une topologie mesh, Tailscale vous permet de connecter tous vos appareils de maniere securisee en quelques minutes plutot qu’en plusieurs heures.

Points cles de ce guide :

  • L’installation est triviale : Une commande pour installer, une commande pour se connecter
  • Le reseau mesh elimine les goulots d’etranglement : Les appareils communiquent directement sans serveur central
  • Le routage de sous-reseaux etend la portee : Accedez aux appareils qui ne peuvent pas executer Tailscale via un routeur de sous-reseau
  • Les noeuds de sortie offrent un acheminement flexible du trafic : Acheminez tout le trafic via n’importe quel appareil de votre tailnet
  • Les ACLs appliquent le principe du moindre privilege : Controlez qui peut acceder a quoi a un niveau granulaire
  • MagicDNS simplifie l’adressage : Utilisez des noms d’appareils au lieu d’adresses IP

Pour des guides connexes sur la securite et les reseaux, consultez nos articles sur la mise en place d’un serveur VPN WireGuard sur Ubuntu pour une configuration manuelle de WireGuard, et le renforcement SSH pour les serveurs Linux pour securiser les connexions SSH vers vos serveurs connectes avec Tailscale.