neyor

Documentation

GhostMesh

Un réseau overlay P2P chiffré et décentralisé : tes appareils se connectent directement, sans serveur central.

01 — Principe

Ce que fait GhostMesh

GhostMesh est un réseau overlay maillé, chiffré et sans configuration, écrit en Rust avec Tauri v2. Il relie tes appareils directement en UDP, à travers les box et les pare-feu, sans serveur qui relaie les données. Seuls des serveurs STUN publics servent à la découverte : tout le trafic passe d'un appareil à l'autre.

Contrairement à un VPN classique, il n'y a pas de serveur central par lequel tout transite.

02 — Fonctionnalités

Ce qu'il sait faire

Connexion directe

Traversée de NAT par UDP hole-punching synchronisé, avec ouverture automatique d'un port par UPnP.

Chiffrement de bout en bout

Poignée de main Noise_XX avec Curve25519, ChaCha20-Poly1305 et BLAKE2s, et authentification mutuelle.

Appareils connus

Les appareils déjà appairés sont mémorisés. Chaque reconnexion déclenche une demande que l'autre appareil accepte ou refuse.

Pare-feu par appareil

Droits réglables pour chaque appareil : bureau à distance, GhostDrop, ou session temporaire révoquée à la déconnexion.

GhostDrop

Transfert direct de fichiers et de dossiers, sans limite de taille, avec reprise automatique après une coupure.

Bureau à distance

Lance le client Windows (mstsc) vers l'adresse virtuelle de l'appareil distant, sans logiciel tiers.

GhostChat

Messagerie instantanée chiffrée de bout en bout, éphémère, sans journal sur un serveur.

Passerelle Internet

Fait passer toute ta connexion par un appareil de confiance, par exemple ton PC maison depuis un Wi-Fi public.

Presse-papiers et dossiers

Partage du presse-papiers entre appareils, et synchronisation continue d'un dossier avec GhostSync.

03 — Fonctionnement

Sous le capot

Aucun relais central
Seuls des serveurs STUN publics servent à découvrir ton adresse. Toutes les données circulent directement d'un appareil à l'autre.
Format des paquets
Chaque paquet UDP commence par un en-tête fixe de 43 octets (octets magiques « GM », type de paquet, identifiants de destination et de source, numéro de séquence), suivi de la charge chiffrée et de son étiquette Poly1305.
Chiffrement
Schéma Noise_XX_25519_ChaChaPoly_BLAKE2s : clés Curve25519 éphémères et statiques, chiffrement ChaCha20-Poly1305, hachage BLAKE2s.
Traversée de NAT
STUN pour découvrir l'adresse publique, UPnP pour ouvrir le port UDP 4242, sondes de hole-punching synchronisées et signaux de maintien toutes les 10 secondes.
Routage multi-sauts
Si A ne peut pas joindre C mais que les deux joignent B, B transfère les paquets sans pouvoir les déchiffrer.
Relais de secours
Quand un réseau d'entreprise filtre tout l'UDP sortant, un tunnel de repli passe par le port HTTPS 443.
Réseau virtuel
Une interface virtuelle ghost0 (Wintun, sous Windows) reçoit une adresse du sous-réseau 10.42.0.0/16 : ping, SSH ou partage de fichiers fonctionnent comme sur un réseau local.

04 — Démarrage

Premiers pas

Application de bureau ou binaire en ligne de commande, pour Windows 64 bits.

  1. Sur la machine A : créer une invitation

    ghostmesh-cli invite
  2. Sur la machine B : rejoindre avec le ticket reçu

    ghostmesh-cli join 
  3. Ou lancer un nœud autonome en arrière-plan

    ghostmesh-cli up
  4. Compiler depuis les sources (Rust et Cargo requis)

    git clone https://github.com/NeyorDEV/ghostmesh.git
    cd ghostmesh
    cargo build --release

Télécharger GhostMesh

05 — Commandes

Ligne de commande

ghostmesh keygen
Génère une nouvelle identité cryptographique.
ghostmesh discover
Interroge un serveur STUN pour connaître ton adresse publique.
ghostmesh invite
Génère un ticket d'invitation et attend un appareil (options --port et --ip).
ghostmesh join
Rejoint un appareil et négocie le hole-punching UDP.
ghostmesh send
Envoie un fichier avec GhostDrop.
ghostmesh receive
Reçoit des fichiers GhostDrop (option --dir pour le dossier).
ghostmesh up
Lance un nœud autonome en arrière-plan.

06 — Tableau de bord

L'application de bureau

Indicateurs en direct
Adresse virtuelle (10.42.X.Y/16), adresse publique STUN et identifiant du nœud.
Invitation en un clic
Crée un ticket chiffré gm1_… (clé publique Curve25519 et adresse UDP), affichable en QR code pour un appairage rapide.
Liens actifs
Adresses des appareils connectés, latence en temps réel et état de chaque connexion.
Appareils connus
Les appareils appairés sont enregistrés dans la configuration locale. « Connect » envoie une demande que l'autre accepte ou refuse, « Forget » révoque l'appareil.
Pare-feu par appareil
Autoriser ou bloquer le bureau à distance et GhostDrop, ou marquer un appareil comme invité temporaire.
Démarrage silencieux
Option de lancement avec Windows, réduit dans la zone de notification.
Mises à jour
Une bannière signale les nouvelles versions publiées sur GitHub.

07 — FAQ

Questions fréquentes

Pourquoi mon nœud affiche 0.0.0.0:4242 ?

Le réseau (entreprise ou campus) bloque probablement l'UDP sortant ou la découverte STUN, et le P2P direct a besoin d'UDP. Essaie depuis un partage de connexion 4G ou 5G.

Faut-il ouvrir un port sur ma box ?

Normalement non : GhostMesh négocie l'ouverture du port UDP 4242 par UPnP. Si ta box refuse, redirige ce port UDP vers l'adresse locale de ton PC dans l'interface d'administration de la box.

Pourquoi la connexion échoue avec certains réseaux ?

Le hole-punching fonctionne avec les NAT de type cône. Avec un NAT symétrique, fréquent en entreprise, les ports externes changent à chaque destination : il faut alors une redirection de port ou un relais.

Mes données passent-elles par un serveur ?

Non. Les serveurs STUN publics ne servent qu'à découvrir ton adresse, et les données voyagent directement entre tes appareils, chiffrées de bout en bout.

Comment prendre le contrôle d'un PC à distance ?

Active le Bureau à distance dans les paramètres Windows de l'appareil distant (son compte doit avoir un mot de passe), puis clique sur « Remote Desktop » dans le tableau de bord. GhostMesh lance mstsc vers son adresse virtuelle.

Où sont enregistrés les fichiers reçus avec GhostDrop ?

Dans le dossier Téléchargements, sous GhostMesh-Transfers. Les transferts passent par le port TCP 4243 et reprennent après une coupure.

Le détail de chaque fonction (protocole, routage, GhostDrop, GhostSync) est sur le site de documentation dédié.

Ouvrir la documentation complète ↗ ← Retour aux projets