RDP 代理

Last published : Oct 14, 2026
RDP 代理功能作为 NetScaler Gateway 的一部分提供。在典型的部署中,RDP 客户端在远程用户的计算机上运行。NetScaler Gateway 设备部署在 DMZ 中,RDP 服务器场位于内部公司网络中。
远程用户;
  1. 连接到 NetScaler Gateway 公共 IP 地址
  2. 建立 SSL VPN 连接
  3. 进行身份验证
  4. 通过 NetScaler Gateway 设备访问远程桌面
RDP 代理功能支持无客户端 VPN 和 ICA® 代理模式。
注意:
NetScaler Gateway 不支持远程桌面会话主机 (RDSH)、远程应用、RDS 多用户、RDP 会话或 RDP 应用。
以下 RDP 代理功能通过 NetScaler Gateway 提供对远程桌面场的访问。
  • 通过无客户端 VPN 或 ICA 代理模式(不带完整隧道)保护 RDP 流量。
  • 通过 NetScaler Gateway 对 RDP 服务器进行 SSO(单点登录)。如果需要,还提供禁用 SSO 的选项。
    注意:
    NetScaler Gateway 不支持用于 RDP 服务器 SSO 的 Kerberos 约束委派 (KCD)。
  • 强制执行 (SmartAccess) 功能,NetScaler 管理员可以通过 NetScaler Gateway 配置禁用某些 RDP 功能。
  • 单一/无状态(双)网关解决方案,满足所有需求(VPN/ICA/RDP/Citrix 端点管理)。
  • 与本机 Windows MSTSC 客户端的 RDP 兼容性,无需任何自定义客户端。
  • 在 macOS、iOS 和 Android 上使用现有的 Microsoft 提供的 RDP 客户端。
下图描绘了部署概述:
RDP 代理概述

通过无客户端 VPN 部署

在此模式下,RDP 链接通过 add vpn url 配置或通过外部门户作为书签发布在网关主页或门户上。用户可以单击这些链接来访问远程桌面。

通过 ICA 代理部署

在此模式下,通过使用 wihome 参数在网关 VIP 上配置自定义主页。此主页可以根据用户被允许访问的远程桌面资源列表进行自定义。此自定义页面可以托管在 NetScaler 上,如果外部托管,则可以是现有网关门户页面中的 iFrame。有关详细信息,请参阅 配置访问接口。
在任一模式下,用户单击已配置的 RDP 链接或图标后,相应的资源 HTTPS 请求将到达 NetScaler Gateway。网关为请求的连接生成 RDP 文件内容并将其推送到客户端。本机 RDP 客户端被调用,并连接到网关上的 RDP 侦听器。网关通过支持强制执行 (SmartAccess) 对 RDP 服务器进行 SSO。网关根据 NetScaler 配置阻止客户端访问某些 RDP 功能,然后代理 RDP 客户端和服务器之间的 RDP 流量。

强制执行详细信息

NetScaler 管理员可以通过 NetScaler Gateway 配置某些 RDP 功能。NetScaler Gateway 为重要的 RDP 参数提供了“RDP 强制执行”功能。NetScaler 确保客户端无法启用被阻止的参数。如果启用了被阻止的参数,RDP 强制执行功能将取代客户端启用的参数,并且这些参数将不被遵守。
重要提示: 强制执行功能仅在启用 SSO 时适用。

支持强制执行的 RDP 参数

支持对以下重定向参数的强制执行。这些参数可作为 RDP 客户端配置文件的一部分进行配置。
  • 剪贴板重定向
  • 打印机重定向
  • 磁盘驱动器重定向
  • COM 端口重定向
  • PNP 设备重定向

连接流程

连接流程可分为两个步骤:
  • RDP 资源枚举和 RDP 文件下载。
  • RDP 连接启动。
基于上述连接流程,有两种部署解决方案:
  • 无状态(双)网关解决方案 - RDP 资源枚举和 RDP 文件下载通过身份验证器网关进行,但 RDP 连接启动通过 RDP 侦听器网关进行。
  • 单一网关解决方案 - RDP 资源枚举、RDP 文件下载和 RDP 连接启动通过同一网关进行。

无状态(双)网关兼容性

下图描述了部署:
双网关兼容性(/en-us/netscaler-gateway/media/figure2_statelessgatewaycompatibility.png)
  • 用户连接到身份验证器网关 VIP 并提供凭据。
  • 成功登录网关后,用户将被重定向到主页或外部门户,其中列出了用户可以访问的远程桌面资源。
  • 用户选择 RDP 资源后,身份验证器网关 VIP 会收到格式为 https://vserver-vip/rdpproxy/rdptarget/listener 的请求,该请求指示用户单击的已发布资源。此请求包含用户选择的 RDP 服务器的 IP 地址和端口信息。
  • 身份验证器网关处理 /rdpproxy/ 请求。由于用户已通过身份验证,此请求附带有效的网关 Cookie。
  • RDPTarget 和 RDPUser 信息存储在 STA 服务器上,并生成 STA 票证。存储在 STA 服务器上的信息使用配置的预共享密钥进行加密。身份验证器网关使用网关虚拟服务器上配置的 STA 服务器之一。
  • /rdpproxy/ 请求中获取的“侦听器”信息作为“fulladdress”放入 .rdp file 中,STA 票证(前缀为 STA AuthID)作为“loadbalanceinfo”放入 .rdp file 中。
  • .rdp file 被发送回客户端端点。
  • 本机 RDP 客户端启动并连接到 RDPListener Gateway。它在初始数据包中发送 STA 票证。
    RDPListener 网关验证 STA 票证并获取 RDPTarget 和 RDPUser 信息。要使用的 STA 服务器通过 loadbalanceinfo 中存在的“AuthID”检索。
  • 创建网关会话以存储授权/审计策略。如果用户已存在会话,则会重用该会话。
  • RDPListener 网关连接到 RDPTarget 并使用 CREDSSP 进行单点登录。
重要提示:
  • 对于无状态 RDP 代理,STA 服务器验证 RDP 客户端发送的 STA 票证,以获取 RDPTarget/RDPUser 信息。除了 VPN 虚拟服务器之外,您还必须绑定 STA 服务器。
  • 为了使 RDP 侦听器正常工作,RDP 服务器配置文件中指定的端口必须在客户的防火墙上打开。这允许 NetScaler Gateway 与后端 RDP 服务器通信。

单网关兼容性

下图描述了部署情况:
单网关兼容性
重要提示:
  • 在单网关部署的情况下,不需要 STA 服务器。身份验证器网关对 RDPTarget 和 NetScaler 身份验证、授权和审计会话 cookie 进行安全编码,并将其作为 loadbalanceinfo 在 .rdp file 中发送。当 RDP 客户端在初始数据包中发送此令牌时,身份验证器网关会解码 RDPTarget 信息,查找会话,并连接到 RDPTarget。
  • 在单网关部署中,RDP 服务器配置文件是强制性的,而 RDP 侦听器不是必需的。

支持单个侦听器

  • RDP 和 SSL 流量的单个侦听器。
  • RDP 文件下载和 RDP 流量可以通过 NetScaler 设备上的相同 2 元组(即 IP 和端口)进行处理。

RDP 代理的许可证要求

高级版、进阶版
注意:
RDP 代理功能不适用于仅拥有网关平台许可证或仅拥有标准版的客户。
您可以使用以下命令启用 RDP 代理。
enable feature rdpProxy

书签

通过门户生成 RDP 链接。 用户无需配置 RDP 链接或通过外部门户发布 RDP 链接,您可以通过提供 targetIP:Port 让用户选择生成自己的 URL。对于无状态 RDP 代理部署,管理员可以在 RDP 客户端配置文件中以 FQDN: 端口格式包含 RDP 侦听器信息。这在 rdpListener 选项下完成。此配置用于在双网关模式下通过门户生成 RDP 链接。
书签

创建书签

  1. 在门户页面上创建书签以访问 RDP 资源:(实际 URL 以 rdp:// 开头)。
  2. 添加 VPN URL <urlName> <linkName>  <actualURL>
    • URL 必须采用以下格式:rdp://<TargetIP:Port>。
    • 对于无状态 RDP 代理模式,URL 必须采用以下格式:rdp://<TargetIP:Port>/<ListenerIP:Port>
    • URL 以以下格式发布在门户上: https://<VPN-VIP>/rdpproxy/<TargetIP:Port> https://<VPN-VIP>/rdpproxy/<TargetIP:Port>/<ListenerIP:Port>
  3. 将书签绑定到用户、组、VPN 虚拟服务器或 VPN 全局。

RDP 代理要启用的功能和模式

-  enable ns feature ssl

-  enable ns feature sslvpn

-  enable ns feature rdpproxy

-  enable mode usnip

RDP 代理高级配置步骤

无状态 RDP 代理配置涉及以下高级步骤。
  • 创建 RDP 服务器配置文件
  • 创建 RDP 客户端配置文件
  • 创建并绑定虚拟服务器
  • 创建书签
  • 创建或编辑会话配置文件或策略
  • 绑定书签

配置客户端配置文件

在身份验证器网关上配置客户端配置文件。以下是示例配置:
add rdpClient profile <name> [-addUserNameInRdpFile ( YES | NO )] [-audioCaptureMode ( ENABLE | DISABLE )] [-keyboardHook <keyboardHook>] [-multiMonitorSupport ( ENABLE | DISABLE )] [-psk <string>] [-rdpCookieValidity <positive_integer>] [-rdpCustomParams <string>] [-rdpFileName <string>] [-rdpHost <string>] [-rdpListener <string>] [-randomizeRDPFilename ( YES | NO )] [-rdpLinkAttribute <string>] [-rdpValidateClientIP ( ENABLE | DISABLE )] [-rdpUrlOverride ( ENABLE | DISABLE )] [-redirectClipboard ( ENABLE | DISABLE )] [-redirectComPorts ( ENABLE | DISABLE )] [-redirectDrives ( ENABLE | DISABLE )] [-redirectPnpDevices ( ENABLE | DISABLE )] [-redirectPrinters ( ENABLE | DISABLE )] [-videoPlaybackMode ( ENABLE | DISABLE )] [-rdpUrlMaxLen <positive_integer>] [-rdpUrlMaxLenCheck ( ENABLE | DISABLE )]
注意:
从 NetScaler Gateway 14.1 72.x 版本开始,支持以下参数:
  • rdpUrlMaxLen - 指定 RDP URL 的最大允许长度。当在 StoreFront 中选择桌面书签时,此 URL 会从客户端发送到 NetScaler。该参数的值范围为 32 到 2048,默认值为 256。
  • rdpUrlMaxLenCheck - 启用或禁用 RDP URL 最大长度验证(最大长度由 rdpUrlMaxLen 参数指示)。此参数默认禁用。
将 RDP 客户端配置文件与 VPN 虚拟服务器关联。
这可以通过配置 sessionAction+sessionPolicy 或设置全局 VPN 参数来完成。
示例:
add vpn sessionaction <actname> -rdpClientprofile <rdpprofilename>

add vpn sessionpolicy <polname> NS_TRUE <actname>

bind vpn vserver <vservername> -policy <polname> -priority <prioritynumber>
或
set vpn parameter –rdpClientprofile <name>

配置服务器配置文件

在侦听器网关上配置服务器配置文件。
add rdp ServerProfile <profilename> -rdpIP <IPV4 address of the RDP listener> -rdpPort <port for terminating RDP client connections> -psk <key to decrypt RDPTarget/RDPUser information, needed while using STA>`
必须在 VPN 虚拟服务器上配置 rdp ServerProfile。
add vpn vserver v1 SSL <publicIP> <portforterminatingvpnconnections> -rdpServerProfile <rdpServer Profile>`  示例配置

使用 CLI 配置 RDP 代理

以下是使用 CLI 的 RDP 代理配置示例。
  • 为用户添加包含目标信息的 VPN URL。
    add aaa user Administrator –password freebsd123$%^

    add vpn url rdp RdpLink rdp://rdpserverinfo

    add dns addrec rdpserverinfo 192.0.2.1

    bind aaa user Administrator  –urlName rdp
  • 为 VPN 连接配置 RDP 客户端和服务器配置文件。
    add rdp clientprofile p1 –psk citrix -redirectClipboard ENABLE

    add rdp serverprofile p1 -rdpIP 192.0.2.2 -psk citrix

    add vpn vserver mygateway SSL  192.0.2.2 443 –rdpserverprofile p1

    set vpn parameter -clientlessVpnMode ON -defaultAuthorizationAction ALLOW -rdpClientProfileName p1

    add ssl certKey gatewaykey -cert rdp_rootcert.pem  -key rdp_rootkey

    bind ssl vserver mygateway -certkeyName gatewaykey
  • 添加 SNIP 以实现从 NetScaler 到目标的连接。
    add ns ip 192.0.2.3  255.255.255.0 –type SNIP

使用 GUI 配置 RDP 代理

  1. 导航到 NetScaler Gateway > 策略,右键单击 RDP,然后单击 启用功能。
  2. 在导航窗格上单击 RDP。在右侧,选择 客户端配置文件 选项卡,然后单击 添加。
  3. 输入客户端配置文件的名称并进行配置。
    为配置文件添加名称
  4. 在 RDP 主机字段中,输入解析为 RDP 代理侦听器的 FQDN,该 FQDN 通常与 NetScaler Gateway 设备的 FQDN 相同。
  5. 在 预共享密钥 中,输入密码并单击 确定。
    预共享密钥密码
  6. 输入服务器配置文件名称。
  7. 输入您将绑定此配置文件的网关虚拟服务器的 IP 地址。
  8. 输入您为 RDP 客户端配置文件配置的相同预共享密钥。单击 创建。
    重新输入预共享密钥密码(/en-us/netscaler-gateway/media/figure13_createrdpserverprofiles.png)
  9. 如果要在无客户端访问门户页面上添加 RDP 书签,请在左侧展开 NetScaler Gateway,展开 资源,然后单击 书签。
  10. 在右侧,单击 添加。
  11. 为书签命名。
  12. 对于 URL,输入 rdp://MyRDPServer using IP or DNS。
  13. 选择使用 NetScaler Gateway 作为反向代理,然后单击 创建。
  14. 根据您的要求创建书签。
    添加多个书签(/en-us/netscaler-gateway/media/figure16_createbookmarks.png)
  15. 创建或编辑会话配置文件。导航到 NetScaler Gateway > 策略 > 会话。
  16. 在“安全”选项卡上,将 默认授权操作 设置为 允许。或者,您可以使用授权策略来控制访问。
    设置默认身份验证操作(/en-us/netscaler-gateway/media/figure17_configuresessionprofile.png)
  17. 在“远程桌面”选项卡上,选择您之前创建的 RDP 客户端配置文件。
    选择 RDP 客户端配置文件(/en-us/netscaler-gateway/media/figure18_configuresessionprofile2.png)
  18. 如果要使用书签,请在“客户端体验”选项卡上,将“无客户端访问”设置为“开”。
    将无客户端访问设置为开(/en-us/netscaler-gateway/media/figure19_clientexperience.png)
  19. 在“已发布的应用程序”选项卡上,确保 ICA 代理处于“关闭”状态。
    将 ICA 代理设置为关闭(/en-us/netscaler-gateway/media/figure20_publishedapplications.png)
  20. 修改或创建网关虚拟服务器。
  21. 在“基本设置”部分中,单击“更多”。
    设置基本设置(/en-us/netscaler-gateway/media/figure21_vpnvirtualserver.png)
  22. 使用 RDP 服务器配置文件列表选择您之前创建的 RDP 服务器配置文件。
    使用 RDP 服务器配置文件(/en-us/netscaler-gateway/media/figure22_basicsettings.png)
  23. 向下滚动。确保未选中“仅限 ICA”。
    将仅限 ICA 设置为关闭(/en-us/netscaler-gateway/media/figure22_ica_only.png)
  24. 绑定证书。
  25. 绑定身份验证策略。
  26. 绑定已配置 RDP 客户端配置文件的会话策略/配置文件。
    绑定会话策略(/en-us/netscaler-gateway/media/figure23_vpnpolicybinding.png)
  27. 您可以将书签绑定到 NetScaler Gateway 虚拟服务器或身份验证、授权和审计组。要绑定到 NetScaler Gateway 虚拟服务器,请在右侧的“高级设置”部分中,单击“已发布的应用程序”。
    单击已发布的应用程序(/en-us/netscaler-gateway/media/figure24_publishedapplications.png)
  28. 在左侧的“已发布的应用程序”部分中,单击“无 Url”。
    设置无 URL(/en-us/netscaler-gateway/media/figure25_publishedapplications2.png)
  29. 绑定您的书签。
    绑定书签(/en-us/netscaler-gateway/media/figure26_bindbookmarks.png)
  30. 由于未为此 NetScaler Gateway 虚拟服务器指定“仅限 ICA”,请确保您的 NetScaler Gateway Universal 许可证已正确配置。在左侧,展开“NetScaler Gateway”,然后单击“全局设置”。
    设置全局设置(/en-us/netscaler-gateway/media/figure27_globalsettings.png)
  31. 在右侧,单击“更改身份验证 AAA 设置”。
    更改身份验证设置(/en-us/netscaler-gateway/media/figure28_changeauthenticationaaasettings.png)
  32. 将“最大用户数”更改为您的许可限制。
    设置最大用户数(/en-us/netscaler-gateway/media/figure29_configureaaaparameter.png)
  33. 如果要使用 DNS 连接到 RDP 服务器,请确保设备上配置了 DNS 服务器(流量管理 > DNS > 名称服务器)。
    配置 DNS 服务器(/en-us/netscaler-gateway/media/figure30_dnsservers.png)
  34. 如果您想使用短名称而不是 FQDN,请添加 DNS 后缀(流量管理 > DNS > DNS 后缀)。
    使用 FQDN
  35. 连接到您的网关并登录。
    连接到网关
  36. 如果您配置了书签,请单击书签。
    单击书签
  37. 您可以将地址栏更改为 /rdpproxy/MyRDPServer。您可以输入 IP 地址(例如 rdpproxy/192.168.1.50)或 DNS 名称(/rdpproxy/myserver)。
    更改地址栏
  38. 打开下载的 .rdp file。
    下载 RDP 文件
  39. 您可以通过导航到 NetScaler Gateway 策略 > RDP 来查看当前连接的用户。右侧是连接选项卡。
    单击连接选项卡

禁用 SSO 的选项

通过配置 NetScaler 流量策略,可以禁用 RDP 代理的 SSO(单点登录)功能,以便始终提示用户输入凭据。禁用 SSO 后,RDP 强制执行 (SmartAccess) 将不起作用。
示例:
add vpn trafficaction <TrafficActionName> HTTP -SSO OFF
流量策略可以根据要求进行配置,以下是两个示例:
  • 禁用所有流量的SSO:
    add vpn trafficpolicy <TrafficPolicyName>  "url contains rdpproxy" <TrafficActionName>
  • 基于源/目标IP/FQDN禁用SSO
    add vpn trafficPolicy <TrafficPolicyName>  "HTTP.REQ.URL.CONTAINS(\"rdpproxy\") && CLIENT.IP.SRC.EQ(<IP>)" <TrafficActionName>
    bind vpnvserver rdp -policy <TrafficPolicyName> -priority 10