Me mudo a China por un tiempo. y si sabes algo sobre la situación de internet allí, sabes que el Great Firewall bloquea básicamente todo — Google, YouTube, WhatsApp, Twitter, hasta ChatGPT. las apps VPN habituales también se detectan y bloquean bastante rápido
Así que construí el mío propio
Una app de escritorio que te conecta a un servidor proxy con un solo clic. sin archivos de configuración, sin setup manual, sin comandos de terminal. solo haz clic y tu tráfico está encriptado, ofuscado y enrutado a través de un servidor que el firewall no puede distinguir del tráfico web normal
Por qué no usar simplemente un VPN normal
Los VPN comerciales son lo primero que China bloquea. conocen los protocolos, conocen las IPs de los servidores, hacen deep packet inspection en todo. la mayoría de las conexiones VPN se ralentizan o se cortan en segundos
El Great Firewall es en realidad muy sofisticado. no solo bloquea IPs — analiza patrones de tráfico, huellas TLS, temporización de paquetes. si tu conexión no parece navegación web normal, se marca
Así que necesitaba algo que no pareciera un VPN en absoluto
El truco: VLESS + Reality
Aquí es donde se pone interesante. estoy usando el protocolo VLESS con transporte Reality — y Reality hace algo ingenioso
Hace que tu tráfico proxy parezca una conexión HTTPS normal a un sitio web legítimo. en este caso, el handshake TLS imita una conexión a www.microsoft.com en el puerto 443. el firewall ve lo que parece alguien navegando por el sitio de Microsoft. nada sospechoso
La pila de encriptación:
- Reality maneja la encriptación y ofuscación a nivel TLS
- xtls-rprx-vision para control de flujo
- Chrome TLS fingerprint spoofing para coincidir con tráfico real de navegador
- Curve25519 public key crypto para el handshake
VLESS en sí establece la encriptación en "none" porque Reality ya maneja todo en la capa de transporte. sin doble encriptación, sin overhead, sin firma VPN detectable
La stack
- Tauri 2 — framework de app de escritorio (backend Rust, frontend web)
- React 19 + TypeScript — UI frontend
- xray-core — el motor proxy que ejecuta VLESS + Reality
- 3x-ui — panel del lado del servidor para gestionar conexiones
Tauri era la elección obvia. Electron funcionaría pero enviar un Chromium completo para lo que es esencialmente un botón de conectar se sentía excesivo. Tauri me da una app nativa con una huella mínima y un backend Rust que puede lanzar procesos y modificar tablas de enrutamiento del sistema
Cómo funciona
Cuando haces clic en conectar, pasan muchas cosas en unos 2 segundos
Registro automático
La app viene con credenciales para un panel de gestión 3x-ui corriendo en mi servidor. en la primera conexión, genera un UUID para tu dispositivo y se registra como cliente. ningún paso manual necesario
App launch → Generate UUID → Login to panel → Register device → Save identity
Cada conexión posterior solo verifica que el registro siga existiendo. quería cero fricción — especialmente para familiares que también podrían necesitar esto
La cadena 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 corre como proceso hijo. la app escribe una configuración JSON, lanza el binario y consulta el puerto 1080 hasta que el proxy SOCKS5 esté listo. luego le dice a macOS o Windows que enrute todo el tráfico a través de ese proxy local
Integración con el sistema
La parte más complicada no es el proxy — es hacer que el SO coopere
En macOS, la app ejecuta networksetup con privilegios de administrador para configurar el proxy SOCKS del sistema. en Windows, escribe en el registro. ambos requieren elevación de privilegios
La app hace una captura de tu estado de red antes de conectar — gateway por defecto, interfaz, servidores DNS. si la app se cae mientras estás conectado, restaura todo automáticamente en el próximo inicio
Compartir acceso
Esto era importante. no soy el único que necesita esto
La app puede exportar una URI VLESS como código QR. escanéalo con v2rayNG en Android o Streisand en iOS y obtienes la misma conexión. la URI contiene todo — dirección del servidor, UUID, clave pública, configuración de Reality. un escaneo, conectado
Así que puedo configurar mi servidor una vez y compartir acceso con cualquiera que lo necesite. sin explicar cómo funcionan las configs de proxy, sin guiar a la gente por comandos de terminal a través de WeChat
Qué mejoraría
Las credenciales del panel están hardcodeadas. la conexión al panel usa HTTP sin verificación TLS. los archivos de configuración almacenan credenciales en texto plano. para una herramienta personal esto está bien, pero sé que debería arreglar esto antes de compartirlo más ampliamente
El código Rust usa algo de unsafe static mutable state para los handles de procesos. funciona, pero un enfoque Arc/Mutex sería más limpio. a veces entregar gana a la perfección — especialmente cuando tienes un vuelo que tomar
El resultado
Una app de escritorio de 15MB que convierte un VPS de $5/mes en un VPN personal que el Great Firewall no puede detectar. un clic para conectar, un clic para desconectar. el tráfico parece navegación web normal para cualquiera que esté observando
A veces la mejor herramienta es la que nadie tiene que pensar. y cuando estás a punto de perder acceso a la mitad de internet, construyes lo que necesitas
Stay Updated
Get notified about new posts on automation, productivity tips, indie hacking, and web3.
No spam, ever. Unsubscribe anytime.



