Je déménage en Chine pour un moment. et si tu connais un peu la situation d'internet là-bas, tu sais que le Great Firewall bloque pratiquement tout — Google, YouTube, WhatsApp, Twitter, même ChatGPT. les applis VPN classiques se font détecter et bloquer assez rapidement aussi
Alors j'ai construit le mien
Une app desktop qui te connecte à un serveur proxy en un clic. pas de fichiers de config, pas d'installation manuelle, pas de commandes terminal. juste un clic et ton trafic est chiffré, obfusqué et routé à travers un serveur que le pare-feu ne peut pas distinguer du trafic web normal
Pourquoi ne pas simplement utiliser un VPN classique
Les VPN commerciaux sont la première chose que la Chine bloque. ils connaissent les protocoles, ils connaissent les IP des serveurs, ils font du deep packet inspection sur tout. la plupart des connexions VPN sont ralenties ou coupées en quelques secondes
Le Great Firewall est en fait vraiment sophistiqué. il ne se contente pas de bloquer des IP — il analyse les patterns de trafic, les empreintes TLS, le timing des paquets. si ta connexion ne ressemble pas à de la navigation web normale, elle est signalée
Donc j'avais besoin de quelque chose qui ne ressemble pas du tout à un VPN
L'astuce : VLESS + Reality
C'est là que ça devient intéressant. j'utilise le protocole VLESS avec le transport Reality — et Reality fait quelque chose de malin
Il fait ressembler ton trafic proxy à une connexion HTTPS normale vers un site web légitime. dans ce cas, le handshake TLS imite une connexion à www.microsoft.com sur le port 443. le pare-feu voit ce qui ressemble à quelqu'un qui navigue sur le site de Microsoft. rien de suspect
La pile de chiffrement :
- Reality gère le chiffrement et l'obfuscation au niveau TLS
- xtls-rprx-vision pour le contrôle de flux
- Chrome TLS fingerprint spoofing pour correspondre au vrai trafic navigateur
- Curve25519 public key crypto pour le handshake
VLESS lui-même met le chiffrement à "none" parce que Reality gère déjà tout au niveau transport. pas de double chiffrement, pas d'overhead, pas de signature VPN détectable
La stack
- Tauri 2 — framework d'app desktop (backend Rust, frontend web)
- React 19 + TypeScript — UI frontend
- xray-core — le moteur proxy qui fait tourner VLESS + Reality
- 3x-ui — panneau côté serveur pour gérer les connexions
Tauri était le choix évident. Electron marcherait mais embarquer un Chromium complet pour ce qui est essentiellement un bouton de connexion semblait excessif. Tauri me donne une app native avec une empreinte minuscule et un backend Rust qui peut lancer des processus et modifier les tables de routage système
Comment ça marche
Quand tu cliques sur connecter, il se passe beaucoup de choses en environ 2 secondes
Enregistrement automatique
L'app est livrée avec des identifiants pour un panneau de gestion 3x-ui qui tourne sur mon serveur. à la première connexion, elle génère un UUID pour ton appareil et s'enregistre comme client. aucune étape manuelle nécessaire
App launch → Generate UUID → Login to panel → Register device → Save identity
Chaque connexion suivante vérifie juste que l'enregistrement existe toujours. je voulais zéro friction — surtout pour les membres de ma famille qui pourraient en avoir besoin aussi
La chaîne de proxy
Your browser→ System SOCKS proxy (127.0.0.1:1080)→ xray-core (local process)→ VLESS + Reality encrypted tunnel (TCP:443)→ Remote server (outside China)→ Internet
xray-core tourne comme processus enfant. l'app écrit une config JSON, lance le binaire et interroge le port 1080 jusqu'à ce que le proxy SOCKS5 soit prêt. ensuite elle dit à macOS ou Windows de router tout le trafic à travers ce proxy local
Intégration système
La partie la plus délicate n'est pas le proxy — c'est de faire coopérer l'OS
Sur macOS, l'app exécute networksetup avec des privilèges admin pour configurer le proxy SOCKS système. sur Windows, elle écrit dans le registre. les deux nécessitent une élévation de privilèges
L'app fait un snapshot de ton état réseau avant de se connecter — passerelle par défaut, interface, serveurs DNS. si l'app plante pendant que tu es connecté, elle restaure tout automatiquement au prochain lancement
Partager l'accès
C'était important. je ne suis pas le seul à avoir besoin de ça
L'app peut exporter une URI VLESS sous forme de QR code. scanne-le avec v2rayNG sur Android ou Streisand sur iOS et tu obtiens la même connexion. l'URI contient tout — adresse du serveur, UUID, clé publique, paramètres Reality. un scan, connecté
Donc je peux configurer mon serveur une fois et partager l'accès avec quiconque en a besoin. pas besoin d'expliquer comment marchent les configs proxy, pas besoin de guider les gens à travers des commandes terminal sur WeChat
Ce que j'améliorerais
Les identifiants du panneau sont en dur. la connexion au panneau utilise HTTP sans vérification TLS. les fichiers de config stockent les identifiants en clair. pour un outil personnel c'est OK, mais je sais que je devrais corriger ça avant de le partager plus largement
Le code Rust utilise du unsafe static mutable state pour les handles de processus. ça marche, mais une approche Arc/Mutex serait plus propre. parfois livrer bat la perfection — surtout quand tu as un avion à prendre
Le résultat
Une app desktop de 15MB qui transforme un VPS à 5$/mois en un VPN personnel que le Great Firewall ne peut pas détecter. un clic pour se connecter, un clic pour se déconnecter. le trafic ressemble à de la navigation web normale pour quiconque observe
Parfois le meilleur outil est celui auquel personne n'a besoin de penser. et quand tu es sur le point de perdre l'accès à la moitié d'internet, tu construis ce dont tu as besoin
Stay Updated
Get notified about new posts on automation, productivity tips, indie hacking, and web3.
No spam, ever. Unsubscribe anytime.



