Todos los proyectos

Blanarch · Producto propio · 2026

Cliente VPN para Android, desde el protocolo

Tres pantallas de Blanarch: conectado con un certificado fijado, conectando mientras lee un código del correo, y conectado en modo oscuro

Blanarch es mi propia app Android para conectarse a gateways FortiGate SSL-VPN con FortiOS 7.6.2 o anterior (la 7.6.3 quitó el modo túnel). Diseñé la arquitectura y escribí la especificación del protocolo y los tests; agentes de Claude Code implementaron sobre eso y yo revisé el resultado. Conecta de punta a punta en un gateway real, incluso con pérdida de red y sesiones vencidas. No está afiliado a Fortinet.

Arquitectura

  • Una interfaz Flutter con el patrón MVVM de la guía oficial de arquitectura de Flutter, con un único lugar donde se conectan las dependencias y tipos Result y Command en vez de excepciones.
  • Un contrato tipado con Pigeon entre Dart y Kotlin: los comandos bajan, los eventos de estado suben, y ambos lados se generan desde un solo archivo.
  • Puertos y adaptadores en el motor Kotlin. La lógica del protocolo es pura y no hace I/O, así que el inicio de sesión, el framing y PPP se prueban sin red.

Motor de conexión

  • Un orquestador con corrutinas que cambia entre los gateways de un perfil y vuelve a entrar con la misma sesión cuando puede.
  • Sin conexión, espera sin gastar reintentos, y vuelve a entrar apenas cambia la red real.
  • Un servicio VPN en primer plano con un acceso en Ajustes rápidos, notificaciones con Reconectar, Desconectar y respuesta del código en línea, VPN siempre activa y túnel dividido.

Seguridad e inicio de sesión

  • Nunca confía en un certificado sin avisar: el usuario confirma su huella SHA-256, que queda fijada para ese host.
  • Las contraseñas se cifran con AES-GCM bajo una clave del Android Keystore, detrás de un bloqueo con biometría o el bloqueo de pantalla.
  • Inicio de sesión con contraseña y código, aprobación push o SAML con un listener local que funciona en cualquier navegador. También puede leer por IMAP los códigos de un solo uso que llegan por correo.
  • Los enlaces y códigos QR de configuración permiten que IT comparta una conexión, y nunca incluyen contraseñas.
  • Flutter
  • Dart
  • Kotlin
  • Coroutines
  • Pigeon
  • Android VpnService