# RDP-FIDO-GATE — نصب و پیکربندی (گام‌به‌گام)

دسکتاپ راه‌دور (RDP) امن با یک **دروازهٔ اجباری کلید سخت‌افزاری FIDO2/WebAuthn**. پورت RDP
همیشه پشت فایروال مسدود می‌ماند و **فقط برای IP شما، به مدت حدود ۹۰ ثانیه**، پس از آنکه کلید را
لمس کنید باز می‌شود. به 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** را انتخاب کنید (ویندوز تأیید مدیر را می‌خواهد). این کار دروازه را نصب می‌کند؛ همچنین می‌توانید **[RdpFidoGate-Setup.msi](https://accounts.new-imobile.com/updates/RdpFidoGate-Setup.msi)** را مستقیماً دانلود کنید.
2. نصب‌کننده Remote Desktop را (با NLA) فعال می‌کند، یک گواهی TLS به پورت دروازه **7440** متصل می‌کند و سرویس دروازه را ثبت و راه‌اندازی می‌کند. پورت RDP مانند قبل کار می‌کند — فقط هنگام ثبت اولین کلید بسته می‌شود.
3. صفحهٔ آخر نصب‌کننده **کد یک‌بارمصرف ثبت کلید** را نشان می‌دهد (۱۵ دقیقه معتبر، با دکمهٔ «کپی کد») به‌همراه نشانی‌های ماشین و پورت دروازه.
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) و به‌جای IP از نام DDNS استفاده کنید.

> امنیت: فقط دروازه (7440) به‌صورت خارجی گوش می‌دهد. RDP (3389) تا زمانی که با کلید تأیید نکنید
> از بیرون **بسته** است — سپس به‌صورت محدود، فقط برای IP شما، به مدت حدود ۹۰ ثانیه باز می‌شود. هدایت 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: ایمیل خود را وارد کنید ← کدی برایتان ایمیل می‌شود ← آن را وارد کنید.
   مهلت ارفاقی فعال‌سازی ۱۴ روزه؛ سطح رایگان = تا ۱۰ نشست ذخیره‌شده، پولی = بدون محدودیت.
3. **افزودن یک نشست:**
   - نشانی: IP عمومی میزبان یا نام DDNS (از Step 2)، یا نشانی LAN اگر روی همان شبکه هستید.
   - پورت دروازه: **7440**.
   - پروتکل: **RDP (mstsc)** یا **FIDO Stream** — به Step 5 مراجعه کنید.
   - **کد یک‌بارمصرف** از Step 1 را وارد کنید و **کلید FIDO2 خود را ثبت کنید** (لمس کنید).

---

## Step 4. اتصال

نشست را انتخاب کنید ← **کلید را لمس کنید** ← دروازه آن را بررسی می‌کند و **پورت 3389 را برای IP فعلی شما به مدت
حدود ۹۰ ثانیه باز می‌کند** ← کلاینت `mstsc` را اجرا کرده و شما را به‌طور خودکار متصل می‌کند. هر ۳۰ ثانیه دروازه
مسدودسازی را دوباره اعمال می‌کند تا پنجره محدود و مقید به IP باقی بماند.

---

## Step 5 (اختیاری). FIDO Stream — حالت کم‌تأخیر برای بازی و ویدیو

FIDO Stream حالت اتصال دومی در کنار RDP است: صفحهٔ میزبان، صدا و ورودی شما از طریق UDP با کدگذاری سخت‌افزاری منتقل می‌شوند، به‌طوری که تأخیر «کلیک تا تصویر» در شبکهٔ محلی حدود ۲۵ تا ۴۵ میلی‌ثانیه است. همان لمس کلید آن را باز می‌کند؛ دروازه 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 تا زمانی که با کلید تأیید نکنید از بیرون بسته است** — این مورد انتظار می‌رود (پیش از لمس آن را آزمایش نکنید).
- «نشست باز نمی‌شود»: بررسی کنید که ۱) سرویس دروازه روی میزبان در حال اجراست، ۲) **هر دو** پورت
  روی روتر به IP فعلی LAN میزبان هدایت شده‌اند، ۳) IP عمومی تغییر نکرده است (اگر پویاست از DDNS استفاده کنید).
- چند میزبان پشت یک روتر: از پورت‌های خارجی متمایز استفاده کنید (مثلاً host-2 ← خارجی 7441→7440،
  3390→3389) و آن پورت‌های خارجی را در نشست کلاینت وارد کنید.
- FIDO Stream شروع نمی‌شود: دروازه روی میزبان باید نسخهٔ 1.15 یا جدیدتر باشد (کلاینت این را اعلام می‌کند)، و برای دسترسی از اینترنت یا باید 7441/UDP به میزبان هدایت شده باشد یا نشست از **میزبان با این رایانه تماس می‌گیرد** استفاده کند.

---

## حذف نصب

روی میزبان، به‌عنوان مدیر: `powershell -ExecutionPolicy Bypass -File Uninstall-Gate.ps1`
(سرویس را حذف می‌کند، قواعد فایروال را بازمی‌گرداند). سپس به‌صورت اختیاری قواعد هدایت پورت را روی روتر حذف کنید.
