无状态 RDP 代理

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

连接流程

RDP 代理流程中涉及两个连接。第一个连接是用户与 Citrix Gateway VIP 的 SSL VPN 连接,以及 RDP 资源的枚举。
第二个连接是与 Citrix Gateway 上的 RDP 侦听器(使用 RDPip 和 RDPort 配置)的本机 RDP 客户端连接,以及随后将 RDP 客户端安全地代理到服务器数据包。
连接流程图
  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)作为 loadbalanceinfo 放置在 .rdp 文件中。
  8. .rdp 文件将被发送回客户端端点。
  9. 本机 RDP 客户端启动并连接到 RDPListener Gateway。它以最初的 x.224 数据包发送 STA 票证。
  10. RDPListener Gateway 验证 STA 票证并获取 RDPTarget 和 RDPUser 信息。要使用的 STA 服务器是使用中存在的“AuthID”检索的 loadbalanceinfo。
  11. 创建网关会话用于存储授权/审核策略。如果用户存在会话,则会重复使用该会话。
  12. RDPListener Gateway 使用 CREDSSP 连接到 RDPTarget 和单点登录。

必备条件

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

使用 CLI 配置无状态 RDP 代理

  • 添加 rdpServer 配置文件。服务器配置文件在上配置 RDPListener Gateway。
    注意:
    • 一旦在 VPN 虚拟服务器上配置了 RDP 服务器配置文件,就无法对其进行修改。此外,同一 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,它保留了正在使用的活动连接数的记录。它可以被视为 Citrix ADC shell 上 nsconmsg 命令的一部分。计划稍后添加查看这些计数器的 CLI 命令。

升级说明

之前在 VPN 虚拟服务器上配置的 RdpIP 和 rdPort 是 RdpServerProfile 的一部分。将 rdp Profile 重命名为 rdp ClientProfile,并删除参数 clientSSL。因此,早期的配置不起作用。