Limites des approches existantes
Les méthodes courantes pour l'accès inter-appareils présentent chacune des inconvénients :
- SMB / AFP / NFS : ne fonctionnent que dans un réseau local physique, inutilisables en dehors.
- Synchronisation cloud : préoccupations de confidentialité, lenteur, dépendance à la vitesse du service.
- SSH / SCP / SFTP : nécessitent des commandes manuelles, peu pratiques pour les échanges fréquents.
- IP publique + redirection de port : expose les services internes à Internet, risque de sécurité élevé.
Principe fondamental : Overlay Network et traversée NAT
Qu'est-ce qu'un Overlay Network ?
Un réseau local traditionnel repose sur la topologie physique — tous les appareils connectés au même routeur ou switch. Un Overlay Network (réseau superposé) construit une couche logicielle sur Internet existant : chaque appareil installe un client et obtient une IP virtuelle (par exemple, 100.x.x.x). La communication entre appareils est routée via ces adresses virtuelles, la couche physique devenant transparente pour la couche supérieure.
Couche physique : AppareilA (domicile) ──── Internet ──── AppareilB (bureau)
Couche virtuelle : 100.66.1.2 ←── tunnel chiffré ──→ 100.66.1.3
Les applications ne voient que les IP virtuelles, ignorant la couche sous-jacente (WiFi, 4G) et les NAT intermédiaires.
Traversée NAT : établissement d'une connexion P2P
La plupart des appareils sont derrière un NAT (routeur domestique, passerelle d'entreprise) sans IP publique, impossibles à joindre directement. La traversée NAT vise à établir une liaison directe entre deux appareils cachés, principalement via STUN + Hole Punching :
- Les deux appareils envoient des requêtes à un serveur de coordination STUN sur Internet, qui enregistre leurs IP et ports publics.
- Le serveur échange les informations d'adresse entre les appareils.
- Les appareils envoient simultanément des paquets aux adresses publiques de l'autre, exploitant la "persistance de session" du NAT pour créer un chemin bidirectionnel.
- Une fois le hole punching réussi, le trafic passe en P2P direct, sans passer par le serveur de coordination.
AppareilA (derrière NAT) Serveur de coordination AppareilB (derrière NAT)
│──── Mon adresse publique ? ────▶│ │
│◀─── Vous êtes 1.2.3.4:5000 │ │
│ │◀── Mon adresse publique ? ──│
│ │─── Vous êtes 5.6.7.8:9000 ──▶│
│◀────── Adresse de l'autre : 5.6.7.8:9000 ────────────│
│──────────────── Hole punching direct ──────────────▶│
En cas d'échec (NAT symétrique), le trafic passe par un serveur relais chiffré, avec une vitesse réduite.
Chiffrement : protection du trafic
Tout le trafic entre appareils est chiffré via le protocole WireGuard (ou similaire), basé sur le chiffrement symétrique ChaCha20 et l'échange de clés Curve25519. Les clés sont négociées indépendamment pour chaque paire d'appareils ; le serveur de coordination ne gère que l'échange d'adresses et ne peut pas déchiffrer les données.
Ainsi, même si le serveur relais est compromis, le contenu transmis reste illisible.
Voici un exemple complet d'intégration sur trois plateformes via l'outil XNode.
Déploiement : une commande par plateforme
Windows (PowerShell en tant qu'administrateur) :
$installerUrl = "https://exemplaire.com/setup.ps1"
Invoke-Expression (Invoke-WebRequest -Uri $installerUrl).Content
Après installation, une icône apparaît dans la barre des tâches ; connectez-vous à votre compte.
macOS (terminal) :
curl -fsSL https://exemplaire.com/installer.sh | sudo sh
Une page s'ouvre automatiquement pour la connexion.
Linux (terminal) :
curl -fsSL https://exemplaire.com/installer.sh | sudo bash
Une fois les trois appareils connectés au même compte, le réseau se forme automatiquement avec des IP virtuelles attribuées, par exemple :
| Appareil | IP virtuelle |
|---|---|
| PC Windows | 100.66.1.2 |
| MacBook | 100.66.1.3 |
| Serveur Linux | 100.66.1.4 |
Résultats pratiques
Après la mise en réseau, l'accès entre appareils est identique à un réseau local :
Mac accède aux fichiers partagés Windows : dans Finder, appuyez sur Cmd+K et entrez :
smb://100.66.1.2
Le dossier partagé Windows se monte comme un lecteur réseau local, avec glisser-déposer simple.
Windows accède aux services Web Linux : dans le navigateur, entrez :
http://100.66.1.4:8080
Ouvrez directement des interfaces comme Jenkins ou des outils de gestion de base de données hébergés sur Linux.
Connexion SSH directe au Linux :
ssh utilisateur@100.66.1.4
Sans machine relais ni IP publique, connexion directe.
Sécurité et performances
Sécurité : tout le trafic passe par un tunnel chiffré, basé sur le principe de confiance zéro ; seuls les appareils autorisés sous le même compte peuvent rejoindre le réseau, sans exposer les services internes à Internet.
Performances : lorsque la traversée NAT réussit, la connexion P2P directe offre une vitesse dépendant de la bande passante mutuelle et une faible latence ; en cas d'échec, le trafic passe par un relais chiffré, avec une vitesse influencée par le nœud relais.