VPNSmith
self-host-vpn-headINFO

Tailscale exit node : guide complet configuration 2026

Configure un exit node Tailscale en 20 minutes sur Ubuntu 24.04. IP forwarding, commandes CLI exactes, approbation admin console, clients Mac/iOS/Android. Benchmarks latence Frankfurt/Paris.

Par Eric Gerard · Fondateur · VPNSmith - Spécialiste self-host VPN & VPS GDPR9 min de lecturePhoto : Lars Kienle - Unsplash

J'ai monté un exit node Tailscale sur un Hetzner CX11 à Frankfurt en mars 2026. Budget : 3,79 €/mois. Résultat : 18 ms de latence depuis Paris, 680 Mbps de débit mesuré, et un tunnel WireGuard chiffré dont je contrôle chaque paramètre. Ce guide donne les commandes exactes qu'on utilise en production - pas de résumé de documentation, pas de screenshot flou.

Qu'est-ce qu'un exit node Tailscale et pourquoi c'est différent d'un VPN classique

Un exit node Tailscale est un nœud de ton mesh Tailscale configuré pour router tout le trafic Internet des autres nœuds vers sa propre connexion. En pratique : tu actives cette option sur ton VPS Frankfurt, et tous tes appareils (laptop Paris, iPhone, iPad) sortent sur Internet avec l'IP de ce VPS.

La différence avec un VPN commercial comme NordVPN est architecturale :

  • VPN commercial : infrastructure partagée entre des milliers d'utilisateurs. Tu ne contrôles ni le serveur, ni la politique de logs, ni la configuration.
  • WireGuard nu self-host : tunnel point-à-point entre chaque client et le serveur. Excellent pour un seul tunnel, mais dès que tu as 4 appareils, tu configures 4 paires de clés manuellement.
  • Tailscale exit node : mesh WireGuard géré automatiquement. Le control plane Tailscale orchestre les clés, le NAT traversal et les ACLs. Tu désignes un nœud comme exit node en une commande, tous les autres l'utilisent sans reconfiguration.

Le data plane reste WireGuard pur - aucune entreprise ne voit ton trafic payload. Seul Tailscale Inc. voit les métadonnées de ton mesh (qui parle à qui, quand), ce qui est documenté dans leur politique de confidentialité.

Pour un comparatif exhaustif des approches, voir notre article meilleur VPN auto-hébergement 2026 et pour le détail Tailscale vs WireGuard nu, Tailscale vs WireGuard self-host.

Prérequis

Avant de démarrer, tu as besoin de :

  1. Un compte Tailscale - plan Free suffisant pour 1 exit node. Créer sur tailscale.com.
  2. Un serveur Linux - Ubuntu 24.04 LTS recommandé (support 5 ans). Peut aussi être un Mac ou Raspberry Pi.
  3. Connexion stable >= 100 Mbps - pour un usage solo ou famille. Pour du multi-utilisateurs simultanés, viser >= 500 Mbps.
  4. IP publique dédiée - incluse par défaut chez Hetzner, Contabo, OVH.
  5. Accès root ou sudo sur le serveur.

Ce guide suppose Ubuntu 24.04 LTS. Les commandes sont identiques sur Debian 12, légèrement différentes sur CentOS/RHEL (dnf au lieu d'apt).

Choisir la plateforme exit node

Des baies de serveurs éclairées en bleu dans un datacenter
Des baies de serveurs éclairées en bleu dans un datacenter

FournisseurPrixRéseauLocalisationVerdict
Hetzner CX113,79 €/mois20 TB inclus, 1 GbpsFrankfurt / Helsinki / AshburnMeilleur rapport qualité-prix EU
Contabo Cloud VPS 105,50 €/moistrafic illimité (fair use) inclus, 200 MbpsNuremberg / NYC / SingaporeBon si déjà client Contabo
OVH VPS Starter3,59 €/moistrafic illimité, 100 MbpsGravelines / StrasbourgBon pour latence France, réseau limité
AWS EC2 t2.micro0 € (12 mois)15 GB/mois inclusRégion au choixFree tier, mais 15 GB suffit à peine pour usage continu
Raspberry Pi 5 (home)~0 € (matériel seul)Dépend box FAITon réseau personnelIdéal pour LAN access - IP FAI souvent dynamique

Notre choix en production : Hetzner CX11 Frankfurt pour le bench latence Paris. Le réseau Hetzner est parmi les meilleurs d'Europe pour les RTT. Raspberry Pi 5 en secondaire pour accès LAN domicile.

Point attention Contabo : leur réseau est annoncé à 200 Mbps mais en pratique throttlé à 100 Mbps en pic d'utilisation sur l'entrée de gamme. Pour un exit node famille, prendre VPS M Cloud à 200 Mbps garanti.

Installation pas à pas sur Ubuntu 24.04 LTS

1. Installer Tailscale

Tailscale publie un script officiel d'installation via leur dépôt APT :

# Ajouter la clé GPG et le dépôt
curl -fsSL https://pkgs.tailscale.com/stable/ubuntu/noble.noarmor.gpg \
  | sudo tee /usr/share/keyrings/tailscale-archive-keyring.gpg >/dev/null

curl -fsSL https://pkgs.tailscale.com/stable/ubuntu/noble.tailscale-keyring.list \
  | sudo tee /etc/apt/sources.list.d/tailscale.list

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

# Vérifier la version (juin 2026 : v1.68+)
tailscale version

2. Activer l'IP forwarding

Sans cette étape, le nœud ne peut pas router le trafic des clients vers Internet. C'est l'équivalent du masquerade WireGuard :

echo 'net.ipv4.ip_forward = 1' | sudo tee /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

Vérification :

sysctl net.ipv4.ip_forward
# Doit retourner : net.ipv4.ip_forward = 1

3. Authentifier et advertiser l'exit node

sudo tailscale up --advertise-exit-node

Tailscale affiche une URL dans le terminal :

To authenticate, visit:
  https://login.tailscale.com/a/xxxxxxxxxxxxxxxx

Ouvre cette URL dans ton navigateur, connecte-toi avec ton compte Tailscale. Le nœud apparaît dans ta liste de machines.

Note : si tu veux pré-authentifier sans interaction (script CI/CD), utilise une auth key : sudo tailscale up --advertise-exit-node --authkey=tskey-auth-xxxxx.

4. Approuver dans la console admin

Par défaut, Tailscale requiert une approbation manuelle des exit nodes (sécurité). Sur login.tailscale.com/admin/machines :

  1. Trouve ton nœud (ex : hetzner-cx11-fra)
  2. Clique sur (...)Edit route settings
  3. Coche Use as exit node
  4. Clique Save

Le nœud est maintenant disponible comme exit node pour tous les membres de ton tailnet.

Alternative : désactiver l'approbation manuelle globalement dans Admin → Settings → Disable exit node approval requirement. Pratique pour un tailnet perso solo.

5. Vérifier l'état

tailscale status
# Le nœud doit apparaître comme "offers exit node"

sudo tailscale ping nom-du-noeud
# Doit retourner un RTT

Configuration client

macOS

  1. Installer Tailscale depuis le Mac App Store ou brew install tailscale
  2. Lancer Tailscale depuis la barre de menus
  3. Se connecter avec le même compte
  4. Clic sur l'icône Tailscale → Exit node → sélectionner ton nœud
  5. Vérifier : curl ifconfig.me - l'IP affichée doit être celle du VPS

LAN access : par défaut quand un exit node est actif, le trafic local (192.168.x.x) passe aussi par le tunnel. Pour garder l'accès LAN direct : clic Tailscale → Allow LAN access.

Windows

  1. Télécharger depuis tailscale.com/download/windows
  2. Clic droit icône systray → Exit node → sélectionner le nœud
  3. Confirmer la demande d'élévation UAC

iOS et Android

  1. Installer l'app Tailscale depuis App Store / Play Store
  2. Se connecter au tailnet
  3. Aller dans Settings (iOS) ou icône roue dentée (Android) → Use exit node → sélectionner

Sur iOS, Tailscale s'intègre via Network Extension - pas besoin de jailbreak. La connexion survit aux transitions WiFi/4G.

Linux CLI

# Sélectionner l'exit node (par nom ou IP Tailscale)
sudo tailscale set --exit-node=hetzner-cx11-fra

# Ou par IP Tailscale (100.x.y.z)
sudo tailscale set --exit-node=100.64.0.1

# Désactiver
sudo tailscale set --exit-node=

# Vérifier
tailscale status | grep "exit node"

Optimisations et troubleshooting

Performance : vérifier le type de connexion

Tailscale privilégie le tunnel WireGuard direct (NAT traversal). Si les deux nœuds ne peuvent pas se voir directement (NAT strict, CGNAT), le trafic passe par un DERP relay - plus lent d'environ 30-40 % :

tailscale netcheck
# Affiche quel relay est utilisé et si le direct est possible

tailscale ping nom-du-noeud
# "pong from ... via DERP(fra)" = relay
# "pong from ... via 1.2.3.4:41641" = direct (préférable)

Si tu es en relay alors que les deux machines ont des IPs publiques, vérifier l'UFW :

sudo ufw allow 41641/udp comment "Tailscale WireGuard"
sudo ufw allow 3478/udp comment "Tailscale STUN"

DNS : fuites après activation exit node

Tailscale pousse ses propres DNS (MagicDNS) mais laisse parfois filtrer les DNS du système. Test :

# Depuis le client avec exit node actif
dig +short whoami.cloudflare.com TXT @1.1.1.1
# L'IP retournée doit être celle du VPS, pas ta vraie IP

Si ta vraie IP fuit : sur macOS, désactiver et réactiver l'exit node. Sur Linux :

sudo tailscale set --exit-node=hetzner-cx11-fra
sudo resolvectl flush-caches

MTU et fragmentation

WireGuard réduit le MTU effectif de ~60 bytes (overhead tunnel). Sur certains liens, ça provoque des coupures avec les gros paquets (vidéo, SSH sessions longues). Fix :

# Sur le serveur exit node
sudo ip link set tailscale0 mtu 1280
# Rendre permanent dans /etc/systemd/network/ ou via script rc.local

Kernel routing : performances avancées

Sur le serveur, activer le BBR congestion control pour un meilleur débit :

echo 'net.core.default_qdisc = fq' | sudo tee -a /etc/sysctl.d/99-tailscale.conf
echo 'net.ipv4.tcp_congestion_control = bbr' | sudo tee -a /etc/sysctl.d/99-tailscale.conf
sudo sysctl -p /etc/sysctl.d/99-tailscale.conf

Ce réglage apporte généralement un gain de débit modeste sous charge - mesure l'avant/après sur ta propre connexion pour confirmer.

Sécurité et considérations privacy

Ce que Tailscale Inc. voit

Tailscale voit les métadonnées du control plane uniquement :

  • Adresses IP Tailscale (100.x.y.z) de tes nœuds
  • Timestamps des handshakes WireGuard
  • Noms des machines enregistrées dans ton tailnet

Tailscale ne voit jamais :

  • Le contenu de ton trafic (chiffré WireGuard de bout en bout)
  • Tes requêtes DNS (si MagicDNS désactivé et DNS resolver externe)
  • Les sites que tu visites

Le data plane est WireGuard pur. Le code client est open source.

ACLs sur le plan Free

Le plan Free propose des ACLs JSON basiques pour contrôler quels nœuds peuvent parler à quels autres. Exemple minimal pour restreindre l'exit node à ton propre device :

{
  "acls": [
    {
      "action": "accept",
      "src": ["tag:personal"],
      "dst": ["tag:exit-node:*"]
    }
  ],
  "tagOwners": {
    "tag:exit-node": ["autogroup:admin"],
    "tag:personal": ["autogroup:admin"]
  }
}

DERP relays : juridiction

Quand le trafic passe par un DERP relay (cas NAT strict), il transite par l'infrastructure Tailscale. Les relays EU sont en Allemagne et aux Pays-Bas. Si la juridiction compte, tu peux déployer ton propre DERP relay - guide dans la doc officielle Tailscale.

Logs côté serveur

Par défaut Ubuntu génère des logs kernel via journald pour les connexions WireGuard. Si tu veux zéro logs :

sudo journalctl --vacuum-time=1s
# Puis désactiver le logging kernel WireGuard
echo 'module wireguard +p' | sudo tee /sys/kernel/debug/dynamic_debug/control

Pour approfondir l'architecture Tailscale vs control plane self-host, voir notre comparatif Tailscale vs Headscale. Et pour les templates WireGuard nu sans overhead Tailscale : WireGuard config templates 2026.


En résumé : un exit node Tailscale sur Hetzner CX11 (3,79 €/mois) donne un tunnel VPN mesh entièrement sous ton contrôle, 18 ms Paris-Frankfurt, 680 Mbps de débit et zéro frais de bande passante jusqu'à 20 TB/mois. Le plan Free suffit pour un usage perso ou familial (jusqu'à 3 users). La configuration prend 20 minutes, commandes incluses dans ce guide.

★ Datacenter Nuremberg GDPR · ✓ IPv4 dédiée incluse · 200+ Mbps garantis

Héberge ton VPN sur ton propre VPS → ContaboAccès root complet · IPv4 publique · choisis ta région

Questions fréquentes

Le plan Free Tailscale suffit pour un exit node ?
Oui. Le plan Free (3 users, 100 devices) inclut 1 exit node. Pour plusieurs exit nodes simultanés (multi-région), il faut un plan payant.
Quelle latence attendre depuis Paris ?
Pour un VPS à Frankfurt ou Nuremberg vers un client à Paris, attends-toi à environ 15-25 ms de RTT sur un tunnel WireGuard direct, et quelques millisecondes de plus si le trafic bascule sur un relais DERP. Un tunnel direct bat toujours le trafic relayé - mesure ta propre route avec `ping`/`mtr` pour des chiffres exacts.
Quel débit réel passe par l'exit node ?
Sur Hetzner CX11 (réseau symétrique 1 Gbps) : 680 Mbps mesuré iperf3 tunnel WireGuard. En pratique, le goulot est ton lien fibre côté client (typiquement 400-900 Mbps en France).
Tailscale voit-il mon trafic ?
Non. Le data plane est WireGuard chiffré de bout en bout. Tailscale (control plane) voit uniquement les métadonnées : IPs des nœuds, timestamps handshake. Il ne déchiffre jamais le payload.
Plusieurs exit nodes sont possibles ?
Oui, sur plan payant. Tu peux avoir Frankfurt + Amsterdam + un Raspberry Pi home comme exit nodes. Le client choisit lequel activer - un seul actif à la fois par device.
L'exit node fonctionne sur Raspberry Pi ?
Oui, sur Pi 4/5 avec Raspberry Pi OS 64-bit. Le throughput est limité par l'interface GbE (800-850 Mbps max mesuré, souvent limité par le CPU du Pi à ~500 Mbps en chiffrement WireGuard).
Kill switch intégré à Tailscale ?
Oui : sudo tailscale set --exit-node=<nom> --exit-node-allow-lan-access=false coupe tout si le tunnel tombe. Sur macOS/iOS le client applique iptables/PF rules automatiquement quand l'exit node est actif.
IPv6 fonctionne-t-il à travers l'exit node ?
Oui si le serveur a une IPv6 publique (Hetzner en donne une par défaut). Activer net.ipv6.conf.all.forwarding = 1 dans sysctl suffit - Tailscale gère le reste.