# RDP-FIDO-GATE — cài đặt & cấu hình (từng bước)

Remote Desktop (RDP) an toàn với **cổng khóa phần cứng FIDO2/WebAuthn bắt buộc**. Cổng RDP
luôn bị tường lửa chặn và chỉ mở **cho IP của bạn, trong khoảng 90 giây**, sau khi bạn chạm
khóa. Yêu cầu Windows 10 1903+ (WebAuthn + Windows Firewall). Không có dịch vụ lưu trữ — bạn
tự tải xuống và cài đặt.

Hai thành phần và các cổng của chúng:

| Thành phần | Chạy ở đâu | Cổng |
|-----------|---------------|-------|
| **Gate (cổng)** | máy đích (PC bạn kết nối tới) | **7440/TCP** — điều khiển + xác nhận FIDO; **3389/TCP** — RDP (mở theo yêu cầu) |
| **Client** | máy của bạn | kết nối đi ra tới cổng 7440 và 3389 của máy chủ |
| **FIDO Stream** (tùy chọn) | máy chủ | **7441/UDP** — video, âm thanh và đầu vào của chế độ độ trễ thấp; mở theo từng phiên, chỉ cho IP của bạn |

---

## Bước 1. Máy chủ — cài đặt gate

1. Tải **[RdpFido-Setup.exe](https://accounts.new-imobile.com/updates/RdpFido-Setup.exe)** trên máy đích, chạy và chọn **Host** (Windows sẽ hỏi xác nhận quyền quản trị). Nó cài đặt gate; bạn cũng có thể tải trực tiếp **[RdpFidoGate-Setup.msi](https://accounts.new-imobile.com/updates/RdpFidoGate-Setup.msi)**.
2. Bộ cài bật Remote Desktop (với NLA), gắn chứng chỉ TLS cho cổng gate **7440**, đăng ký và khởi động dịch vụ gate. Cổng RDP vẫn hoạt động như trước — nó chỉ đóng khi khóa đầu tiên được đăng ký.
3. Trang cuối của bộ cài hiển thị **mã đăng ký khóa dùng một lần** (hiệu lực 15 phút, có nút "Copy code"), cùng địa chỉ của máy và cổng gate.
4. **Ghi lại:** địa chỉ máy chủ (tên / IP công cộng), cổng **7440** và **mã**. Nếu mã hết hạn, chạy `RdpFidoGate.exe code` với quyền quản trị.

Cài đặt im lặng (ví dụ từ hệ thống quản lý): `msiexec /i RdpFidoGate-Setup.msi /qn`

Cài đặt không cần tương tác với bộ cài kết hợp: `RdpFido-Setup.exe host`

---

## Bước 2. Chuyển tiếp cổng trên router (nếu máy chủ nằm sau NAT/router) — BẮT BUỘC để truy cập từ internet

Nếu bạn kết nối **từ internet** và máy đích nằm sau router gia đình/văn phòng, bạn
phải **chuyển tiếp hai cổng** trên router tới địa chỉ LAN của máy chủ. Không có bước này client
không tới được gate lẫn RDP.

Chuyển tiếp (Port Forwarding / Virtual Servers / NAT trong trang quản trị router):

| Cổng ngoài | Giao thức | → IP trong (LAN máy chủ) | Cổng trong |
|---------------|----------|--------------------------|---------------|
| **7440** | TCP | `192.168.x.x` (IP LAN máy chủ) | **7440** |
| **3389** | TCP | cùng IP LAN máy chủ | **3389** |
| **7441** | UDP | cùng IP LAN máy chủ | **7441** — chỉ khi bạn dùng FIDO Stream từ internet |

Quy trình:
1. Tìm IP LAN của máy chủ: `ipconfig` → "IPv4 Address" (ví dụ `192.168.1.50`).
2. **Đặt trước địa chỉ đó** cho máy chủ (DHCP reservation theo MAC trên router) — nếu không nó có thể thay đổi.
3. Trên router: **Port Forwarding / Virtual Servers** → thêm hai quy tắc từ bảng trên
   (cổng ngoài = cổng trong, giao thức TCP, IP trong = LAN máy chủ).
4. Tìm **IP công cộng** của bạn (trên máy chủ mở `https://api.ipify.org`, hoặc xem "WAN IP" trên router). Nếu IP
   của bạn **động**, hãy thiết lập **DDNS** (trên router hoặc qua no-ip/DuckDNS) và dùng tên DDNS thay cho IP.

> Bảo mật: chỉ gate (7440) lắng nghe từ bên ngoài. RDP (3389) **đóng** từ bên ngoài cho đến khi bạn
> xác nhận bằng khóa — rồi nó mở hẹp, chỉ cho IP của bạn, trong ~90 giây. Chuyển tiếp 3389 tự nó không
> cấp quyền truy cập; nó chỉ cho phép "cửa sổ" tạm thời đi qua router.

---

## Bước 3. Client — cài đặt và đăng ký

1. Cài client: chạy **[RdpFido-Setup.exe](https://accounts.new-imobile.com/updates/RdpFido-Setup.exe)** và chọn **Client** (theo từng người dùng, không cần quyền quản trị), hoặc trực tiếp **[RdpFidoClient-Setup.msi](https://accounts.new-imobile.com/updates/RdpFidoClient-Setup.msi)**.
2. **Kích hoạt** qua AccountServer: nhập e-mail → mã được gửi tới bạn → nhập mã.
   Thời gian ân hạn kích hoạt 14 ngày; gói miễn phí = tối đa 10 phiên đã lưu, gói trả phí = không giới hạn.
3. **Thêm phiên:**
   - Địa chỉ: IP công cộng hoặc tên DDNS của máy chủ (từ Bước 2), hoặc địa chỉ LAN nếu bạn cùng mạng.
   - Cổng gate: **7440**.
   - Giao thức: **RDP (mstsc)** hoặc **FIDO Stream** — xem Bước 5.
   - Nhập **mã dùng một lần** từ Bước 1 và **đăng ký khóa FIDO2** của bạn (chạm).

---

## Bước 4. Kết nối

Chọn phiên → **chạm khóa** → gate xác minh và **mở 3389 cho IP hiện tại của bạn trong
~90 giây** → client khởi chạy `mstsc` và tự động kết nối. Mỗi 30 giây gate tái khẳng định việc
chặn, nên cửa sổ luôn hẹp và giới hạn theo IP.

---

## Bước 5 (tùy chọn). FIDO Stream — chế độ độ trễ thấp cho game và video

FIDO Stream là chế độ kết nối thứ hai bên cạnh RDP: màn hình, âm thanh của máy chủ và đầu vào của bạn đi qua UDP với mã hóa phần cứng, nên độ trễ "từ nhấp chuột đến hình ảnh" trong mạng LAN vào khoảng 25–45 ms. Cùng một lần chạm khóa sẽ mở nó; gate mở UDP 7441 chỉ cho IP của bạn và chỉ trong phiên đó. Không cần cài thêm gì: tác nhân máy chủ nằm trong gate, trình xem nằm trong client (gate phiên bản 1.15 trở lên trên máy chủ).

1. Trong cài đặt phiên chọn **Giao thức: FIDO Stream (chơi game, độ trễ thấp)**.
2. Để các thiết lập ở **Tự động** cho lần thử đầu tiên. Ý nghĩa của chúng:
   - **Cân bằng** — thanh trượt từ **Đường truyền kém** (độ phân giải thấp hơn, HEVC, sửa lỗi nhiều hơn) đến **PC yếu** (chỉ bộ mã hóa phần cứng, preset nhanh nhất, độ phân giải gốc); **Tự động điều chỉnh cân bằng** dịch nó về phía điểm nghẽn hiện tại.
   - **Âm thanh máy chủ** và **Gửi micrô của tôi tới máy chủ** — âm thanh theo cả hai chiều.
   - **Bắt chuột khi khởi động (cho game)** — chuyển động chuột tương đối cho game bắn súng.
   - **Kết nối** — **Tự động (xuyên NAT)**, **Máy này gọi tới máy chủ** (cần chuyển tiếp 7441/UDP tới máy chủ) hoặc **Máy chủ gọi tới máy này** (khi PC của bạn có địa chỉ công cộng).
   - **Bộ mã hóa (máy chủ)** — Tự động / NVIDIA NVENC (trực tiếp) / Phần cứng (GPU bất kỳ) / Phần mềm (CPU); **Bộ giải mã** — Tự động / Phần cứng (GPU) / Phần mềm (CPU).
3. Kết nối như bình thường: chọn phiên → chạm khóa → cửa sổ stream mở ra.

Phím tắt trong cửa sổ stream: **Ctrl+Alt+Home** bắt/thả chuột, **Ctrl+Alt+Enter** bật/tắt toàn màn hình, **Ctrl+Alt+End** ngắt kết nối.

Yêu cầu: Windows 10 1903+ ở cả hai phía; để có độ trễ thấp nhất, máy chủ cần GPU có bộ mã hóa phần cứng (NVIDIA, Intel hoặc AMD). HEVC chỉ được dùng khi client có bộ giải mã GPU; nếu không, stream tự động chuyển về H.264. Chẩn đoán trên máy chủ (với quyền quản trị): `RdpFidoGate.exe stream encoders` liệt kê các bộ mã hóa khả dụng, `RdpFidoGate.exe stream encoders --bench` đo từng bộ, `RdpFidoGate.exe stream selftest` chạy thu hình → mã hóa → giải mã mà không cần mạng. Chi tiết được ghi vào `gate.log` trên máy chủ và `client.log` trên client.

---

## Kiểm tra & khắc phục sự cố

- Từ client: `Test-NetConnection <ip-công-cộng-hoặc-DDNS> -Port 7440` → phải là
  `TcpTestSucceeded : True`. Nếu `False` — cổng 7440 chưa được chuyển tiếp, hoặc tường lửa máy chủ chặn nó.
- Cổng **3389 đóng từ bên ngoài cho đến khi bạn xác nhận bằng khóa** — đó là bình thường (đừng kiểm tra nó trước khi chạm).
- "Phiên không mở": kiểm tra 1) dịch vụ gate đang chạy trên máy chủ, 2) **cả hai** cổng đã được
  chuyển tiếp trên router tới IP LAN hiện tại của máy chủ, 3) IP công cộng không thay đổi (dùng DDNS nếu động).
- Nhiều máy chủ sau một router: dùng các cổng ngoài khác nhau (ví dụ máy chủ 2 → ngoài 7441→7440,
  3390→3389) và nhập các cổng ngoài đó trong phiên của client.
- FIDO Stream không khởi động: gate trên máy chủ phải là phiên bản 1.15 trở lên (client sẽ báo), và để truy cập từ internet thì hoặc 7441/UDP được chuyển tiếp tới máy chủ, hoặc phiên dùng **Máy chủ gọi tới máy này**.

---

## Gỡ cài đặt

Trên máy chủ, với quyền quản trị: `powershell -ExecutionPolicy Bypass -File Uninstall-Gate.ps1`
(gỡ dịch vụ, khôi phục quy tắc tường lửa). Sau đó, tùy chọn, xóa các quy tắc chuyển tiếp cổng trên router.
