Product Documentation

安装 Linux Virtual Delivery Agent for Ubuntu

Jun 04, 2018

可以选择按照本文中的步骤进行手动安装,也可以使用轻松安装进行自动安装和配置。轻松安装省时又省力,与手动安装相比,可能出现的错误更少。 

注意:请仅对全新安装使用轻松安装功能。请勿使用轻松安装更新现有安装。

步骤 1:为 VDA 安装准备 Ubuntu

步骤 1a:验证网络配置

Citrix 建议先连接并正确配置网络,然后再继续操作。

步骤 1b:设置主机名

为确保正确报告计算机的主机名,请更改 /etc/hostname 文件,使其仅包含计算机的主机名。

主机名

步骤 1c:为主机名分配环回地址

为确保正确报告计算机的 DNS 域名和 FQDN,请更改 /etc/hosts 文件中的以下行,使其前两个条目为 FQDN 和主机名:

127.0.0.1  hostname-fqdn hostname localhost

例如:

127.0.0.1 vda01.example.com vda01 localhost

从文件中的其他条目中删除对 hostname-fqdnhostname 的任何其他引用。

注意

Linux VDA 当前不支持 NetBIOS 名称截断。因此,主机名不得超过 15 个字符。

提示

只能使用字符 a-z、A-Z、0-9 和连字符 (-)。请避免使用下划线 (_)、空格和其他符号。主机名不得以数字开头和以连字符结尾。此规则也适用于 Delivery Controller 主机名。

步骤 1d:检查主机名

验证主机名设置是否正确无误:

命令 复制

hostname

此命令仅返回计算机的主机名,而不返回其 FQDN。

验证 FQDN 设置是否正确无误:

命令 复制

hostname -f

此命令返回计算机的 FQDN。

步骤 1e:禁用多播 DNS

默认设置启用多播 DNS (mDNS),而这可能会导致名称解析结果不一致。

要禁用 mDNS,请编辑 /etc/nsswitch.conf,并更改包含以下内容的行:

配置 复制

hosts: files mdns_minimal [NOTFOUND=return] dns

更改为:

配置 复制

hosts: files dns

步骤 1f:检查名称解析和服务可访问性

验证能否解析 FQDN 并 Ping 通域控制器和 XenDesktop Delivery Controller:

命令 复制

nslookup domain-controller-fqdn

ping domain-controller-fqdn

nslookup delivery-controller-fqdn

ping delivery-controller-fqdn

如果无法解析 FQDN 或 Ping 不通上述任一计算机,请先检查相关步骤,然后再继续。

步骤 1g:配置时钟同步 (chrony)

确保 VDA、Delivery Controller 和域控制器之间的时钟始终精确同步至关重要。将 Linux VDA 托管为虚拟机可能会导致时钟偏差问题。出于此原因,最好使用远程时间服务来同步时间。

安装 chrony:

命令 复制

apt-get install chrony

以 root 用户身份,编辑 /etc/chrony/chrony.conf 并为每个远程时间服务器添加一个服务器条目:

配置 复制

server peer1-fqdn-or-ip-address iburst

server peer2-fqdn-or-ip-address iburst

在典型部署中,时间从本地域控制器同步,而不是直接从公共 NTP 池服务器同步。为域中的每个 Active Directory 域控制器添加一个服务器条目。

删除列出的任何其他 serverpool 条目,包括环回 IP 地址、本地主机和公共服务器 *.pool.ntp.org 条目。

保存更改并重新启动 Chrony 守护程序:

命令 复制

sudo systemctl restart chrony

步骤 1h:安装 OpenJDK

Linux VDA 依赖于 OpenJDK。通常,运行时环境作为操作系统安装的一部分进行安装。使用以下命令检查是否已安装它:

命令 复制

sudo apt-get install -y default-jdk

步骤 1i:安装 PostgreSQL

Linux VDA 要求在 Ubuntu 16.04 上安装 PostgreSQL 9.x 版:

命令 复制

sudo apt-get install -y postgresql

sudo apt-get install -y libpostgresql-jdbc-java

步骤 1j:安装 Motif

命令 复制

sudo apt-get install -y libxm4

步骤 1k:安装其他软件包

命令 复制

sudo apt-get install -y libsasl2-2

sudo apt-get install -y libsasl2-modules-gssapi-mit

sudo apt-get install -y libldap-2.4-2

sudo apt-get install -y krb5-user

sudo apt-get install -y cups

步骤 2:准备虚拟机管理程序

在支持的虚拟机管理程序上将 Linux VDA 当作虚拟机运行时,需要作出一些更改。根据使用的虚拟机管理程序平台作出以下更改。如果正在裸机硬件上运行 Linux 计算机,则无需作出任何更改。

修复 Citrix XenServer 上的时间同步问题

启用了 XenServer 时间同步功能时,在每个半虚拟化 Linux VM 中,您会发现 NTP 和 XenServer 都尝试管理系统时钟。为避免时钟与其他服务器不同步,请确保每个 Linux 客户机中的系统时钟都与 NTP 同步。这种情况要求禁用主机时间同步。无需在 HVM 模式下进行任何更改。

在某些 Linux 发行版中,如果正在运行半虚拟化 Linux 内核,并安装了 XenServer Tools,您可以检查 XenServer 时间同步功能是否存在,以及是否已在 Linux VM 中启用:

命令 复制

su -

cat /proc/sys/xen/independent_wallclock

此命令返回 0 或 1:

  • 0 - 时间同步功能已启用,且必须禁用。
  • 1 - 时间同步功能已禁用,无需采取任何操作。

如果 /proc/sys/xen/indepent_wallclock 文件不存在,则无需执行以下步骤。

如果已启用,请向该文件写入 1 以禁用时间同步功能:

命令 复制

sudo echo 1 > /proc/sys/xen/independent_wallclock

要使此更改成为永久更改,并在重新启动后仍然有效,请编辑 /etc/sysctl.conf 文件并添加以下行:

配置 复制

xen.independent_wallclock = 1

要验证这些更改,请重新启动系统:

命令 复制

su -

cat /proc/sys/xen/independent_wallclock

此命令返回值 1。

在 Microsoft Hyper-V 上修复时间同步问题

安装了 Hyper-V Linux 集成服务的 Linux VM 可利用 Hyper-V 时间同步功能来使用主机操作系统的时间。为确保系统时钟始终精确可靠,此功能必须随 NTP 服务一同启用。

从管理操作系统中:

  1. 打开 Hyper-V 管理器控制台。 
  2. 对于 Linux VM 的设置,请选择 Integration Services(集成服务)。 
  3. 确保已选择 Time synchronization(时间同步)。 

注意

此方法与 VMware 和 XenServer 不同,这两种产品会禁用主机时间同步功能,以免与 NTP 发生冲突。Hyper-V 时间同步可以与 NTP 时间同步共存并互补。

修复 ESX 和 ESXi 上的时间同步问题

启用了 VMware 时间同步功能时,在每个半虚拟化 Linux VM 中,您会发现 NTP 和虚拟机管理程序都尝试同步系统时钟。为避免时钟与其他服务器不同步,请确保每个 Linux 客户机中的系统时钟都与 NTP 同步。这种情况要求禁用主机时间同步。

如果正在运行安装了 VMware Tools 的半虚拟化 Linux 内核:

  1. 打开 vSphere Client。
  2. 编辑 Linux VM 设置。
  3. Virtual Machine Properties(虚拟机属性)对话框中,打开 Options(选项)选项卡。
  4. 选择 VMware Tools
  5. Advanced(高级)框中,清除 Synchronize guest time with host(与主机同步客户机时间)。

步骤 3:向 Windows 域中添加 Linux 虚拟机 (VM)

Linux VDA 支持多种向 Active Directory (AD) 域添加 Linux 计算机的方法:

  • Samba Winbind
  • Quest Authentication Service
  • Centrify DirectControl
  • SSSD

根据所选的方法,按说明执行操作。

注意

为 Linux VDA 中的本地帐户和 AD 中的帐户使用相同的用户名时,会话启动可能会失败。

Samba Winbind

安装或更新所需软件包:

命令 复制

sudo apt-get install winbind samba libnss-winbind libpam-winbind krb5-config krb5-locales krb5-user

启用 Winbind 守护程序以在计算机启动时启动

Winbind 守护程序必须配置为在计算机启动时启动:

命令 复制

sudo systemctl enable winbind

配置 Kerberos

以 root 用户身份,打开 /etc/krb5.conf 并配置以下设置:

配置 复制

[libdefaults]
default_realm = REALM
dns_lookup_kdc = false

[realms]
REALM = {
admin_server = domain-controller-fqdn
kdc = domain-controller-fqdn
}

[domain_realm]
domain-dns-name = REALM
.domain-dns-name = REALM

此上下文中的 domain-dns-name 属性为 DNS 域名,例如 example.comREALM 是大写的 Kerberos 领域名称,例如 EXAMPLE.COM

配置 Winbind 身份验证

手动配置 Winbind,因为 Ubuntu 没有诸如 RHEL 中的 authconfig 和 SUSE 中的 yast2 这类工具。

打开 /etc/samba/smb.conf 并配置以下设置:

配置 复制

[global]
workgroup = WORKGROUP
security = ADS
realm = REALM
encrypt passwords = yes
idmap config *:range = 16777216-33554431
winbind trusted domains only = no
kerberos method = secrets and keytab
winbind refresh tickets = yes
template shell = /bin/bash

WORKGROUPREALM 中的第一个字段,REALM 是大写的 Kerberos 领域名称。

配置 nsswitch

打开 /etc/nsswitch.conf 并将 winbind 附加到以下行:

配置 复制

passwd: compat winbind
group: compat winbind

加入 Windows 域

您的域控制器必须可访问,而且您必须具有有权将计算机添加到域的 Active Directory 用户帐户。

命令 复制

sudo net ads join REALM -U user

其中,REALM 是大写的 Kerberos 领域名称,user 是有权将计算机添加到域的域用户。

重新启动 winbind:

命令 复制

sudo systemctl restart winbind

为 Winbind 配置 PAM

运行以下命令,确保选中 Winbind NT/Active Directory authentication(Winbind NT/Active Directory 身份验证)和 Create home directory on login(在登录时创建主目录)选项:

命令 复制

sudo pam-auth-update

提示

仅当计算机加入域后,winbind 守护程序才会一直运行。

验证域成员身份

Delivery Controller 要求所有 VDA 计算机(不论是 Windows 还是 Linux)都要在 Active Directory 中有一个计算机对象。

运行 Samba 的 net ads 命令验证计算机是否已加入域:

命令 复制

sudo net ads testjoin

运行以下命令验证额外的域和计算机对象信息:

命令 复制

sudo net ads info

验证 Kerberos 配置

要验证 Kerberos 是否已正确配置为可与 Linux VDA 配合使用,请检查系统 keytab 文件是否已创建并包含有效密钥:

命令 复制

sudo klist -ke

此命令显示各种主体名称与密码套件组合可用的密钥列表。运行 Kerberos kinit 命令,使用这些密钥向域控制器验证计算机的身份:

命令 复制

sudo kinit -k MACHINE\$@REALM

计算机和领域名称必须指定为大写。美元符号 ($) 必须使用反斜杠 (\) 进行转义,以免发生 shell 替换。在某些环境中,DNS 域名与 Kerberos 领域名称不同。请确保使用领域名称。如果此命令成功运行,则不会显示任何输出。

使用以下命令验证计算机帐户的 TGT 票据已缓存:

命令 复制

sudo klist

使用以下命令检查计算机的帐户详细信息:

命令 复制

sudo net ads status

验证用户身份验证

使用 wbinfo 工具验证是否可向域验证域用户的身份:

命令 复制

wbinfo --krb5auth=domain\\username%password

这里指定的域为 AD 域名,而不是 Kerberos 领域名称。对于 bash shell,必须使用另一个反斜杠对反斜杠 (\) 字符进行转义。此命令返回一条成功或失败消息。

要验证 Winbind PAM 模块是否已正确配置,请使用域用户帐户登录 Linux VDA。该域用户帐户以前未曾使用过。

命令 复制

ssh localhost -l domain\\username

id -u

检查是否为 id -u 命令返回的 uid 创建了对应的 Kerberos 凭据缓存文件:

命令 复制

ls /tmp/krb5cc_uid

检查用户 Kerberos 凭据缓存中的票据是否有效且未过期:

命令 复制

klist

退出会话:

命令 复制

exit

直接登录 Gnome 或 KDE 控制台也可以执行类似的测试。

提示

如果使用域帐户登录时成功执行用户身份验证,但无法显示您的桌面,请重新启动计算机并重试。

Quest Authentication Service

在域控制器上配置 Quest

假定您已在 Active Directory 域控制器上安装并配置了 Quest 软件,而且已获得管理权限,有权在 Active Directory 中创建计算机对象。

允许域用户登录 Linux VDA 计算机

为了让域用户能够在 Linux VDA 计算机上建立 HDX 会话:

  1. 在 Active Directory 用户和计算机管理控制台中,为该用户帐户打开 Active Directory 用户属性。
  2. 选择 Unix Account(Unix 帐户)选项卡。
  3. 选中 Unix-enabled(已启用 Unix)。
  4. Primary GID Number(首选 GID 编号)设置为实际域用户组的组 ID。

注意

这些说明相当于设置域用户,以便他们可以使用控制台、RDP、SSH 或任何其他远程协议进行登录。

在 Linux VDA 上配置 Quest

SELinux 策略强制实施解决方法

默认 RHEL 环境会强制实施 SELinux。此强制功能会影响 Quest 使用的 Unix 域套接字 IPC 机制,并阻止域用户登录。

提示

解决此问题的方法有多种,如此处所述。

最方便的方法是禁用 SELinux。以 root 用户身份,编辑 /etc/selinux/config 并更改 SELinux 设置:

配置 复制

SELINUX=disabled

此更改要求重新启动计算机:

命令 复制

reboot

Important

请谨慎使用此设置。禁用后重新启用 SELinux 策略强制实施会导致完全锁定,即便是对 root 用户和其他本地用户也是如此。 

配置 VAS 守护程序

必须启用并断开自动续订 Kerberos 票据功能。必须禁用身份验证(脱机登录)功能:

命令 复制

sudo /opt/quest/bin/vastool configure vas vasd auto-ticket-renew-interval 32400

sudo /opt/quest/bin/vastool configure vas vas_auth allow-disconnected-auth false

此命令将续订间隔设为 9 小时(32,400 秒),即比默认的 10 小时票据生命周期短 1 小时。请在票据生命周期较短的系统上设置较低的值。

配置 PAM 和 NSS

要允许域用户通过 HDX 和其他服务(例如 su、ssh 和 RDP)进行登录,请运行以下命令以手动配置 PAM 和 NSS:

命令 复制

sudo /opt/quest/bin/vastool configure pam

sudo /opt/quest/bin/vastool configure nss

加入 Windows 域

使用 Quest vastool 命令将 Linux 计算机加入 Active Directory 域:

命令 复制

sudo /opt/quest/bin/vastool -u user join domain-name

用户为有权将计算机加入 Active Directory 域的域用户。domain-name 为域的 DNS 名称,例如 example.com。

验证域成员身份

Delivery Controller 要求所有 VDA 计算机(不论是 Windows 还是 Linux)都要在 Active Directory 中有一个计算机对象。验证 Quest 加入的 Linux 计算机是否位于域中:

命令 复制

sudo /opt/quest/bin/vastool info domain

如果计算机已加入域,此命令会返回域名。如果计算机未加入任何域,则会显示以下错误:

错误 复制

ERROR: No domain could be found.

ERROR: VAS_ERR_CONFIG: at ctx.c:414 in _ctx_init_default_realm

default_realm not configured in vas.conf. Computer may not be joined to domain

验证用户身份验证

要验证 Quest 是否可以通过 PAM 对域用户进行身份验证,请使用域用户帐户登录 Linux VDA。该域用户帐户以前未曾使用过。

命令 复制

ssh localhost -l domain\\username

id -u

检查是否为 id -u 命令返回的 UID 创建了对应的 Kerberos 凭据缓存文件:

命令 复制

ls /tmp/krb5cc_uid

检查 Kerberos 凭据缓存中的票据是否有效且未过期:

命令 复制

/opt/quest/bin/vastool klist

退出会话:

命令 复制

exit

Centrify DirectControl

加入 Windows 域

安装 Centrify DirectControl Agent 后,请使用 Centrify adjoin 命令将 Linux 计算机加入 Active Directory 域:

命令 复制

su – 

adjoin -w -V -u user domain-name

user 参数是有权将计算机加入 Active Directory 域的任何 Active Directory 域用户。domain-name 参数是将 Linux 计算机加入到的域的名称。

验证域成员身份

Delivery Controller 要求所有 VDA 计算机(不论是 Windows 还是 Linux)都要在 Active Directory 中有一个计算机对象。验证 Centrify 加入的 Linux 计算机是否位于域中:

命令 复制

su –

adinfo

检查 Joined to domain 值是否有效以及 CentrifyDC mode 是否返回了 connected。如果模式仍然卡在启动状态,则表明 Centrify 客户端遇到了服务器连接或身份验证问题。

使用以下命令可获得更全面的系统和诊断信息:

命令 复制

adinfo --sysinfo all

adinfo --diag

测试与各种 Active Directory 和 Kerberos 服务的连接:

命令 复制

adinfo --test

SSSD

配置 Kerberos

安装 kerberos

命令 复制

sudo apt-get install krb5-user

要配置 Kerberos,请以 root 用户身份打开 /etc/krb5.conf 并配置以下设置:

设置 复制

[libdefaults]

 default_realm = REALM

 dns_lookup_kdc = false

[realms]

 REALM = {

  admin_server = domain-controller-fqdn

  kdc = domain-controller-fqdn

 }

[domain_realm]

 domain-dns-name = REALM

 .domain-dns-name = REALM

此上下文中的 domain-dns-name 属性为 DNS 域名,例如 example.com。REALM 是大写的 Kerberos 领域名称,例如 EXAMPLE.COM。

加入域

必须将 SSSD 配置为使用 Active Directory 作为其身份提供程序并且使用 Kerberos 进行身份验证。但是,SSSD 并不提供用于加入域和管理系统 keytab 文件的 AD 客户端功能。有几种域加入方法:

  • adcli
  • samba
  • realmd

注意

本节仅提供 adclisamba 的信息。

使用 adcli 加入域

安装 adcli

安装所需的软件包:

命令 复制

sudo apt-get install adcli

通过 adcli 加入域

使用以下命令删除旧系统 keytab 文件并加入域:

命令 复制

su -

rm -rf /etc/krb5.keytab

adcli join domain-dns-name -U user -H hostname-fqdn

user 是有权将计算机添加到域的域用户。hostname-fqdn 是计算机的 FQDN 格式的主机名。

需要 -H 选项,adcli 才能生成格式为 host/hostname-fqdn@REALM 的 SPN(Linux VDA 要求使用此格式)。

验证系统 keytab

adcli 工具的功能有限,不提供测试计算机是否已加入域的方法。最佳备用方法为确保已创建系统 keytab 文件:

命令 复制

sudo klist -ket

验证每个键的时间戳是否与将计算机加入域的时间相匹配。

使用 samba 加入域

安装软件包

命令 复制

sudo apt-get install samba

配置 samba

打开 /etc/samba/smb.conf 并配置以下设置:

配置 复制

[global]

   workgroup = WORKGROUP

   security = ADS

   realm = REALM

   client signing = yes

   client use spnego = yes

   kerberos method = secrets and keytab

WORKGROUPREALM 中的第一个字段,REALM 是大写的 Kerberos 领域名称。

使用 samba 加入域

您的域控制器必须可访问,而且您必须具有有权将计算机添加到域的 Windows 帐户。

命令 复制

sudo net ads join REALM -U user

其中,REALM 是大写的 Kerberos 领域名称,user 是有权将计算机添加到域的域用户。

设置 SSSD

安装或更新所需软件包

如果尚未安装,请安装所需的 SSSD 和配置软件包:

命令 复制

sudo apt-get install sssd

如果已安装软件包,则建议进行更新:

命令 复制

sudo apt-get update sssd

注意

默认情况下,Ubuntu 中的安装过程将自动配置 nsswitch.conf 和 PAM 登录模块。

配置 SSSD

启动 SSSD 守护程序之前,需要更改 SSSD 配置。对于某些版本的 SSSD,/etc/sssd/sssd.conf 配置文件默认不安装,必须手动创建。以 root 用户身份创建或打开 /etc/sssd/sssd.conf 并配置以下设置:

配置 复制

[sssd]

services = nss, pam

config_file_version = 2

domains = domain-dns-name

 

[domain/domain-dns-name]

id_provider = ad

access_provider = ad

auth_provider = krb5

krb5_realm = REALM

# Set krb5_renewable_lifetime higher if TGT renew lifetime is longer than 14 days

krb5_renewable_lifetime = 14d

# Set krb5_renew_interval to lower value if TGT ticket lifetime is shorter than 2 hours

krb5_renew_interval = 1h

krb5_ccachedir = /tmp

krb5_ccname_template = FILE:%d/krb5cc_%U

# This ldap_id_mapping setting is also the default value

ldap_id_mapping = true

override_homedir = /home/%d/%u

default_shell = /bin/bash

ad_gpo_map_remote_interactive = +ctxhdx

注意

ldap_id_mapping 设置为 true,以便 SSSD 本身负责将 Windows SID 映射到 Unix UID。否则,Active Directory 必须能够提供 POSIX 扩展程序(有关详细信息,请参阅 RHEL 站点)。PAM 服务 ctxhdx 已添加到 ad_gpo_map_remote_interactive。有关详细信息,请参阅 SSSD GPO-Based Access Control(基于 SSSD GPO 的访问控制)。

此上下文中的 domain-dns-name 属性为 DNS 域名,例如 example.com。REALM 是大写的 Kerberos 领域名称,例如 EXAMPLE.COM。不需要配置 NetBIOS 域名。

提示

有关这些配置设置的信息,请参阅 sssd.conf 和 sssd-ad 的手册页。

SSSD 守护程序要求配置文件必须仅具有所有者读取权限:

命令 复制

sudo chmod 0600 /etc/sssd/sssd.conf

启动 SSSD 守护程序

运行以下命令立即启动 SSSD 守护程序,以及使守护程序在计算机启动时启动:

命令 复制

sudo systemctl start sssd

sudo systemctl enable sssd

PAM 配置

运行以下命令,确保选中 SSS authentication(SSS 身份验证)和 Create home directory on login(在登录时创建主目录)选项:

命令 复制

sudo pam-auth-update

验证域成员身份

Delivery Controller 要求所有 VDA 计算机(Windows 和 Linux)都要在 Active Directory 中有一个计算机对象。

使用 adcli 验证域成员关系

通过运行以下命令显示域信息:

命令 复制

sudo adcli info domain-dns-name

使用 samba 验证域成员关系

运行 Samba 的 net ads 命令验证计算机是否已加入域

命令 复制

sudo net ads testjoin

运行以下命令验证额外的域和计算机对象信息:

命令 复制

sudo net ads info

验证 Kerberos 配置

要验证 Kerberos 是否已正确配置为可与 Linux VDA 配合使用,请检查系统 keytab 文件是否已创建并包含有效密钥:

命令 复制

sudo klist -ke

此命令显示各种主体名称与密码套件组合可用的密钥列表。运行 Kerberos kinit 命令,使用这些密钥向域控制器验证计算机的身份:

命令 复制

sudo kinit -k MACHINE\$@REALM

计算机和领域名称必须指定为大写。美元符号 ($) 必须使用反斜杠 (\) 进行转义,以免发生 shell 替换。在某些环境中,DNS 域名与 Kerberos 领域名称不同。请确保使用领域名称。如果此命令成功运行,则不会显示任何输出。

使用以下命令检查计算机帐户的 TGT 票据是否已缓存:

命令 复制

sudo klist

验证用户身份验证

SSSD 不直接通过守护程序提供用于测试身份验证的命令行工具,只能通过 PAM 完成。

要验证 SSSD PAM 模块是否已正确配置,请使用域用户帐户登录 Linux VDA。该域用户帐户以前未曾使用过。

命令 复制

ssh localhost -l domain\\username

id -u

klist 

exit

检查 klist 命令返回的 Keberos 票据是否适用于该用户并且尚未过期。

以 root 用户身份,检查是否已为前面的 id -u 命令返回的 uid 创建相应的票据缓存文件:

命令 复制

ls /tmp/krb5cc_uid

可以通过登录 KDE 或 Gnome Display Manager 执行类似的测试。

步骤 4:安装 Linux VDA

步骤 4a:下载 Linux VDA 软件包

转至 Citrix Web 站点并根据您的 Linux 发行版下载相应的 Linux VDA 软件包。 

步骤 4b:安装 Linux VDA

使用 Debian 软件包管理器安装 Linux VDA 软件:

命令 复制

sudo dpkg -i xendesktopvda_7.18.0.430-1.ubuntu16.04_amd64.deb

Ubuntu 的 Debian 依赖项列表:

依赖项 复制

postgresql >= 9.5

libpostgresql-jdbc-java >= 9.2

default-jdk >= 2:1.8

imagemagick >= 8:6.8.9.9

ufw >= 0.35

ubuntu-desktop >= 1.361

libxrandr2 >= 2:1.5.0

libxtst6 >= 2:1.2.2

libxm4 >= 2.3.4

util-linux >= 2.27.1

bash >= 4.3

findutils >= 4.6.0

sed >= 4.2.2

cups >= 2.1

libldap-2.4-2 >= 2.4.42

libsasl2-modules-gssapi-mit >= 2.1.~

python-requests >= 2.9.1

libgoogle-perftools4 >= 2.4~

xserver-xorg-core >= 2:1.18

xserver-xorg-core << 2:1.19

x11vnc>=0.9.13

python-websockify >= 0.6.1

注意

有关 Linux VDA 支持的 Xorg 版本和 Linux 发行版的信息,请参阅 Citrix 文章 CTX221802 中的列表。

步骤 4c:配置 Linux VDA

安装软件包后,必须运行 ctxsetup.sh 脚本来配置 Linux VDA。执行任何更改之前,该脚本都会验证环境,确保所有依赖项都已安装。如有必要,可以随时重新运行该脚本以更改设置。

可以按照提示手动运行脚本,也可以采用预配置的响应自动运行脚本。继续操作前,请查看该脚本的帮助信息:

命令 复制

sudo /opt/Citrix/VDA/sbin/ctxsetup.sh –help

提示配置

运行会提示各种问题的手动配置:

命令 复制

sudo /opt/Citrix/VDA/sbin/ctxsetup.sh

自动配置

自动安装时,设置脚本所需的选项可由环境变量提供。如果所需的所有变量都存在,则脚本不会提示用户提供任何信息,从而允许通过脚本完成安装过程。

支持的环境变量包括:

  • CTX_XDL_SUPPORT_DDC_AS_CNAME = Y | N - Linux VDA 支持使用 DNS CNAME 记录指定 Delivery Controller 名称。默认情况下设置为 N。
  • CTX_XDL_DDC_LIST = list-ddc-fqdns - Linux VDA 要求提供由空格分隔的 Delivery Controller 完全限定域名 (FQDN) 列表以用于向 Delivery Controller 注册。必须至少指定一个 FQDN 或 CNAME 别名。
  • CTX_XDL_VDA_PORT = port-number - Linux VDA 通过 TCP/IP 端口(默认为端口 80)与 Delivery Controller 通信。
  • CTX_XDL_REGISTER_SERVICE = Y | N - 在启动计算机后启动 Linux Virtual Desktop 服务。默认情况下设置为 Y。
  • CTX_XDL_ADD_FIREWALL_RULES = Y | N - Linux Virtual Desktop 服务要求允许传入网络连接通过系统防火墙。您可以在系统防火墙中自动为 Linux Virtual Desktop 打开所需端口(默认为端口 80 和 1494)。默认情况下设置为 Y。
  • CTX_XDL_AD_INTEGRATION = 1 | 2 | 3 | 4 - Linux VDA 要求使用 Kerberos 配置设置向 Delivery Controller 进行身份验证。Kerberos 配置根据系统上已安装和已配置的 Active Directory 集成工具确定。指定要使用且受支持的 Active Directory 集成方法:
    • 1 - Samba Winbind
    • 2 - Quest Authentication Service
    • 3 - Centrify DirectControl
    • 4 - SSSD
  • CTX_XDL_HDX_3D_PRO = Y | N - Linux Virtual Desktop 支持 HDX 3D Pro,这是一系列图形加速技术,旨在优化富图形应用程序的虚拟化水平。HDX 3D Pro 要求安装兼容的 NVIDIA GRID 图形卡。如果选择了 HDX 3D Pro,则要为 VDI 桌面(单会话)模式配置 Virtual Delivery Agent -(即 CTX_XDL_VDI_MODE=Y)。 
  • CTX_XDL_VDI_MODE = Y | N - 将计算机配置为专用桌面交付模型 (VDI) 还是托管共享桌面交付模型。对于 HDX 3D Pro 环境,将此变量设置为 Y。默认情况下,此变量设置为 N。
  • CTX_XDL_SITE_NAME = dns-name - Linux VDA 通过 DNS 发现 LDAP 服务器。要将 DNS 搜索结果限制为本地站点,应指定 DNS 站点名称。默认情况下,此变量设置为 <无>
  • CTX_XDL_LDAP_LIST = list-ldap-servers - Linux VDA 查询 DNS 来发现 LDAP 服务器。如果 DNS 无法提供 LDAP 服务记录,您可以提供以空格分隔的 LDAP FQDN(带有 LDAP 端口)列表。例如 ad1.mycompany.com:389。默认情况下,此变量设置为 <无>
  • CTX_XDL_SEARCH_BASE = search-base-set - Linux VDA 通过设置为 Active Directory 域根的搜索基础(例如 DC=mycompany,DC=com)来查询 LDAP。但是,为了提高搜索效能,可以指定搜索基础(例如 OU=VDI,DC=mycompany,DC=com)。默认情况下,此变量设置为 <无>
  • CTX_XDL_FAS_LIST = list-fas-servers - 联合身份验证服务 (FAS) 服务器是通过 AD 组策略配置的。由于 Linux VDA 不支持 AD 组策略,您可以改为提供以分号分隔的 FAS 服务器的列表。顺序必须与在 AD 组策略中配置的顺序相同。如果删除了任何服务器地址,则使用 <无> 文本字符串填充空白处,并使服务器地址的顺序保持不变。
  • CTX_XDL_START_SERVICE = Y | N - 在完成 Linux VDA 配置后,是否启动 Linux VDA 服务。默认情况下设置为 Y。

设置环境变量并运行配置脚本:

命令 复制

export CTX_XDL_SUPPORT_DDC_AS_CNAME=Y|N

export CTX_XDL_DDC_LIST=list-ddc-fqdns

export CTX_XDL_VDA_PORT=port-number

export CTX_XDL_REGISTER_SERVICE=Y|N

export CTX_XDL_ADD_FIREWALL_RULES=Y|N

export CTX_XDL_AD_INTEGRATION=1|2|3|4

export CTX_XDL_HDX_3D_PRO=Y|N

export CTX_XDL_VDI_MODE=Y|N

export CTX_XDL_SITE_NAME=dns-site-name | '<none>'

export CTX_XDL_LDAP_LIST=list-ldap-servers | '<none>'

export CTX_XDL_SEARCH_BASE=search-base-set | '<none>'

export CTX_XDL_FAS_LIST = list-fas-servers | '<none>'

export CTX_XDL_START_SERVICE=Y|N

sudo -E /opt/Citrix/VDA/sbin/ctxsetup.sh

运行 sudo 命令时,键入 -E 选项以将现有环境变量传递给它创建的新 shell。Citrix 建议使用前面的命令并加上 #!/bin/bash 作为第一行来创建 shell 脚本文件。

另外,您可以使用单个命令指定所有参数:

命令 复制

sudo CTX_XDL_SUPPORT_DDC_AS_CNAME=Y|N \

CTX_XDL_DDC_LIST=list-ddc-fqdns \

CTX_XDL_VDA_PORT=port-number \

CTX_XDL_REGISTER_SERVICE=Y|N \

CTX_XDL_ADD_FIREWALL_RULES=Y|N \

CTX_XDL_AD_INTEGRATION=1|2|3|4 \

CTX_XDL_HDX_3D_PRO=Y|N \

CTX_XDL_VDI_MODE=Y|N \

CTX_XDL_SITE_NAME=dns-name \

CTX_XDL_LDAP_LIST=list-ldap-servers \

CTX_XDL_SEARCH_BASE=search-base-set \

CTX_XDL_FAS_LIST = list-fas-servers \

CTX_XDL_START_SERVICE=Y|N \

/opt/Citrix/VDA/sbin/ctxsetup.sh

删除配置更改

在某些情形下,您可能需要删除 ctxsetup.sh 脚本对配置所做的更改,但不卸载 Linux VDA 软件包。

继续操作前,请查看此脚本的帮助信息:

命令 复制

sudo /opt/Citrix/VDA/sbin/ctxcleanup.sh --help

删除配置更改:

命令 复制

sudo /opt/Citrix/VDA/sbin/ctxcleanup.sh

Important

此脚本会从数据库删除所有配置数据,从而使 Linux VDA 无法使用。

配置日志

ctxsetup.shctxcleanup.sh 脚本会在控制台上显示错误,并将其他信息写入配置日志文件 /tmp/xdl.configure.log

重新启动 Linux VDA 服务,确保更改生效。

卸载 Linux VDA 软件

查询 Linux VDA 安装状态

要检查 Linux VDA 是否已安装并查看已安装软件包的版本,请运行以下命令:

命令 复制

dpkg -l xendesktopvda

查看更多详细信息:

命令 复制

apt-cache show xendesktopvda

注意

卸载 Linux VDA 软件会删除关联的 PostgreSQL 和其他配置数据。但是,不会删除在安装 Linux VDA 之前设置的 PostgreSQL 软件包和其他依赖软件包。

提示

本节中的信息未介绍包括 PostgreSQL 在内的依赖软件包的删除操作。

步骤 5:运行 Linux VDA

使用 ctxsetup.sh 脚本配置 Linux VDA 后,请使用以下命令控制 Linux VDA。

启动 Linux VDA

启动 Linux VDA 服务:

命令 复制

sudo systemctl start ctxhdx

sudo systemctl start ctxvda

停止 Linux VDA

停止 Linux VDA 服务:

命令 复制

sudo systemctl stop ctxvda

sudo systemctl stop ctxhdx

重新启动 Linux VDA

重新启动 Linux VDA 服务:

命令 复制

sudo systemctl stop ctxvda

sudo systemctl restart ctxhdx

sudo systemctl restart ctxvda

检查 Linux VDA 状态

检查 Linux VDA 服务的运行状态:

命令 复制

sudo systemctl status ctxvda

sudo systemctl status ctxhdx

步骤 6:在 XenApp 或 XenDesktop 中创建计算机目录

创建计算机目录和添加 Linux VDA 计算机的过程与传统的 Windows VDA 方法类似。有关如何完成这些任务的更加详细的说明,请参阅创建计算机目录管理计算机目录

创建包含 Linux VDA 计算机的计算机目录时会面临一些限制,使得该过程不同于为 Windows VDA 计算机创建计算机目录:

  • 对于操作系统,请选择:
    • “服务器操作系统”选项(对于托管共享桌面交付模型)。 
    • “桌面操作系统”选项(对于 VDI 专用桌面交付模型)。
  • 确保计算机未执行电源管理设置。
  • 请勿在同一个计算机目录中混合使用 Linux 和 Windows VDA 计算机。

注意

早期版本的 Citrix Studio 不支持“Linux 操作系统”的概念。但是,选择 Windows 服务器操作系统或服务器操作系统选项等同于使用托管共享桌面交付模型。选择 Windows 桌面操作系统或桌面操作系统选项等同于使用 XenDesktop 每计算机一个用户交付模型。

提示

要在删除计算机后将其重新加入 Active Directory 域,必须在计算机目录中删除并重新添加该计算机。

 

步骤 7:在 XenApp 或 XenDesktop 中创建交付组

创建交付组和添加包含 Linux VDA 计算机的计算机目录的过程与 Windows VDA 计算机几乎相同。有关如何完成这些任务的更加详细的说明,请参阅创建交付组

创建含有 Linux VDA 计算机目录的交付组时会面临以下限制:

  • 对于交付类型,请选择桌面。适用于 Ubuntu 的 Linux VDA 不支持应用程序交付。
  • 确保所选的 AD 用户和组已正确配置,可以登录到 Linux VDA 计算机。
  • 请勿允许未经身份验证的(匿名)用户登录。
  • 请勿在交付组中混入含有 Windows 计算机的计算机目录。

有关如何创建计算机目录和交付组的信息,请参阅 XenApp 和 XenDesktop 7.18