Citrix Hypervisor

管理网络连接

本部分中介绍的网络配置过程会有所差别,具体取决于您要配置的服务器是独立服务器还是资源池中的服务器。

在独立服务器中创建网络

安装主机期间会为每个 PIF 创建外部网络,因此仅在执行以下操作时才需要创建额外的网络:

  • 使用专用网络

  • 支持高级操作,例如 VLAN 或 NIC 绑定

有关如何使用 XenCenter 添加或删除网络的信息,请参阅 XenCenter 文档中的添加新网络

打开 Citrix Hypervisor 服务器文本控制台。

使用 network-create 命令创建网络,该命令将返回新创建的网络的 UUID:

xe network-create name-label=mynetwork
<!--NeedCopy-->

此时,该网络尚未连接到 PIF,因此属于内部网络。

在资源池中创建网络

资源池中的所有 Citrix Hypervisor 服务器都必须具有相同数量的物理 NIC。主机加入池时,并不需要严格遵从这一要求。其中一个 NIC 始终被指定为管理接口,用于 Citrix Hypervisor 管理流量。

由于池中的所有主机都共享一组公用网络,池中的 Citrix Hypervisor 服务器具有相同的物理网络连接配置非常重要。根据设备名称将各个主机上的 PIF 连接到池范围内的网络。例如,池中具有 eth0 NIC 的所有 Citrix Hypervisor 服务器都将相应的 PIF 插入池范围内的 Network 0 网络。这对于具有 eth1 NIC 和 Network 1 的主机以及池中至少一个 Citrix Hypervisor 服务器上的其他 NIC 同样适用。

如果某个 Citrix Hypervisor 服务器具有的 NIC 数量与池中其他主机具有的 NIC 数量不同,情况就复杂了。复杂性增加是因为并非所有池网络都对所有池主机有效。例如,如果主机 host1host2 位于同一池中,但 host1 有四个 NIC,host2 只有两个 NIC,则只有连接到与 eth0 和 eth1 对应的 PIF 的网络才对 host2 有效。VIF 连接到与 eth2 和 eth3 对应的网络的 host1 上的 VM 将无法迁移到主机 host2

创建 VLAN

对于资源池中的服务器,可以使用 pool-vlan-create 命令。此命令将创建 VLAN,并在池中的主机上自动创建和插入所需的 PIF。有关详细信息,请参阅 pool-vlan-create

打开 Citrix Hypervisor 服务器控制台。

创建用于 VLAN 的网络。将返回新网络的 UUID:

xe network-create name-label=network5
<!--NeedCopy-->

使用 pif-list 命令找到与物理 NIC(支持所需的 VLAN 标记)对应的 PIF 的 UUID。返回所有 PIF 的 UUID 和设备名称,其中包括任何现有的 VLAN:

xe pif-list
<!--NeedCopy-->

在要连接到新 VLAN 的所有 VM 上创建一个 VLAN 对象,指定所需的物理 PIF 和 VLAN 标记。创建新的 PIF 并将其插入指定的网络。返回新 PIF 对象的 UUID。

xe vlan-create network-uuid=network_uuid pif-uuid=pif_uuid vlan=5
<!--NeedCopy-->

将 VM VIF 连接到新网络。有关详细信息,请参阅在独立服务器中创建网络

在独立主机上创建 NIC 绑定

我们建议您使用 XenCenter 创建 NIC 绑定。有关详细信息,请参阅配置 NIC

本节介绍如何使用 xe CLI 绑定不属于池的 Citrix Hypervisor 服务器上的 NIC 接口。有关使用 xe CLI 在组成资源池的 Citrix Hypervisor 服务器上创建 NIC 绑定的信息,请参阅在资源池中创建 NIC 绑定

创建 NIC 绑定

在绑定 NIC 时,绑定会包含用作管理接口的 PIF/NIC。管理接口会自动移动到绑定 PIF。

  1. 使用 network-create 命令创建用于绑定的 NIC 的新网络。将返回新网络的 UUID:

    xe network-create name-label=bond0
    <!--NeedCopy-->
    
  2. 使用 pif-list 命令确定要在绑定中使用的 PIF 的 UUID:

    xe pif-list
    <!--NeedCopy-->
    
  3. 执行以下操作之一:

    • 要在主动-主动模式(默认模式)下配置绑定,请使用 bond-create 命令创建绑定。使用逗号分隔参数,指定新创建的网络 UUID 和要绑定的 PIF 的 UUID:

       xe bond-create network-uuid=network_uuid /
            pif-uuids=pif_uuid_1,pif_uuid_2,pif_uuid_3,pif_uuid_4
       <!--NeedCopy-->
      

      绑定两个 NIC 时,请键入两个 UUID;绑定四个 NIC 时,请输入四个 UUID。在运行该命令之后,将返回该绑定的 UUID。

    • 要在主动-被动或 LACP 绑定模式下配置绑定,请使用相同的语法,添加可选的 mode 参数并指定 lacpactive-backup

       xe bond-create network-uuid=network_uuid pif-uuids=pif_uuid_1, /
            pif_uuid_2,pif_uuid_3,pif_uuid_4 /
            mode=balance-slb | active-backup | lacp
       <!--NeedCopy-->
      

控制绑定的 MAC 地址

绑定管理接口时,将包含正用作管理接口的 PIF/NIC。如果主机使用 DHCP,该绑定的 MAC 地址将与正在使用的 PIF/NIC 相同。管理接口的 IP 地址可以保持不变。

可以更改该绑定的 MAC 地址,使其不同于(当前)管理接口 NIC 的 MAC 地址。但是,当启用了该绑定而正在使用的 MAC/IP 地址发生变化时,与主机的现有网络会话将停止。

可以通过以下两种方式控制该绑定的 MAC 地址:

  • 可以在 bond-create 命令中指定 mac 可选参数。可以使用此参数将绑定 MAC 地址设置为任意地址。

  • 如果未指定 mac 参数,Citrix Hypervisor 将使用管理接口(如果管理接口是绑定中的接口之一)的 MAC 地址。如果管理接口不是绑定的一部分,但另一个管理接口是,则绑定将使用该管理接口的 MAC 地址(以及 IP 地址)。如果绑定中的所有 NIC 都不是管理接口,则绑定将使用第一个指定 NIC 的 MAC 地址。

还原 NIC 绑定

如果将 Citrix Hypervisor 服务器还原为非绑定配置,bond-destroy 命令会自动将主 NIC 配置为要用于管理接口的接口。因此,所有 VIF 都将移动到该管理接口。如果主机的管理接口位于带标记的 VLAN 绑定接口上,执行 bond-destroy 时,管理 VLAN 将移至主 NIC。

术语“主 NIV”是指在创建绑定时用来复制 MAC 和 IP 配置的 PIF。在绑定两个 NIC 时,主 NIC 为:

  1. 管理接口 NIC(如果管理接口是绑定的 NIC 之一)。

  2. 任何其他具有 IP 地址的 NIC(如果管理接口不是绑定的一部分)。

  3. 第一个指定的 NIC。可以通过运行以下命令来确定它是哪个 NIC:

    xe bond-list params=all
    <!--NeedCopy-->
    

在资源池中创建 NIC 绑定

如果可能,请尽量在创建初始资源池的过程中创建 NIC 绑定,然后再将更多主机加入池或创建 VM。这样,可以在主机加入池时将绑定配置自动复制到其中,并减少所需的步骤。

将 NIC 绑定添加到现有池中需要执行下列操作之一:

  • 使用 CLI 在主服务器上配置绑定,然后在池的每个成员上配置绑定。

  • 使用 CLI 在主服务器上配置绑定,然后重新启动每个池成员,以便从池主服务器继承设置。

  • 使用 XenCenter 在主服务器上配置绑定。XenCenter 会自动将成员服务器上的网络连接设置与主服务器同步,这样您就不需要重新启动成员服务器。

为简单起见并且为了避免错误配置,我们建议使用 XenCenter 创建 NIC 绑定。有关详细信息,请参阅配置 NIC

本节介绍如何使用 xe CLI 在组成资源池的 Citrix Hypervisor 服务器上创建绑定的 NIC 接口。有关使用 xe CLI 在独立主机上创建 NIC 绑定的信息,请参阅在独立主机上创建 NIC 绑定

警告:

不要在启用了高可用性功能的情况下尝试创建网络绑定。创建绑定的过程会干扰正在进行的高可用性信号检测并导致主机进行自主防护(自行关闭)。主机将无法正确重新启动,并且可能需要运行 host-emergency-ha-disable 命令才能恢复。

选择要成为主服务器的主机。默认情况下,主服务器主机属于未命名的池。要使用 CLI 创建资源池,请重命名现有的无名称的池:

xe pool-param-set name-label="New Pool" uuid=pool_uuid
<!--NeedCopy-->

请按照创建 NIC 绑定中所述创建 NIC 绑定。

打开要加入到池的主机中的控制台,然后运行命令:

xe pool-join master-address=host1 master-username=root master-password=password
<!--NeedCopy-->

网络和绑定信息将自动复制到新主机中。管理接口自动从最初创建时所在的主机 NIC 移动到绑定的 PIF。即,管理接口现在包含在绑定中,以便整个绑定用作管理接口。

使用 host-list 命令查找正在配置的主机的 UUID:

xe host-list
<!--NeedCopy-->

警告:

请勿在启用了高可用性功能的情况下尝试创建网络绑定。创建绑定的过程会干扰正在进行的高可用性信号检测并导致主机进行自主防护(自行关闭)。主机将无法正确重新启动,并且您可能需要运行 host-emergency-ha-disable 命令才能恢复。

配置专用存储 NIC

可以使用 XenCenter 或 xe CLI 为 NIC 分配 IP 地址,并将其专用于特定功能(例如存储流量)。在为 NIC 配置 IP 地址时,可以通过创建辅助接口来进行配置。(用于管理且支持 IP 的 NIC Citrix Hypervisor 称为管理接口。)

当您希望将辅助接口专用于特定用途时,请确保拥有适当的网络配置。这是为了确保 NIC 仅用于所需的流量。要将 NIC 专用于存储流量,请对 NIC、存储目标、交换机和 VLAN 进行配置,以便只能通过分配的 NIC 访问该目标。如果您的物理配置和 IP 配置不限制可以通过存储 NIC 发送的流量,则可以通过辅助接口来发送流量(例如管理流量)。

创建新辅助接口用于传输存储流量时,必须为其分配一个 IP 地址,即:

  • 在与存储控制器相同的子网中(如果适用),并且

  • 不在与任何其他辅助接口或管理接口相同的子网中。

配置辅助接口时,每个辅助接口必须位于单独的子网上。例如,如果要为存储额外配置两个辅助接口,则需要 IP 地址位于三个不同的子网中 – 一个用于管理接口的子网,一个用于辅助接口 1 的子网,以及一个用于辅助接口 2 的子网。

如果要使用绑定为存储流量提供恢复能力,您可能希望考虑使用 LACP 而非 Linux 桥接绑定。要使用 LACP 绑定,必须将 vSwitch 配置为网络连接堆栈。有关详细信息,请参阅 vSwitch 网络

注意:

在选择要配置为辅助接口以与 iSCSI 或 NFS SR 一起使用的 NIC 时,请确保该专用 NIC 使用不能从管理接口路由的单独 IP 子网。如果无法确保上述条件,则由于初始化网络接口的顺序,很可能在主机重新启动后通过主管理接口定向存储流量。

确保 PIF 位于独立子网中或将路由配置为适合您的网络拓扑,以通过所选 PIF 实现所需流量。

为 PIF 设置一个 IP 配置,从而为模式参数添加恰当的值。如果使用静态 IP 寻址,请添加 IP、子网掩码、网关和 DNS 参数:

xe pif-reconfigure-ip mode=DHCP | Static uuid=pif-uuid
<!--NeedCopy-->

将 PIF 的 disallow-unplug 参数设置为 true:

xe pif-param-set disallow-unplug=true uuid=pif-uuid
<!--NeedCopy-->
xe pif-param-set other-config:management_purpose="Storage" uuid=pif-uuid
<!--NeedCopy-->

如果希望将辅助接口用于也可以从管理接口路由的存储(请记住,此配置并非最佳做法),则有两种选择:

  • 主机重新启动后,请确保正确配置了辅助接口。使用 xe pbd-unplugxe pbd-plug 命令重新初始化主机上的存储连接。此命令会重新启动存储连接并通过正确的接口对其进行路由。

  • 或者,可以使用 xe pif-forget 从 Citrix Hypervisor 数据库中删除接口,然后在控制域中手动配置该接口。xe pif-forget 属于高级选项且要求您熟悉如何手动配置 Linux 网络连接。

使用启用了 SR-IOV 的 NIC

单根 I/O 虚拟化 (SR-IOV) 是一种虚拟化技术,允许单个 PCI 设备在物理系统中显示为多个 PCI 设备。实际的物理设备称为物理功能 (PF),而其他设备称为虚拟功能 (VF)。虚拟机管理程序可以向虚拟机 (VM) 分配一个或多个 VF:来宾之后可以使用该设备,就像该设备是直接分配的一样。

向 VM 分配一个或多个 NIC VF 将允许其网络流量跳过虚拟交换机。每个 VM 在经过这种配置后,就像直接使用 NIC 一样,这样会降低处理开销并改善性能。

SR-IOV 的优势

SR-IOV VF 的性能优于 VIF。它可以确保流量之间的基于硬件的隔离从不同的 VM 传输到相同的 NIC(跳过 Citrix Hypervisor 网络堆栈)。

通过此功能,您可以:

  • 在支持 SR-IOV 的 NIC 上启用 SR-IOV。

  • 在支持 SR-IOV 的 NIC 上禁用 SR-IOV。

  • 作为 VF 资源池管理 SR-IOV VF。

  • 将 SR-IOV VF 分配给 VM。

  • 配置 SR-IOV VF(例如,MAC 地址、VLAN、评分)。

  • 运行测试,以确认是否作为自动化认证工具包的一部分支持 SR-IOV。

系统配置

请正确配置硬件平台以支持 SR-IOV。需要使用以下技术:

  • I/O MMU 虚拟化(AMD-Vi 和 Intel VT-d)

  • 备用路由 ID 解释 (ARI)

  • 地址转换服务 (ATS)

  • 访问控制服务 (ACS)

查看您的系统随附的文档,了解有关如何配置 BIOS 以启用所提及的技术的信息。

在 NIC 上启用 SR-IOV 网络

在 XenCenter 中,使用网络连接选项卡中的新建网络向导在 NIC 上创建并启用 SR-IOV 网络。

将 SR-IOV 网络分配给虚拟接口(VM 级别)

在 XenCenter 中,使用网络连接选项卡中的添加虚拟接口向导添加启用了 SR-IOV 的网络作为该 VM 的虚拟接口。有关详细信息,请参阅添加新网络

支持的 NIC 和来宾

有关受支持的硬件平台和 NIC 的列表,请参阅硬件兼容性列表。请参阅特定来宾的供应商提供的文档,以确定其是否支持 SR-IOV。

限制

  • 对于某些使用旧版驱动程序的 NIC(例如,Intel I350 系列),必须重新启动主机以启用或禁用这些设备上的 SR-IOV。

  • SR-IOV 仅支持 HVM 来宾。

  • 不支持具有不同类型的 NIC 的池级别 SR-IOV 网络。

  • 由于 NIC 硬件限制,SR-IOV VF 和来自同一 NIC 的常规 VIF 可能无法相互通信。要使这些主机能够进行通信,请确保通信使用模式 VF 到 VF 或 VIF 到 VIF,而非 VF 到 VIF。

  • 某些 SR-IOV VF 的服务质量设置不起作用,因为这些设置不支持网络速率限制。

  • 不支持在使用 SR-IOV VF 的 VM 上执行实时迁移、挂起和检查点操作。

  • SR-IOV VF 不支持热插拔。

  • 对于某些使用旧版 NIC 驱动程序的 NIC,即使在主机重新启动之后可能也需要重新启动,这表示 NIC 无法启用 SR-IOV。

  • 在早期版本中创建的 VM 无法从 XenCenter 使用此功能。

  • 如果您的 VM 具有一个 SR-IOV VF,需要实时迁移的功能将不可用。这是由于 VM 直接绑定到支持 SR-IOV 的物理 NIC VF。

  • 硬件限制:使用功能级别重置 (FLR) 的虚拟机管理程序请求时,SR-IOV 功能依赖于要在 100 毫秒内将设备功能重置为原始状态的 Controller。

  • 可以在利用高可用性功能的环境中使用 SR-IOV。但是,并不会将 SR-IOV 视为容量规划。当具有相应资源的池中存在主机时,已分配 SR-IOV VF 的 VM 将在最大努力的基础上重新启动。这些资源包括在恰当的网络中启用的 SR-IOV 以及可用的 VF。

将 SR-IOV VF 配置为使用旧版驱动程序

通常情况下,可以自动确定 NIC 能够支持的最大 VF 数量。对于使用旧版驱动程序的 NIC(例如,Intel I350 系列),此限制在驱动程序模块配置文件内部定义。此限制可能需要手动调整。要将其设置为最大值,请使用编辑器打开该文件,并更改行起始内容:

## VFs-maxvfs-by-user:
<!--NeedCopy-->

例如,要将 igb 驱动程序的最大 VF 数量设置为 4,请编辑 /etc/modprobe.d/igb.conf,使其内容变为:

## VFs-param: max_vfs
## VFs-maxvfs-by-default: 7
## VFs-maxvfs-by-user: 4
options igb max_vfs=0
<!--NeedCopy-->

备注:

  • 该值必须小于或等于 VFs-maxvfs-by-default 行中的值。

  • 请勿更改这些文件中的任何其他行。

  • 请在启用 SR-IOV 之前进行更改。

CLI

请参阅 SR-IOV 命令,了解有关创建、删除、显示 SR-IOV 网络以及向 VM 分配 SR-IOV VF 的 CLI 说明。

控制传出数据的速率 (QoS)

要限制 VM 每秒可以发送的传出数据量,可以针对 VM 虚拟接口 (VIF) 设置可选的服务质量 (QoS) 值。该设置允许您为传出的数据包指定最大传输速率(单位为 KB/秒)。

服务质量值将限制源自 VM 的传输速率。服务质量设置不限制 VM 可以接收的数据量。如果需要限制接收量,我们建议您限制网络中较高层(例如,交换机层)传入数据包的速率。

根据在池中配置的网络连接堆栈,可以在以下两个位置之一中的 VM 虚拟接口 (VIF) 上设置服务质量值。可以使用 xe CLI 或在 XenCenter 中设置此值。

  • XenCenter 可以在属性对话框中为虚拟接口设置服务质量传输速率限制值。
  • xe 命令 可以在 CLI 中使用下一部分内容中介绍的命令来设置服务质量传输速率。

QoS 的 CLI 命令示例

要使用 CLI 将 VIF 的最大传输速率限制为 100 kb/秒,请使用 vif-param-set 命令:

xe vif-param-set uuid=vif_uuid qos_algorithm_type=ratelimit
xe vif-param-set uuid=vif_uuid qos_algorithm_params:kbps=100
<!--NeedCopy-->

注意:

kbps 参数表示千字节/秒 (Kbps),而不是千位/每秒 (kbps)。

更改网络连接配置选项

本节讨论如何更改 Citrix Hypervisor 服务器的网络连接配置。包括:

  • 更改主机名(即,域名系统 (DNS) 名称)

  • 添加或删除 DNS 服务器

  • 更改 IP 地址

  • 更改用作管理接口的 NIC

  • 将新的物理 NIC 添加到服务器中

  • 向网络中添加用途

  • 启用 ARP 过滤(交换机端口锁定)

主机名

系统主机名(又称为域名或 DNS 名称)在池级别的数据库中定义,可以按如下所示使用 xe host-set-hostname-live CLI 命令进行修改:

xe host-set-hostname-live host-uuid=host_uuid host-name=host-name
<!--NeedCopy-->

基础控制域主机名也将动态更改以反映新主机名。

DNS 服务器

要在 Citrix Hypervisor 服务器的 IP 寻址配置中添加或删除 DNS 服务器,请使用 pif-reconfigure-ip 命令。例如,对于具有静态 IP 的 PIF:

xe pif-reconfigure-ip uuid=pif_uuid mode=static DNS=new_dns_ip IP=IP netmask=netmask
<!--NeedCopy-->

更改独立主机的 IP 地址配置

可以使用 xe CLI 更改网络接口配置。请勿直接更改基础网络配置脚本。

要更改 PIF 的 IP 地址配置,请使用 pif-reconfigure-ip CLI 命令。有关 pif-reconfigure-ip 命令参数的详细信息,请参阅 pif-reconfigure-ip。有关更改资源池中的主机 IP 地址的信息,请参阅下面的部分。

更改资源池中的 IP 地址配置

资源池中的 Citrix Hypervisor 服务器具有用于管理和与池中其他主机相互通信的单一管理 IP 地址。对于主节点主机和其他主机来说,更改主机的管理接口的 IP 地址所需的步骤是不同的。

注意:

更改服务器的 IP 地址和其他网络参数时,必须小心。根据网络拓扑和正在进行的更改,可能会断开网络存储连接。如果出现此问题,必须使用 XenCenter 中的修复存储功能或使用 pbd-plug CLI 命令来重新插入存储。因此,我们建议您先将 VM 从服务器中迁移出来,然后再更改服务器的 IP 配置。

根据需要,使用 pif-reconfigure-ip CLI 命令设置 IP 地址。有关 pif-reconfigure-ip 命令参数的详细信息,请参阅 pif-reconfigure-ip

xe pif-reconfigure-ip uuid=pif_uuid mode=DHCP
<!--NeedCopy-->

使用 host-list CLI 命令,通过检查池中的所有其他 Citrix Hypervisor 服务器是否均可见来确认该成员主机是否已成功重新连接到主服务器主机:

xe host-list
<!--NeedCopy-->

更改主 Citrix Hypervisor 服务器的 IP 地址需要执行额外的步骤。这是因为每个池成员都使用公告的池主服务器 IP 地址进行通信。当其 IP 地址发生变化时,池成员不知道如何与主服务器进行联系。

请尽可能使用在池主服务器的池生命周期内不会轻易发生更改的专用 IP 地址。

根据需要,使用 pif-reconfigure-ip CLI 命令设置 IP 地址:

xe pif-reconfigure-ip uuid=pif_uuid mode=DHCP
<!--NeedCopy-->

池主服务器的 IP 地址发生变化后,所有成员主机在无法与主服务器主机联系时都将进入紧急模式。

在池主服务器上,使用 pool-recover-slaves 命令强制主服务器与每个池成员联系并通知其新的主服务器 IP 地址:

xe pool-recover-slaves
<!--NeedCopy-->

管理接口

在主机上安装 Citrix Hypervisor 时,其一个 NIC 会被指定为管理接口:用于 Citrix Hypervisor 管理流量的 NIC。管理接口用于 XenCenter 以及其他与主机(例如 Citrix Virtual Apps and Desktops)的管理 API 连接,也用于主机到主机通信。

使用 pif-list 命令确定哪个 PIF 与要用作管理接口的 NIC 对应。将返回每个 PIF 的 UUID。

xe pif-list
<!--NeedCopy-->

使用 pif-param-list 命令验证用作管理接口的 PIF 的 IP 寻址配置。如有必要,请使用 pif-reconfigure-ip 命令配置要使用的 PIF 的 IP 寻址。

xe pif-param-list uuid=pif_uuid
<!--NeedCopy-->

使用 host-management-reconfigure CLI 命令更改用作管理接口的 PIF。如果此主机属于资源池,则必须在成员主机控制台上发出此命令

xe host-management-reconfigure pif-uuid=pif_uuid
<!--NeedCopy-->

使用 network-list 命令确定哪个 PIF 与用作池中的所有主机的管理接口的 NIC 对应。此时将返回池范围内的网络的 UUID。

xe network-list
<!--NeedCopy-->

使用 network-param-list 命令提取池中的所有主机的 PIF UUID。使用 pif-param-list 命令验证管理接口的 PIF 的 IP 寻址配置。如有必要,请使用 pif-reconfigure-ip 命令配置要使用的 PIF 的 IP 寻址。

xe pif-param-list uuid=pif_uuid
<!--NeedCopy-->

使用 pool-management-reconfigure CLI 命令更改用作“网络”列表中列出的管理接口的 PIF。

xe pool-management-reconfigure network-uuid=network_uuid
<!--NeedCopy-->

限制使用端口 80

可以通过端口 443 使用 HTTPS 或通过端口 80 使用 HTTP 与 Citrix Hypervisor 通信。出于安全原因,您可以关闭管理接口上的 TCP 端口 80。默认情况下,端口 80 仍处于打开状态。如果将其关闭,则任何使用管理 API 的外部客户端都必须通过端口 443 使用 HTTPS 才能连接到 Citrix Hypervisor。但是,在关闭端口 80 之前,请检查您的所有 API 客户端(特别是 Citrix Virtual Apps and Desktops)是否可以通过端口 443 使用 HTTPS。

要关闭端口 80,请参阅 https-only xe CLI 命令。

禁用管理访问

要完全禁用对管理控制台的远程访问,请使用 host-management-disable CLI 命令。

警告:

禁用了管理接口时,必须登录物理主机控制台才能执行管理任务。XenCenter 等外部接口在禁用了管理接口时不起作用。

添加新的物理 NIC

  1. 以常规方式在 Citrix Hypervisor 服务器上安装新的物理 NIC。
  2. 重新启动 Citrix Hypervisor 服务器。
  3. 请使用以下命令列出该 Citrix Hypervisor 服务器的所有物理 NIC:

    xe pif-list host-uuid=<host_uuid>
    
  4. 如果未看到其他 NIC,请使用以下命令扫描新的物理接口:

    xe pif-scan host-uuid=<host_uuid>
    

    此命令为新 NIC 创建新的 PIF 对象。

  5. 请再次列出 Citrix Hypervisor 服务器上的物理 NIC,以验证新 NIC 是否可见:

    xe pif-list host-uuid=<host_uuid>
    
  6. 新 PIF 最初被列为已断开连接 (currently-attached ( RO): false)。要将其启动,请使用以下命令:

    xe pif-plug uuid=<uuid_of_pif>
    

另外,您还可以使用 XenCenter 重新扫描新 NIC。有关详细信息,请参阅 XenCenter 文档中的配置 NIC

删除物理 NIC

删除 NIC 之前,请确保您知道相应 PIF 的 UUID。以常规方式从 Citrix Hypervisor 服务器中删除物理 NIC。重新启动服务器后,运行 xe CLI 命令 pif-forget uuid=<UUID> 以销毁 PIF 对象。

向网络中添加用途

网络用途可以用来向网络中添加额外的功能。例如,使用网络建立 NBD 连接的功能。

要添加网络用途,请使用 xe network-param-add 命令:

xe network-param-add param-name=purpose param-key=purpose uuid=network-uuid
<!--NeedCopy-->

要删除网络用途,请使用 xe network-param-remove 命令:

xe network-param-remove param-name=purpose param-key=purpose uuid=network-uuid
<!--NeedCopy-->

网络用途的当前可用值为 nbdinsecure_nbd。有关详细信息,请参阅《Citrix Hypervisor 更改块跟踪指南》。

使用交换机端口锁定

通过 Citrix Hypervisor 交换机端口锁定功能,可以限制未知、不受信任或可能存有敌意的 VM 无法假装拥有未分配给它们的 MAC 或 IP 地址,从而控制从这些 VM 发送的流量。可以使用端口锁定命令,在默认情况下阻止网络上的所有流量,也可以定义特定 IP 地址,以便允许个别 VM 从中发送流量。

交换机端口锁定功能是为环境中关注内部威胁的公有云服务提供商设计的。此功能可以为公有云服务提供商提供帮助,在这些提供商的网络架构中,每个 VM 都有一个与 Internet 连接的公用 IP 地址。由于云租户不受信任,因此,可以采取安全措施(例如,欺骗防御)来确保租户无法攻击云中的其他虚拟机。

通过交换机端口锁定功能,您可以使所有租户或来宾系统使用同一个第 2 层网络,从而简化网络配置。

端口锁定命令的最重要的功能之一是可以限制不受信任的来宾发送的流量。这样将限制来宾假装拥有实际不拥有的 MAC 或 IP 地址的能力。具体而言,可以使用这些命令防止来宾系统:

  • 声明除 Citrix Hypervisor 管理员已指定其可以使用的 IP 或 MAC 地址以外的 IP 或 MAC 地址

  • 拦截、欺骗或中断其他 VM 的流量

要求

  • Linux 桥接和 vSwitch 网络连接堆栈支持 Citrix Hypervisor 交换机端口锁定功能。

  • 如果在您的环境中启用了基于角色的访问控制 (RBAC),则配置交换机端口锁定功能的用户必须使用至少拥有池操作员或池管理员角色的帐户进行登录。如果在您的环境中未启用 RBAC,则用户必须使用池主服务器的 root 帐户进行登录。

  • 运行交换机端口锁定命令时,网络可以联机或脱机。

  • 在 Windows 来宾系统中,断开连接的网络图标仅在 XenServer VM Tools 安装在来宾系统中时才显示。

备注

如果没有任何交换机端口锁定配置,VIF 将被设为“network_default”,网络被设为“unlocked”。

在环境中使用任何第三方控制器时,配置交换机端口锁定不受支持。

交换机端口锁定不阻止云租户:

  • 在另一个租户/用户上执行 IP 层攻击。但是,如果它们尝试使用以下手段执行 IP 层攻击并且配置交换机端口锁定:a) 模拟云中的另一个租户或用户,或者 b) 启动对面向另一用户的流量的拦截。

  • 耗尽网络资源。

  • 通过正常的交换机阻塞行为接收一些面向其他虚拟机的流量(对于广播 MAC 地址或未知目标 MAC 地址)。

同样,交换机端口锁定不限制 VM 向哪里发送流量。

实施说明

可以使用命令行或 Citrix Hypervisor API 实施交换机端口锁定功能。但是,在注重自动化的大环境中,最典型的实施方法可能是使用 API。

示例

本节提供了交换机端口锁定如何阻止特定类型的攻击的示例。在这些示例中, VM-c 是一个敌对租户(租户 C)租用和用于攻击的虚拟机。VM-a 和 VM-b 是非攻击性租户租用的虚拟机。

示例 1:交换机端口锁定如何阻止 ARP 欺骗防御:

ARP 欺骗用于指示攻击者尝试将自己的 MAC 地址与另一节点的 IP 地址相关联。ARP 欺骗可能会导致改为将节点的流量发送给攻击者。为实现此目标,攻击者会将假冒的(具有欺骗性的)ARP 消息发送给以太网 LAN。

场景

虚拟机 A (VM-a) 想通过将 IP 流量寻址到虚拟机 B (VM-b),将 IP 流量从 VM-a 发送到 VM-b。虚拟机 C 的所有者希望使用 ARP 欺骗将其 VM 伪装成 VM-c,而其 VM 实际为 VM-b。

  1. VM-c 将推测性 ARP 答复流发送到 VM-a。这些 ARP 答复要求将答复中的 MAC 地址 (c_MAC) 与 IP 地址 b_IP 项关联。

    结果:因为管理员启用了交换机端口锁定,所以这些数据包全部被丢弃,因为启用交换机端口锁定可以防止模拟。

  2. VM-b 将 ARP 答复发送到 VM-a,要求将答复 (b_MAC) 中的 MAC 地址与 IP 地址 b_IP 关联起来。

    结果:VM-a 接收 VM-b 的 ARP 响应。

示例 2:IP 欺骗防御:

IP 地址欺骗是指通过使用伪造的源 IP 地址创建 Internet 协议 (IP) 数据包来隐藏数据包身份的过程。

场景

租户 C 正在尝试使用其主机 Host-C 在远程系统中执行拒绝服务攻击以隐瞒其身份。

尝试 1:

租户 C 将 Host-C 的 IP 地址和 MAC 地址设为 VM-a 的 IP 和 MAC 地址(a_IP 和 a_MAC)。租户 C 指示 Host-C 将 IP 流量发送到远程系统。

结果:Host-C 数据包被丢弃。这是因为管理员启用了交换机端口锁定。Host-C 数据包被丢弃,因为启用交换机端口锁定可以防止模拟。

尝试 2:

租户 C 将 Host-C 的 IP 地址设置为 VM-a 的 IP 地址 (a_IP),并保存其原始 c_MAC。

租户 C 指示 Host-C 将 IP 流量发送到远程系统。

结果:Host-C 数据包被丢弃。这是因为管理员启用了防止模拟的交换机端口锁定。

示例 3:Web 托管:

场景:

Alice 是一名基础结构管理员。

租户 B 是她的租户之一,正在从其 VM VM-b 托管多个 Web 站点。每个 Web 站点都需要一个在同一虚拟网络接口 (VIF) 上托管的不同 IP 地址。

Alice 将 Host-B 的 VIF 重新配置为锁定到单一 MAC 和多个 IP 地址。

交换机端口锁定的工作原理

交换机端口锁定功能可以让您在一个或两个层面上控制数据包过滤:

  • VIF 层。您在 VIF 上配置的设置可以确定数据包的过滤方式。您可以设置 VIF,使其阻止 VM 发送任何流量,限制 VIF,以便它只能使用分配给它的 IP 地址发送流量,或者允许 VM 将流量发送到连接 VIF 的网络上的任何 IP 地址。

  • 网络级别。Citrix Hypervisor 网络决定数据包的过滤方式。当 VIF 的锁定模式设置为 network_default 时,将引用网络级别锁定设置以确定允许传输的流量。

无论您使用哪个网络连接堆栈,此功能的运行方式都相同。但是,如以下各节的详细描述一样,Linux 桥接不完全支持 IPv6 中的交换机端口锁定。

VIF 锁定模式状态

Citrix Hypervisor 交换机端口锁定功能提供的锁定模式支持您在四种不同的状态下配置 VIF。这些状态仅在 VIF 插入正在运行的虚拟机中时适用。

 此图显示将网络锁定模式设为已解除锁定和配置 VIF 状态时,三种不同的 VIF 锁定模式状态的行为方式。在第一张图中,VIF 状态被设为默认设置,因此,不过滤来自 VM 的流量。VIF 不发送或接收任何数据包,因为锁定模式在第二张图中设置为 `disabled`。在第三张图中,VIF 状态设置为 locked。这意味着,如果这些数据包包含正确的 MAC 和 IP 地址,VIF 只能发送数据包。

  • Network_default。当 VIF 的状态设置为 network_default 时,Citrix Hypervisor 将使用网络的 default-locking-mode 参数来确定是否以及如何过滤流经 VIF 的数据包。行为有所差别,具体取决于关联网络将网络默认锁定模式参数设置为已禁用还是已解锁:

    -default-locking-mode=disabled,Citrix Hypervisor 将应用过滤规则,以便 VIF 丢弃所有流量。

    -default-locking-mode=unlocked,Citrix Hypervisor 将删除所有与 VIF 相关联的过滤规则。默认情况下,默认锁定模式参数设置为 unlocked

    有关 default-locking-mode 参数的信息,请参阅网络命令

    网络的默认锁定模式不会影响锁定状态未设置为 network_default 的已连接 VIF。

    注意:

    无法更改连接了活动 VIF 的网络的 default-locking-mode

  • 已锁定。Citrix Hypervisor 将应用过滤规则,以便仅允许通过 VIF 向外发送向指定 MAC 和 IP 地址发送的流量或从指定 MAC 和 IP 地址发送的流量。在此模式下,如果不指定 IP 地址,VM 将无法通过该 VIF(在网络上)发送任何流量。

    要指定 VIF 将接受来自哪些 IP 地址的流量,请通过使用 ipv4_allowedipv6_allowed 参数使用 IPv4 或 IPv6 地址。但是,如果您配置了 Linux 桥接,则无需键入 IPv6 地址。

    Citrix Hypervisor 允许您在 Linux 桥接处于活动状态时键入 IPv6 地址。但是,Citrix Hypervisor 无法根据键入的 IPv6 地址进行过滤。原因是 Linux 桥接没有用于过滤邻居发现协议 (Neighbor Discovery Protocol, NDP) 数据包的模块。因此,无法实施完整的保护,并且来宾能够通过伪造 NDP 数据包来模拟另一个来宾。因此,如果指定了一个 IPv6 地址,Citrix Hypervisor 将允许所有 IPv6 流量流经 VIF。如果未指定任何 IPv6 地址,Citrix Hypervisor 将不允许任何 IPv6 流量流经 VIF。

  • 未锁定。所有网络流量都可以经过 VIF。也就是说,不对任何传入 VIF 或从 VIF 传出的流量应用过滤器。

  • 已禁用。不允许任何流量流经 VIF。(也就是说,Citrix Hypervisor 将应用过滤规则,以便 VIF 丢弃所有流量。)

配置交换机端口锁定

本节提供三种不同的过程:

  • 限制 VIF 使用特定 IP 地址

  • 向现有的受限列表中添加 IP 地址例如,在 VM 运行过程中并且连接到网络时向 VIF 中添加 IP 地址(例如,如果临时让网络处于脱机状态)。

  • 从现有的受限列表删除 IP 地址

如果 VIF 的锁定模式设置为 locked,则只能使用在 ipv4-allowedipv6-allowed 参数中指定的地址。

因为在某些相对罕见的情况下,VIF 可能有多个 IP 地址,所以可以为 VIF 指定多个 IP 地址。

可以在插入 VIF(或启动 VM)之前或之后执行这些过程。

运行以下命令,将默认锁定模式更改为已锁定(如果尚未使用该模式):

xe vif-param-set uuid=vif-uuid locking-mode=locked
<!--NeedCopy-->

vif-uuid 表示您希望允许发送流量的 VIF 的 UUID。要获取 UUID,请在主机上运行 xe vif-list 命令。vm-uuid 指示显示哪个虚拟机的信息。设备 ID 表示 VIF 的设备编号。

运行 vif-param-set 命令,指定虚拟机可以从哪些 IP 地址发送流量。执行以下一项或多项操作:

  • 指定一个或多个 IPv4 IP 地址目标。例如:

     xe vif-param-set uuid=vif-uuid ipv4-allowed=comma separated list of ipv4-addresses
     <!--NeedCopy-->
    
  • 指定一个或多个 IPv6 IP 地址目标。例如:

     xe vif-param-set uuid=vif-uuid ipv6-allowed=comma separated list of ipv6-addresses
     <!--NeedCopy-->
    

可以指定多个 IP 地址,使用逗号将其隔开,如上例所示。

执行该过程以限制 VIF 使用特定 IP 地址后,可以添加一个或多个 VIF 能够使用的 IP 地址。

运行 vif-param-add 命令,向现有列表中添加 IP 地址。执行以下一项或多项操作:

  • 指定 IPv4 IP 地址。例如:

     xe vif-param-add uuid=vif-uuid ipv4-allowed=comma separated list of ipv4-addresses
     <!--NeedCopy-->
    
  • 指定 IPv6 IP 地址。例如:

     xe vif-param-add uuid=vif-uuid ipv6-allowed=comma separated list of ipv6-addresses
     <!--NeedCopy-->
    

如果限制 VIF 使用两个或更多 IP 地址,可以从列表中删除其中一个 IP 地址。

运行 vif-param-remove 命令,从现有列表中删除 IP 地址。执行以下一项或多项操作:

  • 指定要删除的 IPv4 IP 地址。例如:

     xe vif-param-remove uuid=vif-uuid ipv4-allowed=comma separated list of ipv4-addresses
     <!--NeedCopy-->
    
  • 指定要删除的 IPv6 IP 地址。例如:

     xe vif-param-remove uuid=vif-uuid ipv6-allowed=comma separated list of ipv6-addresses
     <!--NeedCopy-->
    

阻止虚拟机从特定网络发送或接收流量

以下过程阻止虚拟机通过特定 VIF 进行通信。由于 VIF 连接到特定的 Citrix Hypervisor 网络,因此,可以使用此过程阻止虚拟机从特定网络发送或接收任何流量。这可以比禁用整个网络提供更精细的控制级别。

如果使用 CLI 命令,则不需要拔出 VIF 即可设置 VIF 的锁定模式。此命令在 VIF 运行过程中更改过滤规则。在这种情况下,网络连接仍显示为存在,但是,VIF 会丢弃 VM 尝试发送的任何数据包。

提示:

要查找 VIF 的 UUID,请在主机上运行 xe vif-list 命令。设备 ID 表示 VIF 的设备编号。

要防止 VIF 接收流量,请禁用已连接到要阻止 VM 接收流量的网络的 VIF:

xe vif-param-set uuid=vif-uuid locking-mode=disabled
<!--NeedCopy-->

此外,还可以通过在 VM 的“网络连接”选项卡中选择虚拟网络接口并单击“取消激活”,在 XenCenter 中禁用 VIF。

删除 VIF 对 IP 地址的限制

要还原到默认(原始)锁定模式状态,请使用以下过程。默认情况下,创建 VIF 时,Citrix Hypervisor 可以对其进行配置,以便不限制它使用特定 IP 地址。

要将 VIF 恢复为已解锁状态,请将 VIF 默认锁定模式更改为已解锁。如果尚未使用该模式,请运行以下命令:

xe vif-param-set uuid=vif_uuid locking-mode=unlocked
<!--NeedCopy-->

简化云中的 VIF 锁定模式配置

不对每个 VIF 运行 VIF 锁定模式命令,可以确保所有 VIF 在默认情况下禁用。为此,必须在网络级别更改数据包过滤功能。更改数据包过滤功能会导致 Citrix Hypervisor 网络决定数据包的过滤方式,如上一部分交换机端口锁定的工作原理中所述。

具体而言,网络的 default-locking-mode 设置可以确定采用默认设置的新 VIF 的行为方式。只要 VIF 的 locking-mode 设置为 default,VIF 就会引用网络锁定模式 (default-locking-mode) 以确定是否以及如何过滤流经 VIF 的数据包:

  • 未锁定。当网络 default-locking-mode 参数设置为 unlocked 时,Citrix Hypervisor 可以让 VM 将流量发送到 VIF 连接到的网络上的任何 IP 地址。

  • 已禁用。当 default-locking-mode 参数设置为 disabled 时,Citrix Hypervisor 将应用过滤规则,以便 VIF 丢弃所有流量。

默认情况下,在 XenCenter 中创建并使用 CLI 的所有网络的 default-locking-mode 将设置为 unlocked

通过将 VIF 的锁定模式设置为其默认设置 (network_default),可以(在网络级别)为所有连接特定网络的新建 VIF 创建基础默认配置。

此图显示,当 VIF 的 locking-mode 设置为其默认设置 (network_default) 时,VIF 如何使用网络 default-locking-mode 确定其行为。

 此图显示了配置为默认设置 (locking-mode=network_default) 时,VIF 如何检查以查看与 default-locking-mode 相关联的设置。在此图中,网络设置为 default-locking-mode=disabled,以便所有流量都不能流经 VIF。

例如,默认情况下,创建的 VIF 的 locking-mode 设置为 network_default。如果将网络的 default-locking-mode 设置为 disabled,则尚未为其配置锁定模式的任何新 VIF 都将处于禁用状态。VIF 将保持禁用状态,直至您 (a) 更改各个 VIF 的 locking-mode 参数,或者 (b) 将 VIF 的 locking-mode 明确设置为 unlocked。当您对特定 VM 足够信任,因此根本不想过滤其流量时,这将非常有用。

更改网络的默认锁定模式设置:

创建网络后,运行以下命令,更改默认锁定模式:

xe network-param-set uuid=network-uuid default-locking-mode=[unlocked|disabled]
<!--NeedCopy-->

注意:

要获取网络的 UUID,请运行 xe network-list 命令。此命令显示运行命令的主机上的所有网络的 UUID。

查看网络的默认锁定模式设置:

运行以下命令之一:

xe network-param-get uuid=network-uuid param-name=default-locking-mode
<!--NeedCopy-->

或者

xe network-list uuid=network-uuid params=default-locking-mode
<!--NeedCopy-->

使用网络设置过滤 VIF 通信

以下过程指示虚拟机上的 VIF 通过 Citrix Hypervisor 网络本身使用该网络的 default-locking-mode 设置来确定如何过滤流量。

  1. 运行以下命令,将 VIF 锁定状态更改为 network_default(如果尚未使用该模式):

    xe vif-param-set uuid=vif_uuid locking-mode=network_default
    <!--NeedCopy-->
    
  2. 运行以下命令,将默认锁定模式更改为 unlocked(如果尚未使用该模式):

    xe network-param-set uuid=network-uuid default-locking-mode=unlocked
    <!--NeedCopy-->