# RDP-FIDO-GATE — الإعداد والتهيئة (خطوة بخطوة)

سطح مكتب بعيد (RDP) آمن مع **بوابة إلزامية بمفتاح عتاد FIDO2/WebAuthn**. يبقى منفذ RDP
محجوباً بجدار الحماية في جميع الأوقات، ويُفتح **فقط لعنوان IP الخاص بك، ولمدة نحو 90 ثانية**، بعد أن تلمس
المفتاح. يتطلب Windows 10 1903+ (WebAuthn + Windows Firewall). لا توجد خدمة مستضافة — بل تقوم أنت
بتنزيله وتثبيته بنفسك.

المكوّنان ومنافذهما:

| المكوّن | مكان تشغيله | المنافذ |
|-----------|---------------|-------|
| **Gate** | الجهاز الهدف (الحاسوب الذي تتصل به) | **7440/TCP** — التحكم + تأكيد FIDO؛ **3389/TCP** — RDP (يُفتح عند الطلب) |
| **Client** | جهازك | اتصالات صادرة إلى المنفذين 7440 و3389 على المضيف |
| **FIDO Stream** (اختياري) | المضيف | **7441/UDP** — الفيديو والصوت والإدخال لوضع زمن الاستجابة المنخفض؛ يُفتح لكل جلسة، ولعنوان IP الخاص بك فقط |

---

## Step 1. Host — تثبيت البوابة

1. نزّل **[RdpFido-Setup.exe](https://accounts.new-imobile.com/updates/RdpFido-Setup.exe)** على الجهاز الهدف، وشغّله واختر **Host** (سيطلب Windows تأكيد المسؤول). يقوم بتثبيت البوابة؛ ويمكنك أيضاً تنزيل **[RdpFidoGate-Setup.msi](https://accounts.new-imobile.com/updates/RdpFidoGate-Setup.msi)** مباشرةً.
2. يقوم المثبّت بتمكين Remote Desktop (مع NLA)، ويربط شهادة TLS بمنفذ البوابة **7440**، ويسجّل خدمة البوابة ويشغّلها. يستمر منفذ RDP في العمل كما كان — ولا يُغلق إلا عند تسجيل المفتاح الأول.
3. تعرض الصفحة الأخيرة من المثبّت **رمز تسجيل المفتاح لمرة واحدة** (صالح لمدة 15 دقيقة، مع زر «نسخ الرمز»)، بالإضافة إلى عناوين الجهاز ومنفذ البوابة.
4. **دوّن:** عنوان المضيف (الاسم / IP العام)، والمنفذ **7440**، و**الرمز**. إذا انتهت صلاحية الرمز، شغّل `RdpFidoGate.exe code` كمسؤول.

التثبيت الصامت (مثلاً من نظام إدارة): `msiexec /i RdpFidoGate-Setup.msi /qn`

التثبيت غير التفاعلي بالمثبّت المدمج: `RdpFido-Setup.exe host`

---

## Step 2. توجيه المنافذ في الموجّه (إذا كان المضيف خلف NAT/موجّه) — مطلوب للوصول عبر الإنترنت

إذا كنت تتصل **من الإنترنت** وكان الجهاز الهدف خلف موجّه منزلي/مكتبي، فيجب عليك
**توجيه منفذين** على الموجّه إلى عنوان LAN الخاص بالمضيف. بدون ذلك لن يصل العميل
لا إلى البوابة ولا إلى RDP.

وجّه (Port Forwarding / Virtual Servers / NAT في إدارة الموجّه):

| المنفذ الخارجي | البروتوكول | ← IP الداخلي (LAN المضيف) | المنفذ الداخلي |
|---------------|----------|--------------------------|---------------|
| **7440** | TCP | `192.168.x.x` (IP الخاص بشبكة LAN للمضيف) | **7440** |
| **3389** | TCP | نفس IP شبكة LAN للمضيف | **3389** |
| **7441** | UDP | نفس IP شبكة LAN للمضيف | **7441** — فقط إذا كنت تستخدم FIDO Stream من الإنترنت |

الإجراء:
1. اعثر على IP شبكة LAN للمضيف: `ipconfig` ← "IPv4 Address" (مثلاً `192.168.1.50`).
2. **احجز ذلك العنوان** للمضيف (حجز DHCP حسب MAC في الموجّه) — وإلا فقد يتغيّر.
3. في الموجّه: **Port Forwarding / Virtual Servers** ← أضف القاعدتين من الجدول
   (المنفذ الخارجي = المنفذ الداخلي، البروتوكول TCP، IP الداخلي = LAN المضيف).
4. اعثر على **IP العام** الخاص بك (على المضيف افتح `https://api.ipify.org`، أو "WAN IP" في الموجّه). إذا كان
   عنوان IP الخاص بك **ديناميكياً**، فأعدّ **DDNS** (في الموجّه أو عبر no-ip/DuckDNS) واستخدم اسم DDNS بدلاً من IP.

> الأمان: البوابة فقط (7440) تستمع خارجياً. أما RDP (3389) فهو **مغلق** من الخارج حتى
> تؤكّد بالمفتاح — عندها يُفتح بشكل ضيّق، لعنوان IP الخاص بك فقط، لمدة نحو 90 ثانية. توجيه 3389 لا
> يمنح الوصول بحد ذاته؛ بل يسمح فقط لـ"النافذة" المؤقتة بالمرور عبر الموجّه.

---

## Step 3. Client — التثبيت والتسجيل

1. ثبّت العميل: شغّل **[RdpFido-Setup.exe](https://accounts.new-imobile.com/updates/RdpFido-Setup.exe)** واختر **Client** (لكل مستخدم، دون صلاحيات المسؤول)، أو **[RdpFidoClient-Setup.msi](https://accounts.new-imobile.com/updates/RdpFidoClient-Setup.msi)** مباشرةً.
2. **التفعيل** عبر AccountServer: أدخل بريدك الإلكتروني ← يُرسل إليك رمز بالبريد ← أدخله.
   فترة سماح للتفعيل مدتها 14 يوماً؛ الفئة المجانية = حتى 10 جلسات محفوظة، المدفوعة = بلا حد.
3. **إضافة جلسة:**
   - العنوان: IP العام للمضيف أو اسم DDNS (من Step 2)، أو عنوان LAN إذا كنت على الشبكة نفسها.
   - منفذ البوابة: **7440**.
   - البروتوكول: **RDP (mstsc)** أو **FIDO Stream** — انظر Step 5.
   - أدخل **الرمز لمرة واحدة** من Step 1 و**سجّل مفتاح FIDO2 الخاص بك** (المس).

---

## Step 4. الاتصال

اختر الجلسة ← **المس المفتاح** ← تتحقق منه البوابة و**تفتح 3389 لعنوان IP الحالي الخاص بك لمدة
نحو 90 ثانية** ← يشغّل العميل `mstsc` ويوصلك تلقائياً. كل 30 ثانية تعيد البوابة فرض
الحجب، فتبقى النافذة ضيّقة ومحصورة بعنوان IP.

---

## Step 5 (اختياري). FIDO Stream — وضع زمن الاستجابة المنخفض للألعاب والفيديو

FIDO Stream هو وضع اتصال ثانٍ إلى جانب RDP: شاشة المضيف وصوته وإدخالك تنتقل عبر UDP مع ترميز عتادي، بحيث يكون زمن الاستجابة «من النقرة إلى الصورة» في الشبكة المحلية نحو 25–45 مللي ثانية. لمسة المفتاح نفسها تفتحه؛ تفتح البوابة UDP 7441 لعنوان IP الخاص بك فقط وللجلسة فقط. لا يُثبَّت أي شيء إضافي: وكيل المضيف داخل البوابة، والعارض داخل العميل (إصدار البوابة 1.15 أو أحدث على المضيف).

1. في إعدادات الجلسة اختر **البروتوكول: FIDO Stream (ألعاب، زمن استجابة منخفض)**.
2. اترك الإعدادات على **تلقائي** للمحاولة الأولى. ما تعنيه:
   - **التوازن** — شريط تمرير من **اتصال ضعيف** (دقة أقل، HEVC، تصحيح أخطاء أكثر) إلى **حواسيب ضعيفة** (المرمّز العتادي فقط، أسرع إعداد مسبق، الدقة الأصلية)؛ **ضبط التوازن تلقائياً** يحرّكه نحو عنق الزجاجة الحالي.
   - **صوت المضيف** و**إرسال ميكروفوني إلى المضيف** — الصوت في الاتجاهين.
   - **التقاط الماوس عند البدء (للألعاب)** — حركة ماوس نسبية لألعاب التصويب.
   - **الاتصال** — **تلقائي (اختراق NAT)**، **هذا الحاسوب يتصل بالمضيف** (يتطلب توجيه 7441/UDP إلى المضيف) أو **المضيف يتصل بهذا الحاسوب** (عندما يكون لحاسوبك عنوان عام).
   - **المرمّز (المضيف)** — تلقائي / NVIDIA NVENC (مباشر) / عتادي (أي GPU) / برمجي (CPU)؛ **فك الترميز** — تلقائي / عتادي (GPU) / برمجي (CPU).
3. اتصل كالمعتاد: اختر الجلسة ← المس المفتاح ← تُفتح نافذة البث.

مفاتيح الاختصار في نافذة البث: **Ctrl+Alt+Home** يلتقط/يحرّر الماوس، **Ctrl+Alt+Enter** يبدّل ملء الشاشة، **Ctrl+Alt+End** يقطع الاتصال.

المتطلبات: Windows 10 1903+ على الجانبين؛ ولأقل زمن استجابة، GPU مع مرمّز عتادي على المضيف (NVIDIA أو Intel أو AMD). يُستخدم HEVC فقط عندما يكون لدى العميل فاكّ ترميز GPU؛ وإلا يتراجع البث تلقائياً إلى H.264. التشخيص على المضيف (كمسؤول): `RdpFidoGate.exe stream encoders` يسرد المرمّزات المتاحة، `RdpFidoGate.exe stream encoders --bench` يقيس كلاً منها، `RdpFidoGate.exe stream selftest` يشغّل الالتقاط ← الترميز ← فك الترميز دون شبكة. تُكتب التفاصيل في `gate.log` على المضيف و`client.log` على العميل.

---

## الفحص واستكشاف الأخطاء

- من العميل: `Test-NetConnection <public-ip-or-DDNS> -Port 7440` ← يجب أن يكون
  `TcpTestSucceeded : True`. إذا كان `False` — فإن المنفذ 7440 غير موجّه، أو أن جدار حماية المضيف يحجبه.
- المنفذ **3389 مغلق من الخارج حتى تؤكّد بالمفتاح** — وهذا متوقّع (لا تختبره قبل اللمس).
- "الجلسة لا تُفتح": تحقّق من أن 1) خدمة البوابة تعمل على المضيف، 2) **كلا** المنفذين
  موجّهان على الموجّه إلى IP شبكة LAN الحالية للمضيف، 3) أن IP العام لم يتغيّر (استخدم DDNS إن كان ديناميكياً).
- عدة مضيفين خلف موجّه واحد: استخدم منافذ خارجية مختلفة (مثلاً host-2 ← خارجي 7441→7440،
  3390→3389) وأدخل تلك المنافذ الخارجية في جلسة العميل.
- FIDO Stream لا يبدأ: يجب أن تكون البوابة على المضيف بالإصدار 1.15 أو أحدث (يخبرك العميل بذلك)، وللوصول عبر الإنترنت إما أن يكون 7441/UDP موجّهاً إلى المضيف أو أن تستخدم الجلسة **المضيف يتصل بهذا الحاسوب**.

---

## إلغاء التثبيت

على المضيف، كمسؤول: `powershell -ExecutionPolicy Bypass -File Uninstall-Gate.ps1`
(يزيل الخدمة، ويستعيد قواعد جدار الحماية). ثم، اختيارياً، أزل قواعد توجيه المنافذ على الموجّه.
