
Tailscale sous le capot : architecture, ACL, subnet routing et sécurité avancée sous Linux
Installer Tailscale, c’est facile. Trop facile, même. Deux commandes, une authentification, et vos machines Linux apparaissent comme par magie dans un réseau privé mondial. Mais derrière cette simplicité apparente se cache une architecture réseau beaucoup plus intéressante qu’il n’y paraît.
Parce que Tailscale ne fait pas que simplifier WireGuard. Il ajoute une couche d’orchestration, d’identité et de contrôle d’accès qui change profondément la manière dont on pense les réseaux privés distribués.
Architecture : control plane vs data plane
La première chose à comprendre, c’est la séparation claire entre le plan de contrôle (control plane) et le plan de données (data plane).
Le control plane est responsable de l’authentification, de la distribution des clés publiques, de la gestion des ACL et de la découverte des nœuds. Il ne transporte jamais le trafic applicatif.
Le data plane, lui, repose sur WireGuard. Les machines établissent des tunnels chiffrés point à point. Le trafic passe directement entre les pairs lorsque cela est possible, sans transiter par un serveur central.
Cette séparation est cruciale. Même si le serveur de coordination était compromis, le trafic resterait chiffré de bout en bout.
NAT Traversal : comment les machines se trouvent
Dans un monde idéal, chaque machine aurait une IP publique fixe. Dans le monde réel, nous avons du NAT partout. Double NAT. CGNAT. Pare-feu restrictifs.
Tailscale utilise des techniques de NAT traversal basées sur STUN et UDP hole punching pour établir des connexions directes entre pairs. Lorsqu’une connexion directe est impossible, le trafic peut passer par des serveurs relais appelés DERP.
Les serveurs DERP ne déchiffrent jamais le trafic. Ils relaient uniquement des paquets chiffrés WireGuard.
ACL : contrôle d’accès granulaire
L’un des éléments les plus puissants de Tailscale réside dans son système d’ACL basé sur l’identité.
Contrairement aux VPN traditionnels où toute machine connectée peut généralement parler à toutes les autres, Tailscale permet de définir des règles précises. Qui peut accéder à quoi. Sur quel port. Sous quelles conditions.
Les ACL sont définies en JSON dans le panneau d’administration. Exemple simplifié :
{
"ACLs": [
{
"Action": "accept",
"Users": ["group:admin"],
"Ports": ["server1:22"]
}
]
}Ce modèle centré sur l’identité plutôt que sur l’adresse IP transforme le VPN en système Zero Trust simplifié.
Subnet Routing : exposer un réseau entier
Par défaut, Tailscale connecte des machines individuelles. Mais il peut aussi annoncer des sous-réseaux entiers grâce au subnet routing.
Un serveur Linux peut agir comme routeur pour un LAN interne. Exemple :
sudo tailscale up --advertise-routes=192.168.1.0/24Après validation dans le panneau d’administration, les autres nœuds peuvent accéder à ce sous-réseau comme s’il était local.
C’est particulièrement puissant pour accéder à un réseau domestique complet depuis l’extérieur sans ouvrir le moindre port public.
Exit Nodes : sortir via une machine distante
Tailscale permet également de définir un nœud comme passerelle Internet (exit node). Le trafic Internet complet d’un client peut être routé via ce nœud.
sudo tailscale up --advertise-exit-nodeCette fonctionnalité permet de créer un VPN sortant sécurisé sans déployer une infrastructure dédiée.
Headscale : auto-hébergement du control plane
Pour ceux qui souhaitent éviter le service cloud de coordination, Headscale propose une implémentation open source du control plane compatible Tailscale.
En déployant Headscale sur un serveur Linux, vous gardez un contrôle total sur l’authentification et la distribution des clés, tout en conservant les avantages du protocole.
Intégration Linux avancée
Sur Linux, Tailscale s’intègre via une interface réseau virtuelle (généralement tailscale0). On peut inspecter le routage avec :
ip route
tailscale statusIl est possible d’automatiser son démarrage via systemd et de combiner Tailscale avec iptables ou nftables pour des règles locales supplémentaires.
Modèle de sécurité
Chaque machine possède une clé publique WireGuard unique. Les clés sont régulièrement renouvelées. L’authentification est liée à une identité utilisateur via un fournisseur externe ou un système interne.
Ce modèle hybride identité + cryptographie moderne permet d’appliquer des principes Zero Trust sans complexité excessive.
Conclusion : simplification radicale d’un problème complexe
Tailscale ne remplace pas simplement un VPN. Il transforme l’expérience réseau distribuée en système orienté identité, chiffré par défaut, adaptable et contrôlable finement.
Pour un administrateur Linux, cela signifie moins de temps passé à maintenir une infrastructure VPN et plus de temps à construire des services.
La révolution n’est pas dans le chiffrement. Elle est dans l’orchestration.



