# La app de Windows, a fondo

Esta es la inmersión a fondo: cada superficie importante de la app de
Windows, qué controla, sus valores por defecto y cómo arreglarla cuando algo
se rompe. Asume que ya instalaste y conectaste. Si no, empieza por los
[primeros pasos](/docs/getting-started-windows). Para saber cómo funciona la
red detrás de la app, lee la [visión general](/docs/overview).

El cliente de Windows es dos programas con privilegios distintos, un
controlador de kernel para el túnel dividido por aplicación y una interfaz
alineada con la app de macOS. Todo es código abierto en
[github.com/urnetwork/windows](https://github.com/urnetwork/windows).

## Los ajustes de un vistazo

Los valores por defecto te protegen sin configurar nada. Todos los controles
de abajo viven en el panel de conexión, salvo las reglas de división de apps
bajo Ajustes (Settings).

| Ajuste | Valor por defecto | Efecto | Coste principal |
|---|---|---|---|
| Modo de conexión (Connection mode) | Auto | elige las ventanas de proveedores; Auto ejecuta calidad y velocidad juntas | Web o Streaming se estrechan a una ventana |
| Anonimización fuerte (Strong Anonymization) | Activado | oculta tu IP de origen al proveedor | más latencia |
| Cifrado poscuántico (Post Quantum Encryption) | Activado | cifra desde la app hasta el proveedor | descarta los proveedores con los que no puede sellar |
| Kill switch | Desactivado | impide el recurso a la ruta local cuando el túnel está caído | sin tráfico mientras los proveedores fallan |
| IP fija (Fixed IP) | Desactivado | un proveedor, una dirección de salida | sin relevo ante fallos; inactivo en Auto |
| Bloquear anuncios y rastreadores (Block ads and trackers) | Desactivado | filtra el tráfico de anuncios y rastreadores | el filtrado puede romper algunos sitios |
| DNS personalizado (Custom DNS) | DoH cifrado vía túnel | el DNS queda cifrado y dentro del túnel | aflojarlo es el intercambio |
| Compartir conexión (Provide mode) | Desactivado | comparte ancho de banda sobrante como salida para otros | el tráfico de desconocidos sale por tu IP |
| Reglas de división de apps (app split rules) | vacías | las apps listadas esquivan el túnel | su tráfico va sin proteger |
| Reglas de división (dominio/IP) | vacías | los destinos listados usan tu conexión local | ese tráfico va sin proteger |

Salvedades que acompañan a la tabla:

- Desactivar **Anonimización fuerte** es el modo directo: el cliente habla
  directamente con el proveedor y va más rápido, y ese proveedor pasa a ver
  tu dirección real. El valor por defecto protege tu identidad. Gástala a
  propósito.
- Los ajustes de los conmutadores persisten entre modos de conexión. IP fija
  está inactivo hasta que eliges Web o Streaming.
- El kill switch también decide qué pasa con un paquete que el filtro de
  seguridad descarta (ver compartir conexión): activado, se bloquea de
  plano; desactivado, sale por tu ruta normal.
- Eliminar tu cuenta no está en Windows. Hazlo en la
  [app web](https://ur.io/app), que gestiona la misma cuenta.

## Dos procesos, un túnel

La app está dividida en dos programas a propósito:

- **URnetwork.exe.** La app de bandeja WinUI 3 con la que interactúas. Se
  ejecuta sin privilegios, en tu sesión de usuario: un panel emergente desde
  la bandeja del sistema más una ventana completa para conectar, cuenta,
  cartera, clasificación, soporte y ajustes.
- **urnetworkd.** Un servicio de Windows ejecutándose como LocalSystem, la
  cuenta integrada más privilegiada de Windows: el poder necesario para
  crear adaptadores de red y establecer rutas, que la app en la que haces
  clic nunca recibe. Incrusta el SDK de URnetwork, posee el adaptador
  virtual **wintun**, bombea paquetes, aplica rutas, DNS y MTU, y mantiene
  su propio tráfico de control fuera del túnel.

Hablan por dos canales, cada uno con un solo trabajo:

1. **El RPC de dispositivo.** El `DeviceRemote` de la app maneja el
   `DeviceLocal` del servicio por el RPC propio del SDK: un WebSocket TLS
   mutuamente autenticado en loopback. Ambos extremos prueban su identidad
   con certificados y la conexión nunca sale de tu máquina, así que otro
   programa local no puede simplemente conectarse y manejar el servicio.
   Todo lo que haces en la interfaz viaja por este canal: conectar, elegir
   una ubicación, conmutar el compartir.
2. **Una tubería con nombre** (`\\.\pipe\urnetwork.control`). Lleva solo
   ciclo de vida y configuración: arrancar y parar el túnel, aplicar reglas
   de túnel dividido, cerrar sesión. Refleja cómo la app de macOS habla con
   su extensión de red, para que las dos bases de código sigan alineadas.

Por qué la división: un túnel VPN necesita privilegios, y una interfaz nunca
debe tenerlos. Casi toda VPN de Windows son dos programas por esta razón.
Apruebas una solicitud de UAC, al instalar, cuando el servicio se registra.
El uso diario nunca pide administrador.

También significa que tu protección no depende de que la ventana esté
abierta. Cierra la ventana y se oculta en la bandeja. Sal desde el menú de
la bandeja y el túnel sigue arriba, porque el servicio lo posee. Solo
**Desconectar** (Disconnect), un cierre de sesión o parar el servicio lo
tumban.

## La ventana

La navegación recorre Conectar, Cuenta, Cartera, Clasificación, Soporte,
Ajustes (Connect, Account, Wallet, Leaderboard, Support, Settings).

**Conectar** es el globo y el panel debajo. El panel es donde vive la
sesión:

- **Ubicación seleccionada y pares.** Por dónde estás conectado, y cuántos
  proveedores transportan ahora tu tráfico. Haz clic en el recuento de pares
  para abrir la hoja de proveedores conectados: un globo sobre una fila por
  proveedor, con su id de cliente, ciudad/región/país, coordenadas y cuánto
  lleva en tu ventana, más un quitar en línea.
- **Opciones de conexión (Connect options).** El modo de conexión (**Auto**,
  **Web** o **Streaming**: con qué agresividad el cliente cambia número de
  proveedores por rendimiento) y los cuatro conmutadores de la tabla de
  arriba: **IP fija**, **Anonimización fuerte**, **Cifrado poscuántico** y
  el **kill switch** (interruptor de corte).
- Las tarjetas **Estadísticas del cliente** (Client statistics) y
  **Estadísticas locales** (Local statistics), cada una abriendo una hoja de
  detalle: contratos en vivo por un lado, reglas de división y actividad de
  tráfico bloqueado por el otro.
- **DNS personalizado.** Una tarjeta de estado sobre el editor completo de
  resolvedores (abajo).
- **Bloquear anuncios y rastreadores.** Un conmutador.
- **Plan y uso.** Tu nivel, la barra de usado/pendiente/disponible, la cuota
  diaria, las invitaciones, **Obtener UR Pro** (Get UR Pro) y el canje de un
  código de saldo.

**Cuenta** lleva el plan y el uso, los códigos de saldo canjeados, el nombre
de tu red y las invitaciones. **Cartera** cubre tu plan y la vía de mejora,
y los ajustes de cartera para participar en el protocolo UR
([ur.xyz](https://ur.xyz)). Las carteras Bittensor pueden añadirse pero se
registran solo para uso futuro, y la app lo dice donde esperarías que lo
dijera. **Clasificación** ordena las redes proveedoras. **Soporte** envía
comentarios y llega a [feedback.ur.io](https://feedback.ur.io). **Ajustes**
guarda las reglas de división de apps y el cierre de sesión.

Una salvedad a la entrada: la pantalla de inicio de sesión aún ofrece
**Probar modo invitado** (Try Guest Mode). Crea una cuenta corriente y
permanente, pero la app de Windows tira la frase de recuperación que el
servidor devuelve, y aquí no hay inicio de sesión por frase de recuperación.
Añade un correo o una cartera a esa cuenta antes de depender de ella.

## La bandeja

Comportamiento clásico de bandeja Win32, porque WinUI no tiene API de
bandeja propia:

- **Clic izquierdo** abre la ventana posicionada junto al icono de la
  bandeja, estilo panel emergente.
- **Clic derecho** da un menú con conectar/desconectar, mostrar y salir.
- **Cuatro estados de icono** reflejan la matriz de la barra de menús de
  macOS (conectado o no, compartiendo o no), cada uno con arte claro y
  oscuro, cambiado para casar con el tema de tu barra de tareas.

## Elegir proveedores, y qué significa

El selector de ubicación es la propia agrupación del SDK: primero los pares
de tu red conectados, luego el mejor disponible, luego **países** con
recuentos de proveedores en vivo. Teclea en la caja de búsqueda y los
resultados se reorganizan en mejores coincidencias más **regiones**,
**ciudades** y **dispositivos**. La puntería es de nivel ciudad; a una
ciudad se llega buscándola, no desplazándose hasta ella.

Dos protecciones respaldan cada sesión retransmitida, y ninguna necesita
tocar un ajuste. El proveedor que saca tu tráfico a internet nunca sabe
quién eres, porque el operador se interpone. El operador no puede leer los
paquetes que reenvía, porque el Cifrado poscuántico sella la sesión de
extremo a extremo hasta el proveedor por defecto. Juntas, ninguna parte por
sí sola reúne tu identidad y tu actividad. La ruta completa, incluido el
tramo del extensor que lleva tu sesión cifrada hasta el operador, está en la
[visión general](/docs/overview).

| Modo | El operador ve | El proveedor ve | Valor por defecto y disponibilidad |
|---|---|---|---|
| **Retransmitido sellado** | cuenta y conexión de origen, asociación con proveedores, texto cifrado con tiempo y volumen | los destinos que saca a internet, un id de dispositivo/contrato, **no** tu IP real | el valor de fábrica: Cifrado poscuántico activado en el panel |
| **Retransmitido estándar** | cuenta y conexión de origen, asociación con proveedores, destinos interiores y bytes de los paquetes | los destinos que saca a internet, un id de dispositivo/contrato, **no** tu IP real | opcional: desactiva el Cifrado poscuántico |
| **Directo** | menos intervención en la retransmisión | **tu IP real** y los destinos que saca a internet | opcional: desactiva Anonimización fuerte |

El [modelo de amenazas](/docs/threat-model) trabaja estas filas frente a
adversarios con nombre y es explícito sobre dónde falla cada una.

En **Auto** corren dos ventanas de proveedores en paralelo, así que el
tráfico sale típicamente por 3–8 proveedores a la vez, con cada sitio fijado
a uno. Un proveedor concreto solo ve una porción de tu sesión. Web y
Streaming ejecutan una ventana cada uno, más estrecha. **IP fija** la
colapsa a un proveedor y una dirección de salida.

## Túnel dividido por aplicación y el controlador

"Deja que esta app esquive la VPN", para que un juego conserve su ping más
bajo o una app bancaria hostil a las VPN se quede en tu conexión normal, no
puede hacerse bien desde el espacio de usuario en Windows. La decisión de
redirección tiene que ocurrir donde se crea el socket, dentro de la pila de
red. Así que la app incluye **SplitTunnel.sys**, un controlador callout de
la Windows Filtering Platform (WFP):

- **De sala limpia.** Implementado desde primeros principios contra la
  documentación de Microsoft y las especificaciones públicas, no derivado
  del controlador de otro fabricante.
- **Con licencia MPL-2.0**, desarrollado en el mismo repositorio abierto que
  la app.
- **Basado en procesos, nunca en destinos.** El controlador registra
  exactamente un callout, en la capa de redirección de bind de Windows.
  Cuando cualquier proceso abre un socket, el controlador compara la ruta
  del ejecutable de ese proceso con tu lista de exclusión y, si coincide,
  reescribe la dirección local del socket a la interfaz física, de modo que
  el flujo sale por tu conexión normal. No lee ninguna dirección remota en
  absoluto. El servicio exime su propio tráfico por id de proceso.
- **Los procesos hijos heredan.** Los procesos auxiliares de un lanzador
  siguen a la app que excluiste.
- **Falla en abierto, nunca en agujero negro.** Si no hay interfaz física
  establecida, la redirección queda inerte en lugar de descartar tráfico.

Gestiona la lista en **Ajustes → reglas de división de apps**. Tres límites.
Los sockets que un proceso ya tenía abiertos conservan su ruta hasta que
reconectan. Las consultas DNS de una app excluida siguen pasando por el
servicio de resolución compartido de Windows, así que pueden seguir el túnel
aunque la app no lo haga. Y el controlador es una opción de compilación: un
MSI empaquetado sin él instala un túnel funcional sin reglas por app.

Aparte, la **hoja de reglas de división** del panel de conexión hace reglas
de nivel dominio e IP a través del propio túnel, la misma superficie que
tienen las apps de Apple y Linux. Las dos se componen: el controlador decide
por app, las reglas deciden por destino.

## Mantener al servicio fuera de su propio túnel

Un proceso de túnel tiene un problema de arranque: su propio tráfico hacia
la plataforma no debe pasar por el túnel que crea, o el primer paquete da
vueltas para siempre. El servicio lo resuelve en la capa de sockets. El SDK
expone un gancho de enlace de salida, y el servicio fija sus propios sockets
de control y retransmisión a la interfaz física, siguiendo a un monitor de
salida que recalcula la interfaz correcta en cada cambio de red (de Wi-Fi a
Ethernet, adaptadores que aparecen y desaparecen).

## Rutas y DNS

Cuando el túnel se levanta, el servicio no borra tu ruta por defecto. La
supera en la puja: todo el espacio IPv4 **excepto** los rangos de LAN
privados (10.0.0.0/8, 172.16.0.0/12, 192.168.0.0/16) se instala como un
conjunto de rutas más específicas a través del adaptador del túnel. Ganan a
tu ruta por defecto existente sin tocarla, el desmontaje es solo quitarlas,
y tu impresora y tu NAS siguen funcionando en local. El adaptador del túnel
recibe su dirección y una MTU de 1440 del SDK, y los resolvedores de la red
se establecen en ese adaptador.

Tres límites que puedes exigirle a la app:

- **El DNS se establece por adaptador, y Windows resuelve por adaptador.**
  Los ajustes de DNS propios de la app (la hoja de DNS personalizado, cuyo
  valor por defecto es DNS-sobre-HTTPS cifrado resuelto por el túnel) son la
  protección significativa aquí. Si usas una configuración de resolvedores
  inusual, comprueba adónde van de verdad tus consultas.
- **El túnel transporta IPv4.** IPv6 no se enruta por él hoy, así que en una
  red con IPv6 un sitio capaz de v6 aún puede ver tu dirección real. Si
  necesitas que todo salga por un proveedor, desactiva IPv6 en la conexión.
- **Fallar cerrado es un interruptor, no una suposición.** Deja el kill
  switch desactivado y un túnel parado significa que Windows recurre a tu
  conexión normal. Actívalo y el tráfico se detiene. Es la primitiva
  `SetRouteLocal` del SDK invertida, la misma que enlaza toda app de
  URnetwork, y sale desactivada de fábrica.

## DNS personalizado

El mismo panel de resolvedores multiplataforma que tienen las apps de Apple
y Linux. El valor por defecto es la opción más estricta: DNS cifrado sobre
HTTPS, resuelto a través del túnel. Puedes hacer el intercambio a propósito:
DoH o sin cifrar, resuelto en remoto o en local, con listas de servidores
editables, un interruptor de respaldo de DNS local que hace competir a un
resolvedor local mientras el túnel arranca para que las consultas no se
atasquen, y una acción para restaurar los valores seguros.

## Compartir conexión

Compartir está desactivado por defecto y vive en el panel de conexión:
**Auto**, **Siempre** (Always), **Red** (Network, solo los dispositivos de
tu propia cuenta) o **Nunca** (Never). Los proveedores participan en el
protocolo UR; [ur.xyz](https://ur.xyz) documenta cómo funcionan las
recompensas.

Lo que te protege cuando compartes es la capa `ip_security` de código
abierto del motor connect. Inspecciona el tráfico en tu propia salida y
descarta el tráfico de clase DMCA (firmas con seguimiento de estado de
BitTorrent e intercambio de archivos, descartes de protocolo opaco) y el de
clase CFAA (patrones de ataque e intrusión) antes de que salga por tu
conexión. Una coincidencia es un paquete descartado, sin destino, dominio ni
contenidos registrados. Una firma de BitTorrent en claro sobre tráfico que
transportas para otro envía además al operador una señal de abuso con el id
de dispositivo del par y un booleano, nada más, y el operador no incluye hoy
ningún gestor para ella. El mismo filtro corre sobre tu propia ruta de envío
compartas o no, y tu propio tráfico nunca se reporta. El sellado no esquiva
el filtro, porque corre donde el tráfico sale. La
[visión general](/docs/overview) cubre la capa al completo.

## Qué hace de verdad el Cifrado poscuántico

Tu cliente sella el tráfico de extremo a extremo hasta el proveedor sobre
una sesión negociada con **X25519MLKEM768** (híbrido clásico más ML-KEM).
Ese tramo sellado es lo que ciega al salto de en medio: el operador
transporta bytes que no puede leer. Está activado por defecto y falla en
cerrado: mientras está activado, el cliente no envía ni acepta datos de
aplicación en claro, así que un proveedor con el que no consigue establecer
una sesión sellada queda descartado en vez de usarse sin sellar. Toda
compilación actual de proveedor habilita el lado que responde, así que en la
práctica el sellado es automático. El coste es de disponibilidad, no de
confidencialidad: puedes perder un proveedor, nunca tu cifrado, y no hay
degradación silenciosa. Desactiva el ajuste y el tráfico podrá volver a
tomar la ruta TLS-hasta-plataforma estándar. Las firmas de identidad siguen
siendo Ed25519 y el cifrado es AES-256-GCM. "Poscuántico" significa este
intercambio de claves, nada más amplio.

Límite: la app de Windows no tiene panel de inspección de identidad. No hay
huella de clave que comparar fuera de banda, ni veredicto por conexión que
te diga si esta sesión selló. La hoja de proveedores conectados es la
superficie más cercana.

## Firma y actualizaciones

- **Windows 10 21H2 o posterior y Windows 11**, x64 y ARM64, como MSI por
  máquina desde la página de versiones. ARM64 es una compilación nativa, no
  emulación.
- **App, servicio e instalador** van firmados con Authenticode.
- **El controlador** necesita más: un certificado EV más la firma de
  atestación de Microsoft. Windows solo carga controladores firmados por
  atestación, así que es la puerta de carga, no ceremonia.
- **El controlador viaja dentro del MSI.** Nada se descarga en tiempo de
  ejecución; lo que contiene el instalador es lo que corre. Las dependencias
  de terceros fijadas (wintun) se verifican por hash y firmante original
  antes de empaquetar.
- **Las actualizaciones son trabajo del servicio, no de la Store.** La
  Microsoft Store no empuja actualizaciones para fichas EXE/MSI, y un
  paquete MSIX (el tipo que la Store sí autoactualiza) no puede llevar
  limpiamente un controlador de kernel. Así que la vía de actualización pasa
  por `urnetworkd`: descargar, verificar la firma, cambiar los binarios. Sin
  solicitud de UAC por actualización, y los arreglos de seguridad no esperan
  a la revisión de la tienda. Windows también protege este patrón: un
  binario de servicio solo puede reemplazarse cuando el viejo y el nuevo
  están firmados por el mismo editor.

## Resolución de problemas

### La app dice que no puede alcanzar el servicio

El túnel vive en `urnetworkd`. Comprueba que está en marcha en **Servicios**
(Services, o `sc query urnetworkd`); está registrado para arrancar
automáticamente y reiniciarse dos veces ante un fallo. Si está parado y no
arranca, reinstala el MSI, que vuelve a registrar el servicio.

### Conectado, pero una app concreta no tiene internet

Revisa **Ajustes → reglas de división de apps**. Una app en la lista de
exclusión esquiva el túnel por diseño, y si excluiste algo que luego no pudo
alcanzar un servicio por tu conexión normal, esa es la regla funcionando.
Los cambios surten efecto en la siguiente conexión de esa app, porque los
sockets ya abiertos conservan su ruta, así que reinicia la app.

### El túnel dividido por aplicación no está disponible

El controlador es una característica opcional del instalador. Vuelve a
ejecutar el MSI y asegúrate de que la característica de túnel dividido está
seleccionada. Los controladores de kernel además requieren la compilación
firmada por atestación; un controlador compilado por ti no cargará en una
máquina que no esté en modo de firma de pruebas.

### Los sitios siguen viendo mi dirección real

Casi siempre IPv6. El túnel transporta IPv4 hoy; desactiva IPv6 en el
adaptador de red y vuelve a probar. Lo segundo más probable: una ruta de DNS
por adaptador, que el valor por defecto de la hoja de DNS personalizado (DoH
por el túnel) está diseñado para cerrar.

### El tráfico se atasca tras cambiar de red

Moverse entre Wi-Fi y Ethernet cambia a qué interfaz debe fijar el servicio
sus propios sockets. Lo vigila y recalcula, pero si una sesión queda
atascada, desconéctate y reconéctate para reconstruir en limpio.

### No pasa nada cuando salgo

Ese es el diseño: salir de la app de la bandeja deja el túnel funcionando en
el servicio. Usa **Desconectar**.

## En otros lugares

La [visión general](/docs/overview) explica la red de extremo a extremo:
proveedores, contratos, lo que cada parte puede ver y no ver, y el cifrado.
Las [preguntas frecuentes](/docs/faq) responden las dudas comunes. Otras
plataformas: [Android](/docs/getting-started-android),
[iOS](/docs/getting-started-ios), [macOS](/docs/getting-started-macos),
[Linux](/docs/getting-started-linux) y el
[navegador](/docs/getting-started-browser).
