Fransys

Blog technique — Architecture, Cloud & DevOps

BlogServicesContactÀ propos

Suivez-moi

githubGitHublinkedinLinkedinmailMail

© 2026 Fransys • Fransys

Fransys

Catégories

  • Tous les articles
  • Tags
  • productivite10
  • nas10
  • ia8
  • securite7
  • linux6
  • claude-code6
  • auto-hebergement6
  • neovim5
  • docker5
  • editeur4
  • mcp3
  • vpn3
  • reseau3
  • lua2
  • terminal2
naslinuxvpnsecurite

Accès distant sécurisé à son NAS avec Tailscale

Publié le
3 mars 2026·6 min de lecture
Avatar François GUERLEZFrançois GUERLEZ

Le problème : vouloir accéder à son NAS de loin

J'ai une vingtaine de services sur mon NAS - Jellyfin, Immich, Home Assistant, dashboards de monitoring. Tous accessible localement sans problème. Mais dès que je suis en déplacement chez un client, en vacances, ou au café, tout devient inaccessible.

La solution classique que je ne veux surtout pas : ouvrir des ports sur la box, configurer du port forwarding, mettre en place un DNS dynamique, et prier qu'aucun bot ne trouve tes services exposés. Bof, non merci.

VPN classique vs Tailscale

Un VPN auto-hébergé classique (OpenVPN, WireGuard natif), ça demande :

  • Ouvrir au moins un port UDP sur le routeur
  • Configurer du port forwarding vers le serveur VPN
  • Gérer un DNS dynamique si l'IP change
  • Maintenir le serveur VPN, ses certificats, ses clés
  • Configurer manuellement chaque client

Tailscale prend une approche radicalement différente. C'est un VPN mesh basé sur WireGuard qui crée des tunnels point-à-point entre appareils. Zéro serveur central à maintenir et surtout zéro port ouvert sur le routeur.

Les connexions se font via NAT traversal (STUN/DERP) : Tailscale trouve le chemin le plus direct entre deux appareils, même derrière du double NAT. Quand c'est impossible, le trafic passe par des relais (DERP servers), mais reste chiffré de bout en bout.

Installation via Ansible

Comme tout sur le NAS, Tailscale passe par Ansible. Variables clés :

# group_vars/nas.yml (extrait Tailscale)
tailscale_auth_key: 'tskey-auth-xxxxx' # clé d'authentification (vault)
tailscale_subnet_router: true
tailscale_advertised_routes: '192.168.1.0/24'
tailscale_exit_node: true
tailscale_accept_dns: true

Le rôle Ansible installe, authentifie, configure. L'installation concrète :

# Ce que le rôle Ansible fait
curl -fsSL https://tailscale.com/install.sh | sh

# Activation avec les options
sudo tailscale up \
    --authkey=tskey-auth-xxxxx \
    --advertise-routes=192.168.1.0/24 \
    --advertise-exit-node \
    --accept-dns

Subnet router : exposer tout le LAN

C'est la feature la plus puissante. En activant le subnet routing, le NAS devient une passerelle qui expose tout le réseau local (192.168.1.0/24) aux appareils Tailscale.

Concrètement, depuis mon téléphone en 4G avec Tailscale actif, j'accède à :

  • Tous les services du NAS par leur IP locale (192.168.1.50:8096 pour Jellyfin, etc.)
  • Les autres appareils du LAN : imprimante réseau, caméras IP, hub domotique
  • Les interfaces d'administration : la box internet, les switches managés

C'est transparent. Les apps se comportent exactement comme si j'étais sur le réseau local. Jellyfin sur mon téléphone se connecte à la même adresse qu'à la maison.

Pour que ça marche, faut activer l'IP forwarding sur le NAS :

# /etc/sysctl.d/99-tailscale.conf
net.ipv4.ip_forward = 1
net.ipv6.conf.all.forwarding = 1

Et approuver les routes dans la console Tailscale (ou via tailscale set avec les ACLs).

Exit node : navigation sécurisée

L'exit node c'est une feature complémentaire : activée sur un client, tout le trafic internet de l'appareil passe via le NAS. Le NAS devient ton proxy de sortie.

Utile sur les réseaux WiFi publics miteux - hôtels, cafés, aéroports. Au lieu de faire confiance au réseau local, tout le trafic est chiffré dans le tunnel WireGuard jusqu'au NAS, puis sort par ta connexion maison.

Activation côté client? Toggle dans l'app Tailscale : tu choisis le NAS comme exit node, c'est fait. Tu peux activer/désactiver à la demande selon le réseau.

Cas d'usage réels

Depuis que Tailscale tourne :

  • Jellyfin en déplacement : regarder mes films/séries de partout, sans exposer le port 8096 à internet
  • Immich depuis le téléphone : backup auto des photos, consultation de la bibli hors de la maison
  • SSH d'urgence : connexion au NAS depuis le PC portable chez un client pour dépanner rapidement
  • Dashboards internes : consulter Homepage, Uptime Kuma, Scrutiny sans les rendre publics
  • WiFi public sécurisé : activer l'exit node à l'hôtel pour naviguer via ma connexion maison

MagicDNS : des noms au lieu des IPs

Tailscale intègre un DNS interne appelé MagicDNS. Au lieu de retenir que le NAS est à 100.64.x.y sur Tailscale, tu accèdes par hostname :

ssh nasadmin@nas.tail1234.ts.net

MagicDNS résout automatiquement les noms des machines du tailnet. Couplé avec le subnet routing, tu gardes l'accès par IP locale pour les services Docker, et le hostname Tailscale pour SSH.

Vérifier l'état

La commande tailscale status donne une vue d'ensemble :

$ tailscale status
100.64.1.1    nas          francois@   linux   active; direct 192.168.1.50:41641
100.64.1.2    laptop       francois@   linux   active; direct 82.66.x.x:38412
100.64.1.3    pixel8       francois@   android active; relay "par"
100.64.1.4    macbook-pro  francois@   macOS   idle; offline

Tu vois immédiatement quels appareils sont connectés, si c'est en connexion directe ou relay, et leur état. Le téléphone ici via un relay DERP à Paris - pas de connexion directe possible, mais trafic chiffré de bout en bout.

Intégration avec le pare-feu

Point important : Tailscale utilise sa propre interface (tailscale0) et n'est pas affecté par les règles UFW. Le trafic Tailscale arrive déjà déchiffré sur tailscale0, puis accède aux services localement. C'est pour ça que les services restreints au LAN restent accessibles via Tailscale - le trafic arrive comme du trafic local.

Pas besoin de toucher aux règles de pare-feu existantes. Gros avantage sur un VPN classique où il faut souvent ajouter des règles pour le sous-réseau VPN.

Tailscale vs WireGuard auto-hébergé

Tailscale est basé sur WireGuard, mais la comparaison est instructive :

WireGuard natifTailscale
Port ouvert sur le routeurOui (UDP)Non
DNS dynamiqueNécessaireIntégré (MagicDNS)
Gestion des clésManuelleAutomatique
NAT traversalNonOui
Subnet routingConfig manuelleToggle dans l'admin
Multi-utilisateurs + ACLsComplexeIntégré
Dépendance externeAucuneTailscale (SaaS)

Le tradeoff avec Tailscale c'est la dépendance au service Tailscale pour la coordination (pas pour le trafic, qui reste point-à-point). Compromis que j'accepte volontiers vu la simplification apportée.

Performances

WireGuard c'est connu pour les perfs exceptionnelles - bien mieux qu'OpenVPN ou IPSec. L'overhead est minimal : en pratique, tu atteins des débits proches du natif. Sur ma fibre, zéro différence perceptible entre un accès local et un accès Tailscale en connexion directe. Seul le passage par un relay DERP ajoute de la latence, mais c'est rare.

Résumé

Tailscale a fondamentalement changé comment j'accède à mon NAS. Plus de ports ouverts, plus de DNS dynamique, plus de VPN complexe à maintenir. J'installe l'app sur un appareil, je me connecte, et j'ai accès à tout mon réseau local comme si j'étais chez moi. C'est la solution que je recommande à quiconque auto-héberge et veut accéder de loin sans compromettre la sécurité.

Article précédent

← Monitoring NAS : surveiller disques, services et logs en un coup d'oeil

Article suivant

MCP data.gouv.fr : interroger l open data français depuis Claude Code→
← Retour au blog

Sommaire

  • Le problème : vouloir accéder à son NAS de loin
  • VPN classique vs Tailscale
  • Installation via Ansible
  • Subnet router : exposer tout le LAN
  • Exit node : navigation sécurisée
  • Cas d'usage réels
  • MagicDNS : des noms au lieu des IPs
  • Vérifier l'état
  • Intégration avec le pare-feu
  • Tailscale vs WireGuard auto-hébergé
  • Performances
  • Résumé