网络与 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