无状态 RDP 代理

Last published : Oct 14, 2026
无状态 RDP 代理访问 RDP 主机。当用户在单独的 NetScaler Gateway 身份验证器上进行身份验证时,通过 NetScaler Gateway 上的 RDPListener 授予访问权限。NetScaler Gateway 所需的 RDPListener 信息安全地存储在 STA 服务器上。只要 NetScaler Gateway 和应用程序枚举服务器可以访问,STA 服务器就可以放置在任何位置。有关详细信息,请参阅 <https://support.citrix.com/article/CTX101997>。

连接流程

RDP 代理流程涉及两种连接。第一种连接是用户到 NetScaler Gateway VIP 的 SSL VPN 连接,以及 RDP 资源的枚举。
第二种连接是本机 RDP 客户端到 NetScaler Gateway 上的 RDP 侦听器(使用 rdpIP 和 rdpPort 配置)的连接,以及随后安全地代理 RDP 客户端到服务器的数据包。
连接流程图 (/en-us/netscaler-gateway/media/figure2_statelessgatewaycompatibility.png)
  1. 用户连接到身份验证器网关 VIP 并提供凭据。
  2. 成功登录网关后,用户将被重定向到主页/外部门户,该门户枚举用户可以访问的远程桌面资源。
  3. 用户选择 RDP 资源后,身份验证器网关 VIP 收到一个格式为 https://AGVIP/rdpproxy/ip:port/rdptargetproxy 的请求,指示用户点击的已发布资源。此请求包含用户选择的 RDP 服务器的 IP 和端口信息。
  4. 身份验证器网关处理 /rdpproxy/ 请求。由于用户已通过身份验证,此请求附带有效的网关 cookie。
  5. RDPTarget 和 RDPUser 信息存储在 STA 服务器上,并生成一个 STA 票证。该信息以 XML blob 的形式存储,可选择使用配置的预共享密钥进行加密。如果加密,则 blob 会进行 base64 编码并存储。身份验证器网关使用在网关虚拟服务器上配置的 STA 服务器之一。
  6. XML blob 的格式如下
    <Value name=”IPAddress”>ipaddr</Value>\n<Value name=”Port”>port</Value\>n

    <Value name=”`Username`”>username</Value\>\n<Value name=”Password”>pwd\</Value\>
  7. 在 /rdpproxy/ 请求中获得的 rdptargetproxy 被设置为 'fulladdress',并且 STA 票证(前缀为 STA AuthID)被设置为 .rdp 文件中的 loadbalanceinfo。
  8. .rdp 文件被发送回客户端端点。
  9. 本机 RDP 客户端启动并连接到 RDPListener Gateway。它在初始 x.224 数据包中发送 STA 票证。
  10. RDPListener Gateway 验证 STA 票证并获取 RDPTarget 和 RDPUser 信息。要使用的 STA 服务器是使用 loadbalanceinfo 中存在的“AuthID”检索的。
  11. 为存储授权/审计策略创建网关会话。如果用户已存在会话,则会重用该会话。
  12. RDPListener Gateway 连接到 RDPTarget 并使用 CREDSSP 进行单点登录。

先决条件

  • 用户在 NetScaler Gateway 身份验证器上进行身份验证。
  • 初始的 /rdpproxy URL 和 RDP 客户端连接到不同的 RDPListener NetScaler Gateway。
  • 使用 STA 服务器的身份验证器网关安全地传递 RDPListener Gateway 信息。

使用 CLI 配置无状态 RDP 代理

  • 添加 rdpServer 配置文件。服务器配置文件在 RDPListener Gateway 上配置。
    注意:
    • 一旦在 VPN 虚拟服务器上配置了 rdpServer 配置文件,就无法修改。此外,同一个 serverProfile 不能在另一个 VPN 虚拟服务器上重复使用。
    add rdpServer Profile [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 服务器配置文件:
    add vpn vserver v1 SSL [publicIP] [portforterminatingvpnconnections] -rdpServerProfile [rdpServer Profile]
    示例
    add vpn vserver v1 SSL 1.1.1.1 443 -rdpServerProfile rdp_server_prof  
    重要提示:
    • 相同的 STA 服务器必须绑定到 RDP 身份验证器网关和侦听器网关。
    • 对于无状态 RDP 代理,STA 服务器验证 RDP 客户端发送的 STA 票证,以获取 RDP 目标服务器和 RDP 用户信息。除了 VPN 虚拟服务器之外,您还必须绑定 STA 服务器。在以下示例中,RDP 目标服务器是 1.1.1.0,RDP 侦听器网关虚拟服务器是 1.1.1.2。
    add vpn url url4 RDP2 "rdp://1.1.1.0/1.1.1.2:443"
使用以下命令在身份验证器网关上配置客户端配置文件:
add rdpClient profile <name> -rdpHost <optional FQDN that will be put in the RDP file as ‘fulladdress’> [-rdpUrlOverride ( ENABLE | DISABLE )] [-redirectClipboard ( ENABLE | DISABLE )] [-redirectDrives ( ENABLE | DISABLE )]

        [-redirectPrinters ( ENABLE | DISABLE )] [-keyboardHook <keyboardHook>] [-audioCaptureMode ( ENABLE | DISABLE )] [-videoPlaybackMode ( ENABLE | DISABLE )]

        [-rdpCookieValidity <positive_integer>][-multiMonitorSupport ( ENABLE | DISABLE )] [-rdpCustomParams <string>]
–rdpHost 配置用于单个网关部署。只有 psk 是必填参数,它必须与 RDP 侦听器网关中 RDP 服务器配置文件中添加的 PSK 相同。
  • 将 RDP 配置文件与 VPN 虚拟服务器关联。
您可以通过配置 sessionAction+sessionPolicy 或设置全局 VPN 参数来关联 RDP 配置文件。
示例:
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>

使用 GUI 配置无状态 RDP 代理

无状态 RDP 代理配置涉及以下高级步骤。有关详细步骤,请参阅 RDP 代理配置。
  • 创建 RDP 服务器配置文件
  • 创建 RDP 客户端配置文件
  • 创建虚拟服务器
  • 创建书签
  • 创建或编辑会话配置文件或策略
  • 绑定书签
重要提示:
对于无状态 RDP 代理,除了 VPN 虚拟服务器之外,您还必须绑定一个 STA 服务器。

连接计数器

添加了一个新的连接计数器 ns_rdp_tot_curr_active_conn,用于记录正在使用的活动连接数。它可以在 NetScaler shell 上作为 nsconmsg 命令的一部分进行查看。查看这些计数器的 CLI 命令计划稍后添加。

升级说明

以前在 VPN 虚拟服务器上配置的 rdpIP 和 rdpPort 现在是 rdpServerProfile 的一部分。rdp Profile 已重命名为 rdp ClientProfile,并且参数 clientSSL 已删除。因此,以前的配置将不再起作用。