VIGIL MESH

Documentation

Multicast et mDNS à travers Tailscale : pourquoi ça ne passe pas

Le ping passe, SSH passe, mais l'imprimante reste invisible, le Chromecast n'apparaît pas et le jeu ne trouve aucune partie LAN. Si vous vivez cela à travers Tailscale, rien n'est cassé : la découverte d'appareils repose sur la diffusion de lien local, qu'un réseau L3 routé ne transporte pas — un choix d'architecture des mesh WireGuard, pas un défaut. Cette page explique le mécanisme, passe en revue les contournements, puis présente une approche structurellement différente : un mesh qui est un domaine de diffusion.

Le symptôme : la connectivité est parfaite, la découverte reste vide

Le tableau est toujours le même. Les machines sont bien connectées : elles se pinguent par leur adresse du mesh, SSH et les partages par IP fonctionnent sans reproche. Mais tout ce qui repose sur « voir les appareils autour de soi » reste désespérément vide :

  • Le jeu n'affiche aucune partie LAN, alors que les deux joueurs sont sur le même réseau Tailscale.
  • L'imprimante ou le scanner du bureau distant n'apparaît pas dans la liste des appareils.
  • Chromecast, AirPlay ou le téléviseur ne sont pas proposés comme cibles de diffusion.
  • Deux nœuds ROS 2 sur des machines différentes ne se découvrent pas : les topics restent muets d'une machine à l'autre.
  • Les annonces UDP d'un automate ou d'un capteur n'arrivent jamais sur le poste de supervision.

L'explication : la découverte repose sur la diffusion de lien local

Sur un LAN, les appareils ne se trouvent pas par magie : ils s'annoncent « à tout le monde sur le lien ». mDNS/Bonjour (imprimantes, Chromecast, AirPlay), SSDP/UPnP (téléviseurs, box multimédia), WS-Discovery (caméras ONVIF), la découverte DDS de ROS 2 et les lobbies des jeux LAN envoient des paquets broadcast ou multicast de lien local. Ces paquets sont, par définition, confinés au segment : ils ne franchissent pas un routeur, et les piles strictes rejettent même tout paquet qui aurait été routé.

Tailscale est un mesh bâti sur WireGuard : il établit des tunnels unicast chiffrés point à point entre les machines et présente à chacune un réseau L3 routé. C'est un modèle simple, robuste et éprouvé — mais un réseau routé transporte des paquets vers une destination, il ne diffuse pas. Un paquet mDNS émis d'un côté n'a aucun chemin vers les autres membres : personne ne le réplique, personne ne le reçoit.

D'où le paradoxe apparent : l'unicast (ping, SSH, HTTP) traverse parfaitement, pendant que toute la couche de découverte — celle qui rend un LAN agréable — disparaît. Selon la documentation publique de Tailscale, la diffusion et le multicast ne sont pas pris en charge nativement, et la découverte mDNS/SSDP y est limitée. NetBird, autre mesh WireGuard, fait le même choix d'architecture.

Les contournements habituels côté L3, et leurs limites

Sur un réseau routé, on peut souvent contourner le problème service par service. Ces approches fonctionnent, mais aucune ne restitue le comportement général d'un LAN :

  • Forcer l'unicast quand l'application le permet : ajouter l'imprimante par son adresse IP, saisir l'IP du serveur de jeu quand le jeu offre une connexion directe, déclarer une liste de pairs unicast dans la configuration DDS de ROS 2.
  • Configurer service par service : chaque application qui repose sur la découverte demande sa propre solution, à documenter et à maintenir à chaque changement d'adresse ou d'appareil.
  • Relayer la découverte par un logiciel tiers : des réflecteurs mDNS existent en technique générale de réseau routé, au prix d'un composant supplémentaire à installer et à opérer sur chaque site.

La limite commune est structurelle : ces contournements traitent des cas particuliers, pas la cause. Quand une application ne propose que la découverte automatique — c'est le cas de nombreux jeux LAN et de la plupart des appareils grand public — il n'existe pas de solution générale du côté d'un réseau qui ne transporte pas la diffusion.

L'approche structurellement différente : un mesh qui est un domaine de diffusion

L'autre voie ne consiste pas à contourner l'absence de diffusion, mais à la restituer. VIGIL-MESH traite chaque réseau comme un domaine de diffusion L2 : broadcast, multicast et link-local IP sont répliqués vers tous les membres, comme si chacun était branché sur le même commutateur — où qu'il soit physiquement. mDNS, SSDP, WS-Discovery, la découverte DDS de ROS 2 et les jeux LAN traversent le mesh chiffré comme sur un switch.

  • La diffusion est chiffrée de bout en bout : chaque émetteur multicast diffuse sous une clé d'émetteur en rotation, et le relais réplique les paquets sans pouvoir les lire.
  • Le transport est du QUIC avec TLS 1.3 de bout en bout, avec un chemin direct entre pairs et une migration sans coupure du relais vers le direct.
  • Zéro port entrant sur les nœuds : la diffusion retrouvée ne demande aucune ouverture de pare-feu.
  • Le reste du mesh fait le même travail qu'un mesh classique : pair à pair, gestion centralisée, routes vers un LAN distant.

Réseau routé L3 vs domaine de diffusion L2

ComportementMesh L3 routé (unicast)Domaine de diffusion L2 (VIGIL-MESH)
Unicast : ping, SSH, HTTPOuiOui
Broadcast et multicast de lien localNon transporté, par conceptionRépliqué vers tous les membres, chiffré
Découverte mDNS / SSDP / WS-DiscoveryLimitée — contournements service par serviceComme sur un LAN
Jeux LANSelon le jeu, connexion par IP directe si elle existeDécouverte de parties comme sur un même switch
Multicast DDS / ROS 2Limité — pairs unicast à configurerMulticast IP répliqué (validation ROS 2 sur la roadmap)

Aucune colonne n'est « la bonne » dans l'absolu : si vos usages sont purement unicast, un mesh L3 routé vous sert très bien. La colonne de droite compte le jour où la découverte, le multicast applicatif ou les jeux LAN font partie du besoin.

Questions fréquentes

Pourquoi mDNS ne fonctionne-t-il pas à travers mon VPN ?
Parce que mDNS est un protocole de multicast de lien local : il s'adresse « à tout le monde sur le lien », jamais au-delà d'un routeur. Un VPN mesh L3 classique transporte de l'unicast point à point entre les machines — il route des paquets vers une destination, il ne diffuse pas. Le paquet mDNS n'est donc jamais transporté vers les autres membres. Ce n'est pas un bug : c'est le comportement attendu d'un réseau routé.
Peut-on faire passer les jeux en LAN dans Tailscale ?
La découverte de parties LAN repose sur la diffusion locale, que Tailscale — comme les mesh WireGuard en général — ne prend pas en charge nativement d'après sa documentation publique. Certains jeux permettent de se connecter par adresse IP directe : dans ce cas, la connexion unicast à travers le tunnel fonctionne. Quand le jeu ne propose que la découverte automatique, il n'existe pas de solution générale côté réseau routé. Reportez-vous à la documentation officielle de Tailscale pour l'état actuel.
Est-ce un défaut de Tailscale ?
Non. C'est un choix d'architecture, pas un défaut d'implémentation : un mesh WireGuard établit des tunnels unicast chiffrés point à point et présente un réseau L3 routé. Ce modèle est simple, robuste et éprouvé — il ne transporte simplement pas la diffusion de lien local, qui par définition ne franchit pas un routeur. NetBird, autre mesh WireGuard, fait le même choix.
Une alternative gère-t-elle le multicast nativement ?
Oui, deux approches existent. ZeroTier construit un véritable pont Ethernet L2, trames comprises. VIGIL-MESH reste un overlay L3 mais fait de chaque réseau un domaine de diffusion : broadcast, multicast et link-local IP sont répliqués vers tous les membres comme sur un commutateur, chiffrés de bout en bout par des clés d'émetteur en rotation. mDNS, SSDP, WS-Discovery, la découverte DDS de ROS 2 et les jeux LAN retrouvent leur comportement de LAN.
La diffusion à travers un mesh est-elle chiffrée chez VIGIL-MESH ?
Oui, de bout en bout. Chaque émetteur multicast diffuse sous sa propre clé d'émetteur, distribuée aux membres autorisés via les sessions chiffrées — jamais par le relais. La clé tourne à la révocation d'un membre, au redémarrage de l'émetteur et au moins toutes les 24 heures ; le relais réplique les paquets sans jamais pouvoir les lire.
Lire ensuiteDiffusion L2 et multicast chiffré