Tailscale - La maison avec vous partout

Pour faire suite à quelques échanges sur Discord voici une petite présentation de Tailscale, la solution VPN que j’utilise, entre autres, pour rester connecté avec ma maison où que je sois.

Tailscale est une solution VPN en mesh/maille. Ce qui veut dire qu’elle est faite pour que des périphériques puissent se parler entre eux directement ou en passant par un autre periph du réseau, qu’ils soient dans le même réseau ou non. Par exemple mon téléphone peut se connecter à mon NAS de manière transparente que je sois chez moi, en 4G ou sur un Wifi ailleur. Et ce sans se avoir à ouvrir de port sur mon routeur ou de config complexe à mettre en place.

C’est une couche qui configure automatiquement des connexions point à point WIregard en utilisant différentes techniques réseau pour ne pas demander à ouvrir des ports manuellement sur les routeurs (IPv6, STUN, uPnP, …). Ça propose aussi:

  • une couche DNS qui permet à chaque periph d’avoir un nom de domaine unique interne au réseau
  • de faire routeur pour accéder à un subnet en passant par un periph qui est sur ce subnet
  • de router tout le trafic d’un periph par un autre (faire comme si votre tel est chez vous alors que vous etes dans un autre pays),
  • accéder à un site web hébergé chez vous en fournissant un certificat https valide
  • Partager des ressources réseau avec d’autres utilisateurs, avec une config fine des droits
  • et plein d’autres trucs qu’ils ajoutent au fur et en mesure

Le tout gratuitement tant qu’on reste dans la limite de 100 périphériques et 3 utilisateurs. (5$/mois pour 6 users, et ici après)

Pour être un peu plus concret, je vais expliquer mon usage perso. Le produit est bien plus complexe que ce que j’en fais, mais ça donnera une bonne base.
J’ai config mon compte chez eux et choisi le nom de mon tailnet qui est mon domaine privé. Ça prend la forme de xxx-yyy.ts.net avec xxx/yyy qui sont 2 mots anglais au hazard qu on peut regen tant qu’on n’a pas un truc qui nous plait. Je vais prendre pango-lin.ts.net qui est celui que leur community manager utilise dans ses nombreux tutos.

J’installe l’agent sur mon PC, NAS, Mac, iPhone, iPad, APple TV, etc et je me retrouve avec

sarbian-win.pango-lin.ts.net
truenas.pango-lin.ts.net
mac-mini.pango-lin.ts.net
iphone-15-pro-max.pango-lin.ts.net
ipad-pro-12-9-gen-3.pango-lin.ts.net
apple-tv.pango-lin.ts.net

Maintenant tout ces périphériques peuvent se parler en utilisant ces noms de domaine quel que soit le réseau auquel ils sont connectés. C’est pratique, mais vous vous demandez probablement pourquoi mon PC à besoin dêter sur ce réseau alors qu’il est a quelques mètres du NAS. Il y a plusieurs raisons :

  • Je peux faire un tailscale ssh truenas et me connecter en SSH au NAS en étant authentifié par ma connexion sur le tailnet.
  • Je peux copier des fichier entre 2 periph avec la fonction taildrop et donc recup facilement un fichier du NAS de partout.
  • Le client peut generer et mettre a disposition un certificat https (Let’s Encrypt) avec le nom de domaine du periph que je peux utiliser pour un site que j’héberge localement. (plus sur ce sujet après).
  • Je peux rendre dispo sur internet un site (Je n’utilise pas, et ce n’est pas pour les trucs qui demandent de la bande passante)
  • D’autres trucs que j’oublie

En plus des accès simples que je décris, je crée aussi une adresse sur le tailnet pour chque site que j’héberge. Et donc j’ai aussi des noeuds comme immich.pango-lin.ts.net qui me permet d’accéder à mon instance immich avec un vrai certificat https et de manière sécurisée.
Pour faire ça avec docker il y a plusieurs méthodes

  • un side car docker qui est un agent tailscale spécifique pour ce service. Ça demande un peu de config en plus mais ça marche pas mal. (Tuto)
  • tsbridge la solution de paresseux comme moi. On lance un conteneur tsbrige et on le configure pour qu’il surveille les label des autres docker du serveur. Quand il voit le bon label il crée automatiquement une nouvelle config tailscale qui fait qu’un site devient accessible avec https://<label>.pango-lin.ts.net.
    Concrètement dans le dockerfile d’un service j’ajoute ça et j’ai un https://immich.pango-lin.ts.net qui est un proxy vers mon conteneur immich qui écoute sur le port 2283. C’est magique.
 labels:
      tsbridge.enable: true
      tsbridge.service.name: immich
      tsbridge.service.port: 2283

Ils bossent aussi sur un IdP oAuth qui vous authentifie automatiquement quand on est sur le réseau. (tsidp) et d’autres nouvelles fonctions.

Voilà, j’espere que ça n’est pas trop confus, Posez des questions :slight_smile:

14 « J'aime »

Hello, super présentation de la solution. Je ne peux que recommander :slight_smile:

As tu par hasard testé également HeadScale: GitHub - juanfont/headscale: An open source, self-hosted implementation of the Tailscale control server ? J’ai vu que cétait dispo coté TrueNAS mais pas encore testé de mon coté !

1 « J'aime »

Je n’ai pas testé mais j’ai regardé. Et il manque un certain nombre de fonctions que j’utilise, en particulier la creation de certificats. Et il me semble que toute la partie magicDNS est pas très au point.

Pour une solution équivalente en self hosted je conseillerais plus de partir sur Nebula/Defined qui est prevu pour dès le départ. Mais où il manque aussi des fonction que j’utilise (et qui est bien moins dispo en client partout).

1 « J'aime »

Le MeshVPN c’est l’avenir du VPN, 80% des fonctions ne servent sûrement pas aux personnes lambda, mais dans les entreprises c’est très utile quand y a du On-Prem, du Private Cloud, du nomade et que sais-je encore.

Tailscale c’est le plus connu et le plus abordable.

Dans le même genre il y a aussi NetBird, ZeroTier (un des plus vieux à ma connaissance) et pour ceux que j’ai déjà utilisé en entreprise il y a Twingate et Zscaler.

Je valide Tailscale pour pouvoir accéder un Home Assistant quand je ne suis pas à la maison !

Il y a même une possibilité dans home assistant pour avoir des urls différents, parfait pour utiliser le magicDNS de Tailscale.

Du coup je n’ai pas besoin de spécifier quoique ce soit dans l’app Home Assistant, il suffit d’activer Tailscale et l’app va automatiquement essayer à la fois homeassistant.mondomaine.com et homeassistant.tailfabcef.ts.net sans que je lui dise quoique ce soit (l’utilisation est transparente).

Je l’utilise depuis 1 mois j’en suis super content.

MAIS j’ai quand meme un retour à faire important. En gros noob qui pense que c’est bien, j’ai un peu installé sans trop comprendre la config.

J’ai installé tailgate sur mes 3 PC, 2 Tels, et mon NAS. Dans mon réseau tailgate, j’avais nommé , dans l’interface tailgate, toutes mes machines du meme nom que sous Windows. Et ca marchait bien.

sauf que sur mon vieux NAS DS414, les débits sous tailgate s’étaient écroulés (divisé par 10!). (j’ai pas cherché si c’etait normal ou pas)

J’ai donc désinstallé tailgate sur mon NAS… et mon NAS a disparu du réseau!

plus accessible!
parce que pour tout mes autres PC, le nom du NAS envoyait vers son IP tailgate, meme quand tailgate était désactivé sur le PC en question.
J’y ai passé 3 heures, mais quand j’ai compris ce probleme, j’ai renommé mon nas dans tailgate en NAS-Tailgate, et aussitot apres, mon NAS , sans tailgate, était accessible.

mais bon, tailgate, c’est quand meme super baleze de pouvoir dans la rue, avoir accès au répertoire partagé de mon PC principal!