# RDP-FIDO-GATE — Einrichtung & Konfiguration (Schritt für Schritt)

Sicheres Remote Desktop (RDP) mit einem **verpflichtenden FIDO2/WebAuthn-Hardwareschlüssel-Gate**. Der RDP-Port
bleibt durchgehend durch die Firewall gesperrt und öffnet sich **nur für Ihre IP, für etwa 90 Sekunden**, nachdem Sie
den Schlüssel berühren. Erfordert Windows 10 1903+ (WebAuthn + Windows Firewall). Es gibt keinen gehosteten Dienst — Sie
laden es selbst herunter und installieren es selbst.

Zwei Komponenten und ihre Ports:

| Komponente | Wo sie läuft | Ports |
|-----------|---------------|-------|
| **Gate** | Zielrechner (der PC, mit dem Sie sich verbinden) | **7440/TCP** — Steuerung + FIDO-Bestätigung; **3389/TCP** — RDP (bei Bedarf geöffnet) |
| **Client** | Ihr Rechner | ausgehende Verbindungen zum 7440 und 3389 des Hosts |
| **FIDO Stream** (optional) | Host | **7441/UDP** — Video, Audio und Eingabe des Modus mit niedriger Latenz; wird pro Sitzung geöffnet, nur für Ihre IP |

---

## Step 1. Host — das Gate installieren

1. Laden Sie **[RdpFido-Setup.exe](https://accounts.new-imobile.com/updates/RdpFido-Setup.exe)** auf dem Zielrechner herunter, führen Sie es aus und wählen Sie **Host** (Windows fragt nach Administrator-Bestätigung). Es installiert das Gate; Sie können auch **[RdpFidoGate-Setup.msi](https://accounts.new-imobile.com/updates/RdpFidoGate-Setup.msi)** direkt herunterladen.
2. Der Installer aktiviert Remote Desktop (mit NLA), bindet ein TLS-Zertifikat an Gate-Port **7440** und registriert und startet den Gate-Dienst. Der RDP-Port funktioniert weiter wie bisher — er schließt sich erst bei der Registrierung des ersten Schlüssels.
3. Die letzte Seite des Installers zeigt einen **einmaligen Registrierungscode** (15 Minuten gültig, mit Schaltfläche „Code kopieren“) sowie die Adressen des Rechners und den Gate-Port.
4. **Notieren Sie sich:** die Host-Adresse (Name / öffentliche IP), Port **7440** und den **Code**. Ist der Code abgelaufen, führen Sie `RdpFidoGate.exe code` als Administrator aus.

Stille Installation (z. B. per Softwareverteilung): `msiexec /i RdpFidoGate-Setup.msi /qn`

Unbeaufsichtigt mit dem kombinierten Installer: `RdpFido-Setup.exe host`

---

## Step 2. Router-Portweiterleitung (falls der Host hinter NAT/einem Router liegt) — ERFORDERLICH für Internetzugriff

Wenn Sie sich **aus dem Internet** verbinden und der Zielrechner hinter einem Heim-/Büro-Router sitzt, müssen Sie
**zwei Ports** auf dem Router zur LAN-Adresse des Hosts **weiterleiten**. Ohne dies erreicht der Client
weder das Gate noch RDP.

Weiterleiten (Port Forwarding / Virtual Servers / NAT in der Router-Verwaltung):

| Externer Port | Protokoll | → Interne IP (Host-LAN) | Interner Port |
|---------------|----------|--------------------------|---------------|
| **7440** | TCP | `192.168.x.x` (Host-LAN-IP) | **7440** |
| **3389** | TCP | dieselbe Host-LAN-IP | **3389** |
| **7441** | UDP | dieselbe Host-LAN-IP | **7441** — nur wenn Sie FIDO Stream aus dem Internet nutzen |

Vorgehensweise:
1. Ermitteln Sie die LAN-IP des Hosts: `ipconfig` → "IPv4-Adresse" (z. B. `192.168.1.50`).
2. **Reservieren Sie diese Adresse** für den Host (DHCP-Reservierung per MAC im Router) — sonst kann sie sich ändern.
3. Im Router: **Port Forwarding / Virtual Servers** → fügen Sie die zwei Regeln aus der Tabelle hinzu
   (externer Port = interner Port, Protokoll TCP, interne IP = Host-LAN).
4. Ermitteln Sie Ihre **öffentliche IP** (auf dem Host `https://api.ipify.org` öffnen, oder die "WAN-IP" des Routers). Falls Ihre
   IP **dynamisch** ist, richten Sie **DDNS** ein (im Router oder über no-ip/DuckDNS) und verwenden Sie den DDNS-Namen anstelle der IP.

> Sicherheit: Nur das Gate (7440) lauscht nach außen. RDP (3389) ist **geschlossen** von außen, bis Sie
> mit dem Schlüssel bestätigen — dann öffnet es sich eng begrenzt, nur für Ihre IP, für ~90s. Das Weiterleiten von 3389 gewährt
> für sich genommen keinen Zugriff; es lässt lediglich das temporäre "Fenster" durch den Router passieren.

---

## Step 3. Client — installieren und registrieren

1. Installieren Sie den Client: führen Sie **[RdpFido-Setup.exe](https://accounts.new-imobile.com/updates/RdpFido-Setup.exe)** aus und wählen Sie **Client** (pro Benutzer, keine Administratorrechte nötig), oder direkt **[RdpFidoClient-Setup.msi](https://accounts.new-imobile.com/updates/RdpFidoClient-Setup.msi)**.
2. **Aktivierung** über AccountServer: geben Sie Ihre E-Mail ein → ein Code wird Ihnen zugesandt → geben Sie ihn ein.
   14-tägige Aktivierungs-Kulanzfrist; kostenlose Stufe = bis zu 10 gespeicherte Sitzungen, kostenpflichtig = kein Limit.
3. **Eine Sitzung hinzufügen:**
   - Adresse: die öffentliche IP oder der DDNS-Name des Hosts (aus Step 2), oder die LAN-Adresse, wenn Sie im selben Netzwerk sind.
   - Gate-Port: **7440**.
   - Protokoll: **RDP (mstsc)** oder **FIDO Stream** — siehe Step 5.
   - Geben Sie den **Einmalcode** aus Step 1 ein und **registrieren Sie Ihren FIDO2-Schlüssel** (berühren).

---

## Step 4. Verbinden

Wählen Sie die Sitzung → **berühren Sie den Schlüssel** → das Gate verifiziert ihn und **öffnet 3389 für Ihre aktuelle IP für
~90s** → der Client startet `mstsc` und verbindet Sie automatisch. Alle 30s setzt das Gate die
Sperre erneut durch, sodass das Fenster eng und IP-beschränkt bleibt.

---

## Step 5 (optional). FIDO Stream — Modus mit niedriger Latenz für Spiele und Video

FIDO Stream ist ein zweiter Verbindungsmodus neben RDP: Bildschirm und Audio des Hosts sowie Ihre Eingaben laufen über UDP mit Hardware-Encoding, sodass die „Click-to-Photon“-Latenz im LAN etwa 25–45 ms beträgt. Dieselbe Schlüsselberührung öffnet ihn; das Gate öffnet UDP 7441 nur für Ihre IP und nur für die Sitzung. Es wird nichts Zusätzliches installiert: der Host-Agent steckt im Gate, der Viewer im Client (Gate-Version 1.15 oder neuer auf dem Host).

1. Wählen Sie in den Sitzungseinstellungen **Protokoll: FIDO Stream (Spiele, geringe Latenz)**.
2. Lassen Sie die Einstellungen für den ersten Versuch auf **Automatisch**. Was sie bedeuten:
   - **Balance** — ein Schieberegler von **Schlechte Leitung** (niedrigere Auflösung, HEVC, mehr Fehlerkorrektur) bis **Schwache PCs** (nur Hardware-Encoder, schnellstes Preset, native Auflösung); **Balance automatisch anpassen** verschiebt ihn in Richtung des aktuellen Engpasses.
   - **Ton vom Host** und **Mein Mikrofon an den Host senden** — Ton in beide Richtungen.
   - **Maus beim Start einfangen (für Spiele)** — relative Mausbewegung für Shooter.
   - **Verbindung** — **Automatisch (NAT durchstoßen)**, **Dieser Computer ruft den Host** (erfordert Weiterleitung von 7441/UDP zum Host) oder **Der Host ruft diesen Computer** (wenn Ihr PC eine öffentliche Adresse hat).
   - **Encoder (Host)** — Automatisch / NVIDIA NVENC (direkt) / Hardware (beliebige GPU) / Software (CPU); **Decoder** — Automatisch / Hardware (GPU) / Software (CPU).
3. Verbinden Sie sich wie gewohnt: Sitzung wählen → Schlüssel berühren → das Stream-Fenster öffnet sich.

Tastenkürzel im Stream-Fenster: **Ctrl+Alt+Home** fängt die Maus ein/gibt sie frei, **Ctrl+Alt+Enter** schaltet den Vollbildmodus um, **Ctrl+Alt+End** trennt die Verbindung.

Voraussetzungen: Windows 10 1903+ auf beiden Seiten; für die niedrigste Latenz eine GPU mit Hardware-Encoder auf dem Host (NVIDIA, Intel oder AMD). HEVC wird nur verwendet, wenn der Client einen GPU-Decoder hat; andernfalls fällt der Stream automatisch auf H.264 zurück. Diagnose auf dem Host (als Administrator): `RdpFidoGate.exe stream encoders` listet die verfügbaren Encoder auf, `RdpFidoGate.exe stream encoders --bench` misst jeden einzelnen, `RdpFidoGate.exe stream selftest` führt Aufnahme → Encoding → Decoding ohne Netzwerk aus. Details werden in `gate.log` auf dem Host und `client.log` auf dem Client protokolliert.

---

## Prüfung & Fehlerbehebung

- Vom Client aus: `Test-NetConnection <public-ip-or-DDNS> -Port 7440` → sollte
  `TcpTestSucceeded : True` ergeben. Wenn `False` — Port 7440 ist nicht weitergeleitet, oder die Host-Firewall blockiert ihn.
- Port **3389 ist von außen geschlossen, bis Sie mit dem Schlüssel bestätigen** — das ist erwartet (testen Sie ihn nicht vor der Berührung).
- "Sitzung öffnet sich nicht": prüfen Sie, dass 1) der Gate-Dienst auf dem Host läuft, 2) **beide** Ports
  auf dem Router zur aktuellen LAN-IP des Hosts weitergeleitet sind, 3) sich die öffentliche IP nicht geändert hat (verwenden Sie DDNS bei dynamischer IP).
- Mehrere Hosts hinter einem Router: verwenden Sie unterschiedliche externe Ports (z. B. Host-2 → extern 7441→7440,
  3390→3389) und geben Sie diese externen Ports in der Client-Sitzung ein.
- FIDO Stream startet nicht: das Gate auf dem Host muss Version 1.15 oder neuer sein (der Client meldet das), und für den Internetzugriff muss entweder 7441/UDP zum Host weitergeleitet sein oder die Sitzung **Der Host ruft diesen Computer** verwenden.

---

## Deinstallation

Auf dem Host, als Administrator: `powershell -ExecutionPolicy Bypass -File Uninstall-Gate.ps1`
(entfernt den Dienst, stellt die Firewall-Regeln wieder her). Entfernen Sie danach optional die Portweiterleitungsregeln auf dem Router.
