使用直接工作负载连接优化工作区的连接

借助 Citrix Cloud 中的直接工作负载连接,您可以优化工作区中应用程序和桌面的内部流量,从而加快 HDX 会话的速度。通常,内部和外部网络上的用户都通过外部网关连接到 VDA。此网关可能位于组织内部或作为 Citrix 提供的服务并添加到 Citrix Cloud 中的资源位置。直接工作负载连接允许内部用户绕过网关直接连接到 VDA,从而减少内部网络流量的延迟。

要设置 Direct Workload Connection,您需要与客户端在您的环境中启动应用程序和桌面的位置相对应的网络位置。使用网络定位服务 (NLS) 为这些客户端所在的每个办公地点添加一个公共地址。有两种配置网络位置的选项:

  • 使用 Citrix Cloud 中的 网络位置 菜单选项。
  • 使用 Citrix 提供的 PowerShell 模块

网络位置与内部用户连接的网络的公共 IP 范围相对应,例如您的办公室或分支机构位置。Citrix Cloud 使用公有 IP 地址来确定启动虚拟应用程序或桌面的网络是公司网络的内部网络还是外部网络。如果用户从内部网络连接,Citrix Cloud 会将连接直接路由到 VDA,而绕过 NetScaler Gateway。如果订阅者在外部连接,Citrix Cloud 会通过 NetScaler Gateway 将他们路由,然后通过 Citrix Cloud Connector 将会话流量定向到内部网络中的 VDA。如果使用 Citrix Gateway 服务并启用了 Rendezvous 协议,则 Citrix Cloud 会通过网关服务将外部用户路由到内部网络中的 VDA。漫游客户端(如便携式计算机)可能会使用这些网络路由中的任何一个,具体取决于启动时客户端是在公司网络内部还是外部。

重要:

如果您的环境包括 Citrix DaaS Standard for Azure 和本地 VDA,则配置直接工作负载连接会导致从内部网络启动失败。

Remote Browser Isolation、Citrix Virtual Apps Essentials 和 Citrix Virtual Desktops Essentials 资源启动始终通过网关路由。配置直接工作负载连接不会提高这些启动的性能。

要求

网络要求

  • 企业网络和访客 Wi-Fi 网络必须有单独的公有 IP 地址。如果您的公司和访客网络共享公有 IP 地址,则访客网络上的用户无法启动 DaaS 会话。
  • 使用内部用户连接的网络的公有 IP 地址范围。这些网络中的内部用户必须直接连接到 VDA。否则,当 Workspace 尝试将内部用户直接路由到 VDA 时,虚拟资源的启动将失败,这是不可能的。
  • 尽管 VDA 通常位于本地网络中,但您也可以使用托管在公共云(如 Microsoft Azure)内的 VDA。客户端启动必须具有网络路由,以便在不被防火墙阻止的情况下联系 VDA。这需要使用从本地网络到 VDA 所在的虚拟网络的 VPN 隧道。

TLS 要求

配置网络位置时,必须在 PowerShell 中启用 TLS 1.2。要强制 PowerShell 使用 TLS 1.2,请在使用 PowerShell 模块之前使用以下命令:

[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12

Workspace 要求

  • 您在 Citrix Cloud 中配置了工作区。
  • Citrix DaaS 已在 Workspace 配置 > 服务集成中启用。

为适用于 HTML5 的 Workspace 应用程序连接启用 TLS

如果您的订阅者使用适用于 HTML5 的 Citrix Workspace 应用程序启动应用程序和桌面,Citrix 建议您在内部网络中的 VDA 上配置 TLS。将 VDA 配置为使用 TLS 连接可确保可以直接启动 VDA。如果 VDA 未启用 TLS,则当订阅者使用适用于 HTML5 的 Citrix Workspace 应用程序时,必须通过网关路由应用程序和桌面启动。使用Desktop Viewer 启动不会受到影响。有关使用 TLS 保护直接 VDA 连接的更多信息,请参阅 Citrix 支持知识中心中的 CTX134123

通过 GUI 添加网络位置

通过 Citrix Cloud 进行直接工作负载连接配置涉及使用内部用户连接的每个分支位置的公有 IP 地址范围创建网络位置。

  1. 在 Citrix Cloud 控制台中,导航到网络位置

  2. 单击“添加网络位置”。

  3. 输入该位置的网络位置名称和公有 IP 地址范围。

    添加网络位置

  4. 单击保存

  5. 对要添加的每个新网络位置重复这些步骤。

注意:

直接工作负载连接不需要位置标记,因为连接类型始终为内部。只有启用自适应访问功能,添加网络位置页面(Citrix Cloud > 网络位置 > 添加网络位置 > 位置标记)中的位置标记字段才可见。有关详细信息,请参阅 启用自适应访问功能

修改或移除网络位置

  1. 在 Citrix Cloud 控制台中,从主菜单导航到 网络位置
  2. 找到要管理的网络位置,然后单击省略号按钮。

    突出显示省略号按钮的网络位置列表

  3. 选择以下命令之一:
    • 选择“编辑”以修改网络位置。进行更改后,单击“保存”。
    • 选择“删除”以删除网络位置。选择“是,删除”以确认删除。您无法撤消此操作。

使用 PowerShell 添加和修改网络位置

您可以使用 PowerShell 脚本来配置直接工作负载连接,而不是使用 Citrix Cloud 管理控制台界面。使用 PowerShell 进行直接工作负载连接配置涉及以下任务:

  1. 确定内部用户连接的每个分支机构的公有 IP 地址范围。
  2. 下载 PowerShell 模块
  3. 在 Citrix Cloud 中@@创建安全 API 客户 端,并记下客户端 ID 和密钥。
  4. 导入 PowerShell 模块 并使用您的 API 客户端详细信息连接到网络定位服务 (NLS)。
  5. 使用您之前确定的公有 IP 地址范围为您的每个分支机构创建 NLS 站点。对于来自您指定的内部网络位置的任何启动,都会自动启用 Direct Workload Connection。
  6. 从内部网络上的设备启动应用程序或桌面,并验证该连接是否绕过网关直接连接到 VDA。有关更多信息,请参阅本文中的 ICA 文件日志记录

下载 PowerShell 模块

在设置网络位置之前,请从 Citrix GitHub 存储库下载 Citrix 提供的 PowerShell 模块 (nls.psm1)。使用此模块,您可以根据需要为 VDA 设置任意数量的网络位置。

  1. 在 Web 浏览器中,前往 https://github.com/citrix/sample-scripts/blob/master/workspace/NLS2.psm1
  2. 在单击 Raw 按钮的同时按 ALT突出显示原始按钮的 GitHub 文件视图
  3. 在计算机上选择一个位置,然后单击“保存”。

必需的配置详情

要设置网络位置,您需要以下必需信息:

  • Citrix Cloud 安全客户端客户 ID、客户端 ID 和客户端密钥。要获取这些值,请参阅本文中的 创建安全客户端
  • 内部用户连接的网络的公用 IP 地址范围。有关这些公有 IP 地址范围的更多信息,请参阅本文中的 要求

创建安全的客户端

  1. 登录到 Citrix Cloud,网址为 https://citrix.cloud.com
  2. 从 Citrix Cloud 菜单中,选择 身份和访问管理 ,然后选择 API 访问
  3. 在“安全客户端”选项卡上,记下您的客户 ID。

    突出显示客户 ID 的安全客户端控制台

  4. 输入客户机的名称,然后选择“创建客户端”。
  5. 复制客户端 ID 和客户端密钥。

    “保护客户端 ID 和密钥”对话框

配置网络位置

  1. 打开 PowerShell 命令窗口,然后导航到保存 PowerShell 模块的相同目录。
  2. 导入模块: Import-Module .\nls.psm1 -Force
  3. 使用 创建安全客户端中的安全客户端信息设置所需的变量:
    • $clientId = "YourSecureClientID"
    • $customer = "YourCustomerID"
    • $clientSecret = "YourSecureClientSecret"
  4. 使用您的安全客户端凭据连接到网络定位服务:

    Connect-NLS -clientId $clientId -clientSecret $clientSecret -customer $customer
    
  5. 创建网络位置,将参数值替换为与您的内部用户直接连接的内部网络相对应的值:

    New-NLSSite -name "YourSiteName" -tags @("YourTags") -ipv4Ranges @("PublicIpsOfYourNetworkSites") -longitude 12.3456 -latitude 12.3456 -internal $True
    

    要指定单个 IP 地址而不是范围,请在 IP 地址末尾添加 /32 。例如:

    New-NLSSite -name "YourSiteName" -tags @("YourTags") -ipv4Ranges @("PublicIpOfYourNetworkSite/32") -longitude 12.3456 -latitude 12.3456 -internal $True
    

    重要:

    使用 New-NLSSite 命令时,每个参数至少包含一个值。如果您在没有任何命令行参数的情况下运行此命令,PowerShell 会提示您为每个参数输入相应的值,一次只能输入一个值。internal 属性是一个强制性的布尔属性,具有可能的值:通过 PowerShell 映射到用户界面的 $True$False。例如,(UI) Network Internal -> (PowerShell) –internal=$True

    成功创建网络位置后,命令窗口将显示网络位置的详细信息。

  6. 对用户连接的所有网络位置重复步骤 5。
  7. 运行命令 Get-NLSSite 以返回已使用 NLS 配置的所有站点的列表,并验证其详细信息是否正确。

修改网络位置

要更改现有网络位置,请执行以下操作:

  1. 在 PowerShell 命令窗口中,列出所有现有的网络位置: Get-NLSSite
  2. 要修改特定网络位置的 IP 范围,请键入

    (Get-NLSSite)[N] | Set-NLSSite -ipv4Ranges @("1.2.3.4/32","4.3.2.1/32")

    其中 [N] 是与列表中的位置(以零开头)对应的数字, "1.2.3.4/32","4.3.2.1/32" 是要使用的逗号分隔的 IP 范围。例如,要修改列出的第一个位置,请键入以下命令:

    (Get-NLSSite)[0] | Set-NLSSite -ipv4Ranges @("98.0.0.1/32","141.43.0.0/24")

移除网络位置

要移除不想再使用的网络位置,请执行以下操作:

  1. 在 PowerShell 命令窗口中,列出所有现有的网络位置: Get-NLSSite
  2. 要移除所有网络位置,请键入 Get-NLSSite | Remove-NLSSite
  3. 要移除特定的网络位置,请键入 (Get-NLSSite)[N] | Remove-NLSSite,其中 [N] 是与列表中的位置相对应的数字。例如,要移除列出的第一个位置,请键入 (Get-NLSSite)[0] | Remove-NLSSite

检验内部启动路由是否正确

要验证内部启动是否直接访问 VDA,请使用以下方法之一:

  • 通过 DaaS 控制台查看 VDA 连接。
  • 使用 ICA 文件日志记录来验证客户端连接的地址是否正确。

Citrix DaaS 控制台

选择“管理”>“监视”,然后搜索具有活动会话的用户。在控制台的会话详细信息部分中,直接 VDA 连接显示为 UDP 连接,而网关连接显示为 TCP 连接。

如果您在 DaaS 控制台上看不到 UDP,则必须为 VDA 启用 HDX 自适应传输策略。

ICA 文件日志记录

在客户端计算机上启用 ICA 文件日志记录,如 启用 launch.ica 文件日志记录中所述。启动会话后,检查日志文件中的 Ad dress 和 SSLProxyHost 条目。

直接 VDA 连接

对于直接 VDA 连接, 地址 属性包含 VDA 的 IP 地址和端口。

以下是客户端使用 NLS 启动应用程序时的 ICA 文件示例:

[Notepad++ Cloud]
Address=;10.0.1.54:1494
SSLEnable=Off
<!--NeedCopy-->

此文件中不存在 SSLProxyHost 属性。只有通过网关启动时才包含此属性。

网关连接

对于网关连接, 地址属性包含 Citrix Cloud STA 票证, SSLEnable 属性设置为SSLProxyHost 属性包含网关的 FQDN 和端口

以下是客户端通过 Citrix Gateway 服务建立连接并启动应用程序时的 ICA 文件示例:

[PowerShell ISE Cloud]
Address=;40;CWSSTA;027C02199068B33889A40C819A85CBB4
SSLEnable=On
SSLProxyHost=global.g.nssvcstaging.net:443
<!--NeedCopy-->

以下是 ICA 文件的示例,当客户端通过本地网关建立连接并使用在资源位置中配置的本地网关启动应用程序时:

[PowerShell ISE Cloud]
Address=;40;CWSSTA;027C02199068B33889A40C819A85CBB5
SSLEnable=On
SSLProxyHost=onpremgateway.domain.com:443
<!--NeedCopy-->

注意:

用于启动虚拟应用程序和桌面的本地网关虚拟服务器必须是 VPN 虚拟服务器,而不是 nFactor 身份验证虚拟服务器。nFactor 身份验证虚拟服务器仅用于用户身份验证,不代理资源 HDX 和 ICA 启动流量。

示例脚本

该示例脚本包含可能需要添加、修改和删除分支机构位置的公有 IP 地址范围的所有命令。但是,您无需运行所有命令即可执行任何单个功能。要运行脚本,请务必包含从 Import-ModuleConnect-NLS 的前 10 行。之后,您只能包含要执行的功能的命令。

Import-Module .\nls.psm1 -Force

$clientId = "XXXX" #Replace with your clientId
$clientSecret = "YYY"    #Replace with your clientSecret
$customer = "CCCCCC"  #Replace with your customerid

# Connect to Network Location Service
Connect-NLS -clientId $clientId -clientSecret $clientSecret -customer $customer

# Create a new Network Location Service Site (Replace with details corresponding to your branch locations)
New-NLSSite -name "New York" -tags @("EastCoast") -ipv4Ranges @("1.2.3.0/24") -longitude 40.7128 -latitude -74.0060 -internal $True

# Get the existing Network Location Service Sites (optional)
Get-NLSSite

# Update the IP Address ranges of your first Network Location Service Site (optional)
$s = (Get-NLSSite)[0]
$s.ipv4Ranges = @("1.2.3.4/32","4.3.2.1/32")
$s | Set-NLSSite

# Remove all Network Location Service Sites (optional)
Get-NLSSite | Remove-NLSSite

# Remove your third site (optional)
(Get-NLSSite)[2] | Remove-NLSSite

故障排除

VDA 启动失败

如果 VDA 会话无法启动,请验证您使用的是来自正确网络的公有 IP 地址范围。配置网络位置时,必须使用内部用户连接的网络的公有 IP 地址范围来访问 Internet。有关更多信息,请参阅本文中的 要求

内部 VDA 启动仍通过网关路由

如果内部启动的 VDA 会话仍像外部会话一样通过网关进行路由,请验证您使用的是内部用户连接的正确公有 IP 地址来访问他们的工作区。NLS 站点中列出的公用 IP 地址必须与启动资源的客户端用于访问 Internet 的地址相对应。要为客户端获取正确的公有 IP 地址,请登录客户端计算机,访问搜索引擎,然后在搜索栏中输入“我的 IP 是什么”。

在同一办公地点启动资源的所有客户端通常都使用相同的网络出口公有 IP 地址访问 Internet。这些客户端必须具有通往 VDA 所在子网的互联网网络路由,该路径不受防火墙阻止。有关更多信息,请参阅本文中的 要求

在非 Windows 平台上运行 PowerShell 命令时出错

如果在 PowerShell Core 上使用正确的参数运行 cmdlet 时遇到错误,请验证该操作是否已成功执行。例如,如果在运行 New-NLSSite cmdlet 时遇到错误,请运行 Get-NLSSite 以验证站点是否已创建。即使操作成功运行,使用 PowerShell Core 在 macOS 或 Linux 平台上运行这些 cmdlet 也可能会导致错误。

如果您在使用 PowerShell 的 Windows 平台上使用正确的参数运行 cmdlet 时遇到此问题,请确保您使用的是最新版本的 PowerShell 模块。对于最新版本的 PowerShell 模块,Windows 平台上不会出现此问题。

其他帮助和支持

有关疑难解答帮助或疑问,请联系您的 Citrix 销售代表或 Citrix 支持人员。

使用直接工作负载连接优化工作区的连接