網路與 IP

RDP 是什麼意思?遠端桌面協議的原理、連接埠與使用方式

RDP 是 Remote Desktop Protocol 的縮寫,即微軟的遠端桌面協議:把遠端 Windows 的桌面畫面傳到你的螢幕上,再把你的鍵盤和滑鼠操作傳回去,同時可以共享剪貼簿、本機磁碟、印表機和聲音。它預設使用 TCP 3389,網路允許時再加一條 UDP 3389 提升流暢度;Windows 自帶的“遠端桌面連線”(mstsc)就是 RDP 客戶端。

作者 頂聯產品團隊發布於 6 分鐘閱讀

RDP 是什麼意思?RDP 是 Remote Desktop Protocol(遠端桌面協議)的縮寫,由微軟開發並內建在 Windows 中,用來遠端登入、操作另一台 Windows 電腦或伺服器的圖形桌面。伺服器端把桌面畫面編碼後發給客戶端,客戶端把鍵盤、滑鼠操作發回伺服器;同一條連線裡還能共享剪貼簿、對映本機磁碟和印表機、傳輸聲音。RDP 的預設連接埠是 TCP 3389,從 RDP 8.0 開始可以額外使用 UDP 3389 傳輸,在高延遲、有丟包的線路上更流暢。微軟以開放規範的形式公佈了協議文件(MS-RDPBCGR 等),因此除了 Windows 自帶的 mstsc,Linux 上的 FreeRDP、Remmina 客戶端和 xrdp 服務端也能與之互通。

RDP 協議是基於 TCP 還是 UDP

兩者都用,但地位不同:

  1. 連線總是先透過 TCP 3389 建立。認證、協商加密方式和功能都在這條 TCP 連線上完成,TCP 是必需的。
  2. 雙方都支援時,再建立一條 UDP 3389 傳輸。Windows 8、Windows Server 2012 及以後的系統(RDP 8.0 起)支援;更老的 Windows 7 SP1 要先安裝微軟的 RDP 8.0 更新。
  3. UDP 不通時自動退回只用 TCP。連線照樣可用,只是在差的線路上更容易卡頓。

為什麼要加 UDP:TCP 丟一個包,後面已經到達的資料也要等它重傳完成才能交給應用,畫面就會停頓。RDP 的 UDP 傳輸(MS-RDPEUDP)定義了可靠和有損兩種模式,對即時性要求高、允許丟失的資料可以不等重傳,用後續更新覆蓋即可。

確認當前連線有沒有用上 UDP:mstsc 全屏時頂部有一條連線欄,點左側的連線品質圖示,彈出的視窗會顯示連線品質並註明是否啟用了 UDP。

UDP 偶爾也會帶來問題:有的網路對 UDP 限速,或者 NAT 裝置上的 UDP 會話超時很短,表現為連上之後畫面隔一陣就凍結幾秒。可以在客戶端關閉 UDP 做對比:

# 在客戶端電腦上以管理員身份執行,等同於組策略“Turn Off UDP On Client”
reg add "HKLM\SOFTWARE\Policies\Microsoft\Windows NT\Terminal Services\Client" /v fClientDisableUDP /t REG_DWORD /d 1 /f

重新連線後生效,確認問題出在 UDP 後再去查網路;要恢復時刪除這個值。伺服器一側對應的組策略是“計算機配置 → 管理範本 → Windows 元件 → 遠端桌面服務 → 遠端桌面會話主機 → 連線 → 選擇 RDP 傳輸協議”。

放行防火牆時要把 TCP 和 UDP 分開考慮。Windows 防火牆自帶“遠端桌面 - 使用者模式(TCP-In)”和“遠端桌面 - 使用者模式(UDP-In)”兩條規則;雲安全組或機房 ACL 只放行 TCP 3389 也能正常使用,只是用不上 UDP。

RDP 傳輸的是什麼:畫面、輸入和虛擬通道

RDP 不是把螢幕截圖一張張發過去,而是隻傳變化的部分,並把各種附加功能放在同一條連線的“虛擬通道”裡:

傳輸內容 方向 說明
桌面畫面 伺服器 → 客戶端 只傳送發生變化的區域;較新的系統會用 H.264 等編碼壓縮,取決於兩端版本和策略
鍵盤、滑鼠、觸控 客戶端 → 伺服器 輸入事件在遠端系統裡生效
剪貼簿 雙向 文字、圖片,以及在兩端之間複製檔案
驅動器對映 客戶端 → 伺服器 本機磁碟在遠端顯示為 \\tsclient\C 這樣的網路位置
印表機、智慧卡、USB 裝置 客戶端 → 伺服器 遠端程式可以使用本機的裝置
聲音 雙向 遠端的聲音在本機播放,也可以把本機麥克風傳過去

這些附加功能都不額外佔用連接埠。方便的另一面是風險:連線一台不可信的伺服器時把本機磁碟對映過去,對方就能讀寫這塊磁碟。伺服器管理員可以用組策略關閉驅動器、剪貼簿等重定向。

RDP 和 VNC 還有一個本質區別:RDP 登入的是一個 Windows 會話,而不是把伺服器顯示器上的畫面映象過來。遠端會話裡的操作在伺服器本地顯示器上看不到;同一個帳號已經在本地登入時,遠端連線預設接管那個會話,本地螢幕隨之回到鎖定介面。也正因為依賴 Windows 裡的遠端桌面服務,RDP 只能在系統啟動完成後使用,看不到開機自檢和 BIOS 介面。

RDP、VNC、SSH 和 BMC 控制檯怎麼選

對比項 RDP VNC SSH BMC 遠端控制檯
預設連接埠 TCP 3389,可選 UDP 3389 TCP 5900 起 TCP 22 因廠商而異,Web 管理多為 443
介面 圖形桌面 圖形桌面 命令列 伺服器顯示器畫面
原理 遠端新建會話,傳輸變化區域和編碼後的畫面 傳輸幀緩衝區畫素,多為共享當前螢幕 加密的命令列會話 BMC 擷取顯示卡輸出
主要用於 Windows;Linux 可裝 xrdp 跨平台 Linux、網路裝置;Windows 可裝 OpenSSH 伺服器 與作業系統無關
依賴系統正常執行 是 系統內的 VNC 服務是;BMC、虛擬化平台提供的 VNC 不是 是 否,關機、藍色畫面、BIOS 階段都能用
加密 TLS,支援 NLA 預認證 取決於實現,經典認證只保護密碼 全程加密 HTTPS 或廠商協議
低頻寬表現 較好 一般 很好,只傳文字 一般
適合 Windows 日常管理 Linux 桌面、跨平台臨時協助 Linux 維運、指令碼和批次操作 系統起不來、裝系統、改 BIOS

簡單說:管理 Windows 伺服器日常用 RDP,Linux 用 SSH;系統崩潰、遠端桌面連不上的時候,用 BMC 控制檯或服務商面板裡的 VNC 救急。

RDP 怎麼用:mstsc 命令與 .rdp 檔案

Windows 自帶的客戶端叫“遠端桌面連線”,按 Win + R 輸入 mstsc 開啟。常用的命令列引數:

mstsc /v:203.0.113.10                 # 連線預設連接埠 3389
mstsc /v:203.0.113.10:13389           # 伺服器改過連接埠時,用冒號接連接埠號
mstsc /v:203.0.113.10 /admin          # 連線到伺服器的管理會話
mstsc /v:203.0.113.10 /f              # 全屏
mstsc /edit C:\rdp\web01.rdp          # 編輯已儲存的連線配置

經常連線的伺服器,可以在 mstsc 裡點“顯示選項 → 另存為”儲存成 .rdp 檔案。它是純文字,能直接編輯或批次生成:

full address:s:203.0.113.10:3389
username:s:Administrator
screen mode id:i:1
desktopwidth:i:1600
desktopheight:i:900
redirectclipboard:i:1
drivestoredirect:s:
audiomode:i:2

screen mode id 為 1 是視窗模式、2 是全屏;drivestoredirect:s: 後面留空表示不對映本機磁碟,寫成 * 則對映全部;audiomode:i:2 表示不傳聲音,省頻寬。雙擊這個檔案就能按設定連線。

其他系統:macOS、iOS、Android 安裝微軟官方客戶端(新版本名為 Windows App);Linux 用 Remmina 圖形客戶端,或者 FreeRDP 的命令列:

xfreerdp /v:203.0.113.10 /u:Administrator /size:1600x900 +clipboard /drive:share,/home/user/share

/drive:share,/home/user/share 把本機目錄對映到遠端,名字叫 share。FreeRDP 3 在部分發行版裡的命令名是 xfreerdp3。

第一次連線時,客戶端會提示“無法驗證遠端計算機的身份”,因為伺服器預設使用自簽名證書。不要直接勾選“不再詢問”:先透過服務商的 VNC 控制檯登入伺服器,檢視遠端桌面證書的指紋,和提示框裡“檢視證書”顯示的指紋核對一致後再連線,可以排除中間人:

Get-ChildItem "Cert:\LocalMachine\Remote Desktop" | Select-Object Subject, Thumbprint, NotAfter

修改 RDP 連接埠與基本安全設定

3389 是網際網路上被批次掃描和爆破的重點連接埠。比改連接埠更有效的順序是:限制來源 IP → 確認開啟 NLA → 及時安裝補丁 → 再考慮改連接埠。

1. 限制來源 IP。 在安全組或機房防火牆上只放行辦公網出口的位址;伺服器自己的防火牆也可以把遠端桌面規則的遠端位址收窄:

Get-NetFirewallRule -Group "@FirewallAPI.dll,-28752" | Set-NetFirewallRule -RemoteAddress 198.51.100.0/24

@FirewallAPI.dll,-28752 是“遠端桌面”規則組的內部名稱,中英文系統通用。

2. 確認網路級別身份驗證(NLA)已開啟。 NLA 要求客戶端在建立桌面會話之前先完成認證,未透過認證的連線不會讓伺服器去建立會話、繪製登入介面,也擋住了一部分只能在認證前利用的漏洞:

$key = 'HKLM:\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp'
Get-ItemProperty $key -Name UserAuthentication            # 值為 1 表示要求 NLA
Set-ItemProperty $key -Name UserAuthentication -Value 1   # 開啟

3. 及時安裝安全更新。 RDP 歷史上出現過無需認證即可遠端利用的嚴重漏洞,例如 2019 年的 CVE-2019-0708(BlueKeep),影響 Windows 7、Windows Server 2008 和 2008 R2 等舊系統。已經停止支援的系統,不要把 RDP 暴露在公網上。

4. 修改連接埠(可選)。 順序是先放行新連接埠,再改登錄檔,最後重啟服務;順序反了會把自己鎖在外面:

$port = 13389
New-NetFirewallRule -DisplayName "RDP TCP $port" -Direction Inbound -Protocol TCP -LocalPort $port -Action Allow
New-NetFirewallRule -DisplayName "RDP UDP $port" -Direction Inbound -Protocol UDP -LocalPort $port -Action Allow
Set-ItemProperty 'HKLM:\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp' -Name PortNumber -Value $port
Restart-Service TermService -Force    # 當前遠端會話會斷開

重啟服務後用 mstsc /v:IP:13389 重新連線,再用 netstat -ano | findstr :13389 確認 TCP 和 UDP 都在新連接埠上監聽;安全組和機房 ACL 也要同步放行新連接埠。動手前確認手裡有 BMC 控制檯或服務商面板的 VNC,萬一連不上可以從那裡改回來。

日常還要定期看一眼有沒有人在爆破。登入失敗記錄在安全日誌的 4625 事件裡,第 20 個欄位(下標 19)是來源 IP:

Get-WinEvent -FilterHashtable @{LogName='Security'; Id=4625} -MaxEvents 50 |
  Select-Object TimeCreated, @{n='User';e={$_.Properties[5].Value}}, @{n='SourceIP';e={$_.Properties[19].Value}}

同一批位址反覆出現,就該收緊來源 IP 了。

租用或託管 Windows 伺服器後怎麼用 RDP 管理

步驟 做什麼 要點
1. 拿到連線資訊 公網 IP、連接埠、管理員帳號和初始密碼 租用的伺服器由服務商交付;託管的伺服器要在裝系統時自己開啟遠端桌面、配好 IP
2. 放行連接埠 安全組、機房防火牆放行 TCP 3389,可選 UDP 3389 來源只填自己的 IP
3. 首次連線 mstsc /v:IP,核對證書指紋後登入 連不上先用 Test-NetConnection IP -Port 3389 看連接埠通不通
4. 登入後加固 改掉初始密碼,給每位管理員建獨立帳號,確認 NLA 開啟,裝完系統更新 不要多人共用 Administrator
5. 留好後路 記下服務商面板裡 VNC 控制檯或 BMC 的入口,並實際開啟一次 改連接埠、改防火牆、改網路卡之前先確認它可用

第 5 步最容易被省略。RDP 走的是伺服器自己的網路卡和作業系統,系統卡在更新、藍色畫面、網路卡配置寫錯、防火牆擋住了連接埠,RDP 都會一起失效,這時只能靠不依賴作業系統的通道進去修復。

在管理系統裡怎麼落地

服務商一側,Toplink DCIM 的 IPMI 遠端管理 在瀏覽器裡同時提供三種控制檯:VNC 經由 BMC 連線,從開機自檢、BIOS 設定到系統安裝都能看到;SSH 和 RDP 走作業系統通道,用於系統正常時的日常管理。三種都不需要安裝客戶端,每次會話自動錄影,可以倍速回放。租用伺服器的客戶在 客戶自助端 裡同樣能開啟 VNC 控制檯,或透過 SSH、RDP 登入名下的機器;RDP 連不上時直接切到 VNC 檢視畫面,不必先提工單等工程師。

常見問題

Windows 家庭版能被遠端桌面連線嗎?

不能。Windows 10、11 家庭版只帶 RDP 客戶端,可以去連別的電腦,但不能作為被連線的一端;專業版、企業版和 Windows Server 才能開啟遠端桌面。

RDP 改了連接埠為什麼還會被掃描?

掃描工具會探測全部 65535 個連接埠並識別上面跑的協議,改連接埠只能減少針對 3389 的批次爆破日誌,不能代替來源 IP 限制、NLA 和強密碼。

RDP 和遠端桌面服務(RDS)是什麼關係?

RDP 是協議;遠端桌面服務是 Windows Server 的一個角色,在 RDP 之上提供多使用者會話、遠端應用釋出、閘道器和授權管理。管理員只是遠端維護伺服器時,不需要安裝這個角色。

想看看在你的機房裡怎麼用?

從一次產品示範開始,梳理你的業務鏈路。

查看價格
服務熱線 400-112-2951

讓我們聊聊你的 IDC 業務

掃碼新增企業微信,預約產品示範或申請試用。

Toplink 企業微信二維碼

長按儲存或使用企業微信 / 微信掃描

也可致電
400-112-2951
Telegram
@TopLink88