# RDP-FIDO-GATE — instalación y configuración (paso a paso)

Escritorio remoto (RDP) seguro con una **barrera obligatoria de llave física FIDO2/WebAuthn**. El puerto RDP
permanece bloqueado por el firewall en todo momento y se abre **solo para tu IP, durante unos 90 segundos**, después de que toques
la llave. Requiere Windows 10 1903+ (WebAuthn + Windows Firewall). No hay servicio alojado — tú lo
descargas e instalas por tu cuenta.

Dos componentes y sus puertos:

| Componente | Dónde se ejecuta | Puertos |
|-----------|---------------|-------|
| **Gate** | máquina de destino (el PC al que te conectas) | **7440/TCP** — control + confirmación FIDO; **3389/TCP** — RDP (se abre bajo demanda) |
| **Client** | tu máquina | conexiones salientes al 7440 y 3389 del host |
| **FIDO Stream** (opcional) | host | **7441/UDP** — vídeo, audio y entrada del modo de baja latencia; se abre por sesión, solo para tu IP |

---

## Step 1. Host — instalar el gate

1. Descarga **[RdpFido-Setup.exe](https://accounts.new-imobile.com/updates/RdpFido-Setup.exe)** en la máquina de destino, ejecútalo y elige **Host** (Windows pedirá confirmación de administrador). Instala el gate; también puedes descargar directamente **[RdpFidoGate-Setup.msi](https://accounts.new-imobile.com/updates/RdpFidoGate-Setup.msi)**.
2. El instalador habilita Remote Desktop (con NLA), vincula un certificado TLS al puerto del gate **7440** y registra e inicia el servicio del gate. El puerto RDP sigue funcionando como antes: se cierra solo al registrar la primera llave.
3. La última página del instalador muestra un **código de registro de un solo uso** (válido 15 minutos, con botón «Copiar código»), además de las direcciones de la máquina y el puerto del gate.
4. **Anota:** la dirección del host (nombre / IP pública), el puerto **7440** y el **código**. Si el código caduca, ejecuta `RdpFidoGate.exe code` como administrador.

Instalación silenciosa (p. ej., desde un sistema de gestión): `msiexec /i RdpFidoGate-Setup.msi /qn`

Desatendida con el instalador combinado: `RdpFido-Setup.exe host`

---

## Step 2. Redirección de puertos del router (si el host está detrás de NAT/un router) — OBLIGATORIO para acceso desde internet

Si te conectas **desde internet** y la máquina de destino está detrás de un router doméstico/de oficina, debes
**redirigir dos puertos** en el router hacia la dirección LAN del host. Sin esto, el cliente no alcanza
ni el gate ni RDP.

Redirige (Port Forwarding / Virtual Servers / NAT en la administración del router):

| Puerto externo | Protocolo | → IP interna (LAN del host) | Puerto interno |
|---------------|----------|--------------------------|---------------|
| **7440** | TCP | `192.168.x.x` (IP LAN del host) | **7440** |
| **3389** | TCP | la misma IP LAN del host | **3389** |
| **7441** | UDP | la misma IP LAN del host | **7441** — solo si usas FIDO Stream desde internet |

Procedimiento:
1. Encuentra la IP LAN del host: `ipconfig` → "Dirección IPv4" (p. ej. `192.168.1.50`).
2. **Reserva esa dirección** para el host (reserva DHCP por MAC en el router) — de lo contrario puede cambiar.
3. En el router: **Port Forwarding / Virtual Servers** → añade las dos reglas de la tabla
   (puerto externo = puerto interno, protocolo TCP, IP interna = LAN del host).
4. Encuentra tu **IP pública** (en el host abre `https://api.ipify.org`, o la "WAN IP" del router). Si tu
   IP es **dinámica**, configura **DDNS** (en el router o mediante no-ip/DuckDNS) y usa el nombre DDNS en lugar de la IP.

> Seguridad: solo el gate (7440) escucha externamente. RDP (3389) está **cerrado** desde fuera hasta que
> confirmes con la llave — entonces se abre de forma estrecha, solo para tu IP, durante ~90s. Redirigir el 3389 no
> concede acceso por sí mismo; solo deja que la "ventana" temporal pase a través del router.

---

## Step 3. Client — instalar y registrar

1. Instala el cliente: ejecuta **[RdpFido-Setup.exe](https://accounts.new-imobile.com/updates/RdpFido-Setup.exe)** y elige **Client** (por usuario, sin derechos de administrador), o directamente **[RdpFidoClient-Setup.msi](https://accounts.new-imobile.com/updates/RdpFidoClient-Setup.msi)**.
2. **Activación** mediante AccountServer: introduce tu correo electrónico → se te envía un código por correo → introdúcelo.
   Periodo de gracia de activación de 14 días; nivel gratuito = hasta 10 sesiones guardadas, de pago = sin límite.
3. **Añadir una sesión:**
   - Dirección: la IP pública o el nombre DDNS del host (del Step 2), o la dirección LAN si estás en la misma red.
   - Puerto del gate: **7440**.
   - Protocolo: **RDP (mstsc)** o **FIDO Stream** — consulta el Step 5.
   - Introduce el **código de un solo uso** del Step 1 y **registra tu llave FIDO2** (toca).

---

## Step 4. Conectar

Elige la sesión → **toca la llave** → el gate la verifica y **abre el 3389 para tu IP actual durante
~90s** → el cliente lanza `mstsc` y te conecta automáticamente. Cada 30s el gate reafirma el
bloqueo, de modo que la ventana permanece estrecha y limitada a tu IP.

---

## Step 5 (opcional). FIDO Stream — modo de baja latencia para juegos y vídeo

FIDO Stream es un segundo modo de conexión junto a RDP: la pantalla y el audio del host y tu entrada viajan por UDP con codificación por hardware, de modo que la latencia «clic a fotón» en una LAN es de unos 25–45 ms. El mismo toque de la llave lo abre; el gate abre el UDP 7441 solo para tu IP y solo durante la sesión. No se instala nada adicional: el agente del host está dentro del gate y el visor dentro del cliente (gate versión 1.15 o más reciente en el host).

1. En la configuración de la sesión elige **Protocolo: FIDO Stream (juegos, baja latencia)**.
2. Deja los ajustes en **Automático** para el primer intento. Qué significan:
   - **Equilibrio** — un control deslizante desde **Conexión mala** (menor resolución, HEVC, más corrección de errores) hasta **PC débiles** (solo codificador por hardware, preajuste más rápido, resolución nativa); **Ajustar el equilibrio automáticamente** lo mueve hacia el cuello de botella actual.
   - **Audio del host** y **Enviar mi micrófono al host** — sonido en ambas direcciones.
   - **Capturar el ratón al iniciar (juegos)** — movimiento relativo del ratón para shooters.
   - **Conexión** — **Automático (atravesar NAT)**, **Este equipo llama al host** (requiere redirigir 7441/UDP al host) o **El host llama a este equipo** (cuando tu PC tiene una dirección pública).
   - **Codificador (host)** — Automático / NVIDIA NVENC (directo) / Hardware (cualquier GPU) / Software (CPU); **Decodificador** — Automático / Hardware (GPU) / Software (CPU).
3. Conéctate como siempre: elige la sesión → toca la llave → se abre la ventana del stream.

Atajos de teclado en la ventana del stream: **Ctrl+Alt+Home** captura/libera el ratón, **Ctrl+Alt+Enter** alterna la pantalla completa, **Ctrl+Alt+End** desconecta.

Requisitos: Windows 10 1903+ en ambos lados; para la menor latencia, una GPU con codificador por hardware en el host (NVIDIA, Intel o AMD). HEVC se usa solo cuando el cliente tiene un decodificador por GPU; de lo contrario el stream vuelve automáticamente a H.264. Diagnóstico en el host (como administrador): `RdpFidoGate.exe stream encoders` lista los codificadores disponibles, `RdpFidoGate.exe stream encoders --bench` mide cada uno, `RdpFidoGate.exe stream selftest` ejecuta captura → codificación → decodificación sin red. Los detalles se escriben en `gate.log` en el host y en `client.log` en el cliente.

---

## Comprobación y resolución de problemas

- Desde el cliente: `Test-NetConnection <public-ip-or-DDNS> -Port 7440` → debería dar
  `TcpTestSucceeded : True`. Si es `False` — el puerto 7440 no está redirigido, o el firewall del host lo bloquea.
- El puerto **3389 está cerrado desde fuera hasta que confirmes con la llave** — eso es lo esperado (no lo pruebes antes del toque).
- "La sesión no se abre": comprueba que 1) el servicio del gate está en ejecución en el host, 2) **ambos** puertos
  están redirigidos en el router a la IP LAN actual del host, 3) la IP pública no ha cambiado (usa DDNS si es dinámica).
- Varios hosts detrás de un router: usa puertos externos distintos (p. ej. host-2 → externo 7441→7440,
  3390→3389) e introduce esos puertos externos en la sesión del cliente.
- FIDO Stream no arranca: el gate del host debe ser de la versión 1.15 o más reciente (el cliente lo indica), y para el acceso desde internet, o bien el 7441/UDP está redirigido al host, o bien la sesión usa **El host llama a este equipo**.

---

## Desinstalación

En el host, como administrador: `powershell -ExecutionPolicy Bypass -File Uninstall-Gate.ps1`
(elimina el servicio, restaura las reglas del firewall). Luego, opcionalmente, elimina las reglas de redirección de puertos en el router.
