Introduction
Quand vous gérez 5 VPS, 2 postes, 1 NAS et 3 Raspberry Pi répartis sur plusieurs réseaux, configurer un VPN classique (OpenVPN, WireGuard manuel) devient un calvaire : keys, NAT, port forwarding, hub-and-spoke...
Tailscale simplifie radicalement :
- Vous installez un agent sur chaque machine
- Vous vous loguez avec votre compte Google/Microsoft/Github
- Toutes vos machines apparaissent dans un réseau privé virtuel
- Chaque machine a une IP privée stable (100.x.x.x ou Tailnet IPv6)
- NAT traversal automatique (WebRTC-style)
- Pas de serveur central à gérer (Tailscale héberge le control plane)
Architecture : mesh peer-to-peer. Chaque machine établit un tunnel WireGuard direct avec les autres. Tailscale n'est que la "carte d'identité" qui les fait se trouver.
Prérequis
- Compte Tailscale gratuit (jusqu'à 100 machines, 3 users)
- Machines Linux/Windows/macOS/iOS/Android à connecter
- Accès admin/root sur chaque machine
Étape 1 : Créer un compte Tailscale
- Inscription sur https://tailscale.com (gratuit pour usage perso/petit pro)
- Vous obtenez un tailnet (réseau personnel) : ex
mathys.github.ts.net - Loguez-vous avec Google, Microsoft, GitHub, ou Okta
Étape 2 : Installer Tailscale sur un VPS Linux
curl -fsSL https://tailscale.com/install.sh | sh
Démarrer et s'authentifier :
sudo tailscale up
Une URL apparaît : ouvrez-la dans votre navigateur, validez. La machine apparaît dans votre tailnet.
Vérifiez :
sudo tailscale status
Sortie type :
100.64.0.1 srv-web-01 mathys@ linux -
100.64.0.2 srv-db-01 mathys@ linux -
100.64.0.3 laptop mathys@ macos active; direct...
Étape 3 : Connecter d'autres machines
Windows
Téléchargez l'installeur : https://tailscale.com/download
macOS
Mac App Store ou : brew install --cask tailscale
iOS / Android
App Store / Play Store → "Tailscale"
Sur chaque machine, loguez-vous avec le même compte (sinon elles ne se voient pas).
Étape 4 : Communication entre machines
Une fois deux machines dans le tailnet :
# Depuis srv-web-01
ping 100.64.0.2
# Connexion SSH
ssh [email protected]
Vous pouvez aussi utiliser MagicDNS (activé par défaut) :
ping srv-db-01
ssh user@srv-db-01
Les noms sont les hostnames Tailscale, accessibles depuis n'importe quelle machine du tailnet.
Étape 5 : Désactiver l'auth périodique (clés perso)
Par défaut, les machines doivent se réauthentifier tous les 180 jours. Pour des serveurs, vous voulez du permanent :
- Dans l'admin Tailscale → Machines
- Clic sur la machine → Disable key expiry
Ou en CLI :
sudo tailscale up --advertise-tags=tag:server
Combiné avec des auth keys réutilisables (voir étape 6).
Étape 6 : Auth Keys (pour automatiser le déploiement)
Pour installer Tailscale sur 20 VPS sans cliquer 20 fois sur un lien d'auth :
- Dans Tailscale → Settings → Keys → Generate auth key
- Cochez :
- Reusable (utilisable sur plusieurs machines)
- Ephemeral : non (sinon machine supprimée à la déco)
- Pre-authorized : oui
- Expiration : 90 jours par exemple
- Tags :
tag:server
Vous obtenez tskey-auth-XXXXXX.
Sur chaque nouveau VPS :
curl -fsSL https://tailscale.com/install.sh | sh
sudo tailscale up --authkey=tskey-auth-XXXXXX --advertise-tags=tag:server
La machine apparaît automatiquement dans votre tailnet, sans interaction.
Étape 7 : ACLs (qui peut accéder à qui)
Dans l'admin Tailscale → Access controls. Le langage est en JSON.
Exemple : isoler les serveurs des clients
{
"tagOwners": {
"tag:server": ["mathys@github"],
"tag:client": ["mathys@github"]
},
"acls": [
// Mathys (admin) accède à tout
{
"action": "accept",
"src": ["mathys@github"],
"dst": ["*:*"]
},
// Les serveurs peuvent se voir entre eux
{
"action": "accept",
"src": ["tag:server"],
"dst": ["tag:server:*"]
},
// Les clients ne voient PAS les serveurs (par défaut, deny)
]
}
Cliquez Save. ACLs sont appliquées en <10 secondes.
Étape 8 : Subnet Router (étendre l'accès au LAN d'un site)
Vous avez un VPN home avec un NAS à 192.168.1.50. Vous voulez que tout votre tailnet accède au NAS sans installer Tailscale sur le NAS lui-même.
Sur une machine du LAN (ex: Raspberry Pi à 192.168.1.10) :
sudo tailscale up --advertise-routes=192.168.1.0/24
Activez l'IP forwarding :
echo "net.ipv4.ip_forward = 1" | sudo tee -a /etc/sysctl.conf
sudo sysctl -p
Dans l'admin Tailscale → Machines → Raspberry Pi → Edit route settings → cochez 192.168.1.0/24.
Maintenant, toutes vos autres machines du tailnet peuvent atteindre 192.168.1.50 directement.
Étape 9 : Exit Node (router tout votre trafic via un VPS)
Pour utiliser un VPS comme sortie internet (comme un VPN classique) :
Sur le VPS :
sudo tailscale up --advertise-exit-node
Activez dans l'admin → Edit → Use as exit node.
Sur un client (laptop, mobile) :
sudo tailscale up --exit-node=srv-web-01
Tout votre trafic passe maintenant par le VPS. Idéal pour bypasser des restrictions wifi ou pour anonymiser.
Étape 10 : Tailscale SSH (remplace les clés SSH)
Tailscale peut servir de bastion SSH : pas besoin de gérer les clés.
Sur les serveurs :
sudo tailscale up --ssh
Maintenant, depuis votre laptop tailnet :
ssh root@srv-web-01
Pas de mot de passe, pas de clé : Tailscale authentifie automatiquement avec votre identité (Google/Microsoft).
ACLs pour SSH
{
"ssh": [
{
"action": "check",
"src": ["mathys@github"],
"dst": ["tag:server"],
"users": ["root", "ubuntu", "mathys"]
}
]
}
"check" demande une revalidation auth toutes les 12h. "accept" autorise sans check.
Étape 11 : Funnel (exposer un service à internet via Tailscale)
Tailscale Funnel expose un service tailnet sur internet (genre Cloudflare Tunnel) :
# Active sur la machine
sudo tailscale serve --bg --https=443 http://localhost:3000
# Expose à internet
sudo tailscale funnel 443 on
Votre service est accessible sur https://srv-web-01.mathys.github.ts.net. Cert SSL géré automatiquement par Tailscale.
⚠️ Funnel est limité aux ports 443, 8443, 10000. Pas pour tout exposer en prod.
Étape 12 : Stats et monitoring
# Statut détaillé
sudo tailscale status
# Stats réseau (latence, débit, peer direct ou via DERP relay)
sudo tailscale netcheck
# IPs Tailscale d'une machine
sudo tailscale ip -4
sudo tailscale ip -6
# Vérifier la connectivité avec un peer
sudo tailscale ping srv-db-01
# Logs détaillés
sudo journalctl -u tailscaled -f
Étape 13 : Backup de la config tailnet
Pour exporter votre config (ACLs, machines, tags) :
- Settings → Tailnet policy file → bouton Export
- Téléchargez le JSON
Pour automatiser (via API Tailscale) :
curl -H "Authorization: Bearer YOUR_API_TOKEN" \
https://api.tailscale.com/api/v2/tailnet/mathys.github.ts.net/acl > acl-backup.json
Dépannage
"no route to host" entre 2 machines tailnet
Vérifiez le statut :
sudo tailscale status
Si vous voyez idle; relay "derp...", le NAT traversal a échoué → trafic passe par les relais Tailscale (DERP), plus lent mais ça marche. Pour forcer le direct, ouvrez UDP 41641 sur le firewall.
"tailscaled.service failed to start"
sudo systemctl status tailscaled
sudo journalctl -u tailscaled -n 50
Souvent un problème de réseau initial. Reset :
sudo tailscale down
sudo tailscale up
Machine apparaît expirée
Allez dans l'admin → Disable key expiry sur la machine.
Conflits d'IP avec votre LAN local
Tailscale utilise par défaut 100.64.0.0/10. Si votre LAN utilise cette range, conflit. Solution : changer le range côté Tailscale (Settings → Network) ou changer votre LAN.
Performances dégradées
sudo tailscale netcheck
Si JustOK ou Bad, c'est qu'aucun peering direct n'est possible. Causes : NAT symétrique double, firewall, MTU mismatch.
Commandes utiles
# Up / Down
sudo tailscale up
sudo tailscale down
# Statut
sudo tailscale status
sudo tailscale status --json
# Info détaillée
sudo tailscale netcheck
# Lister les peers
sudo tailscale status --peers
# Désactiver le DNS (si conflit)
sudo tailscale up --accept-dns=false
# Définir un hostname custom
sudo tailscale up --hostname=mon-nom-personnalise
# Reset complet
sudo tailscale logout
sudo tailscale up
# Supprimer Tailscale
sudo apt purge tailscale -y
Conclusion
Tailscale élimine la complexité du VPN :
- Setup: 1 commande pour rejoindre le tailnet
- Sécurité: WireGuard + auth SSO entreprise
- Performance: peer-to-peer direct quand possible
- ACLs: contrôle fin par tag/user
- Free tier: 100 machines, 3 users
Idéal pour :
- Administration de parc multi-VPS
- Accès à votre lab depuis n'importe où
- Connexion entre sites/clients
- Remplacement OpenVPN d'entreprise
Pour aller plus loin :
- Headscale : implémentation open-source du control plane Tailscale (auto-hébergé, gratuit illimité)
- NetBird : alternative similaire, mesh open-source
- WireGuard pur : si vous voulez 100% self-hosted sans agent (voir tuto dédié)
Ressources
- Site officiel : https://tailscale.com
- Documentation : https://tailscale.com/kb
- Tuto VeryCloud — WireGuard VPN :
/docs/article/wireguard - Tuto VeryCloud — Reverse SSH :
/docs/article/reverse-ssh - Tuto VeryCloud — SSH hardening :
/docs/article/ssh-hardening


















