Help us improve your experience.

Let us know what you think.

Do you have time for a two-minute survey?

 
 

Ubuntu KVM 和 libvirtd 服务器 BMS 环境

这些说明和建议适用于 Ubuntu 20.04.x 安装,也可能适用于 Ubuntu 22.04.x。众所周知,对于 LACP 桥接器支持,Ubuntu 16.04 不支持在 VM 创建更改后 Linux 桥接器和 VM 接口一章中使用的调整。

部署前的准备工作

可选:如果尚未安装 KVM/QEMU,请安装

以下命令显示如何安装 KVM 虚拟机管理程序并运行所需的检查。确保您使用的是根目录。

可选:使用 DHCP 服务器创建 br0-bridge

安装后,虚拟机管理程序会自动在 192.168.122.0/24 前缀中创建默认 virbr0 Linux 网桥。此网桥将为其余网络接口提供 NAT 源并管理 DHCP 服务器租期。您可以连接 vJunos-switch VM fxp0 接口进行 OOB 管理。此默认 virbr0 Linux 网桥的一个限制是 DHCP 租约讲义是随机且不可预测的。

对于实验室服务器,建议创建额外的 br0 Linux 网桥。此 Linux 网桥必须对外部接口进行 NAT 处理,才能使用 192.168.10.0/24 前缀进行复制。

您已使用 DHCP 为 fxp0 上的 vEX 交换机分配了一个固定 IP,以便通过 SSH 连接到交换机。标准 virbr0-bridge 分配一个范围为 192.168.122.0/24 的随机 IP 地址。相反,您可以创建一个简单的 DHCP 服务器,以便为 br0 Linux 网桥上范围为 192.168.10.0/24 的已知 MAC 地址提供静态租约。然后,使用第一个接口上的某个 MAC 地址启动 vJunos-switch 虚拟机,以便为 fxp0 接口分配一个预定义的 IP 地址。

创建 Linux 网桥以模拟虚拟机之间的网络链接

连接 vJunos 交换机虚拟机的 fxp0 接口时,请使用默认 virbr0 或新的 br0 Linux 网桥。由于所有其他链路都需要新的网桥,因此请在设备之间创建虚拟链路。在此示例中,网桥名称会尝试复制 Junos OS 接口命名约定。

vJunos-switch 的默认 Junos OS 配置

出于以下主要原因,您可能需要包括在启动 vJunos-switch 虚拟机时执行的自定义 Junos OS 配置:

  • 使用已知密码为管理系统(如 Juniper Apstra)创建 root/主管帐户,以便登录。这样无需本地 DHCP 服务器即可推送自定义配置,并支持 SSH 登录以更好地进行调试。
  • 为 Mist 云应用 adopt 配置,以便新交换机显示在清单中。
  • 在开始新实验室时加载上一个实验室的现有有效配置。

自定义出厂默认配置

以下是使用以下配置创建文件 juniper.conf 时加载的最小 Junos OS 配置示例:

  • 用户名=root
  • 密码=ABC123
  • 预计将从 fxp.0 获得 DHCP 租约
  • 在所有接口 上启用 LLDP

可选:添加 Junos OS 配置以应用于 Mist 云

在此步骤中,您将添加 Junos OS 配置,以使交换机自动显示在 Mist 云中。

  1. 转到 组织 -> 清单。

    A screenshot of a blue screen Description automatically generated

  2. 选择 交换机 ,然后单击 采用交换机

  3. 单击 “复制到剪贴板”

    A screenshot of a computer Description automatically generated

  4. 从您首选的编辑器中打开一个文件 adopt-template.txt ,然后将收集的信息粘贴到该文件中。然后,保存并关闭文件。
    注意:

    您可以使用相同的 Mist 云采用代码来加载同一组织中的所有交换机。

  5. 使用模板转换信息,以将其更改为不同的 Junos OS 配置格式。首先,您必须使用 bash shell 命令从文件 adopt-template.txt 中提取五个变量。

在此步骤中,您将添加回不依赖于 set 命令的 Junos OS 配置。

使用 Junos OS 虚拟机配置创建虚拟磁盘

  1. 创建高清映像,以使用 vJunos-switch 支持站点中的原始 bash 脚本 make-config.sh 加载自定义配置。

    A screenshot of a computer Description automatically generated

  2. 通过链接下载图像。例如: https://webdownload.juniper.net/swdl/dl/anon/site/1/record/168885.html

    如果找不到图片,请使用下面的副本。

  3. 使用 创建包含自定义配置 make-config.sh的 qcow2 映像。
  4. 将配置映像复制到 KVM 虚拟机的最终目标。
  5. 创建新的 vJunos-switch 虚拟机时,如下所示将粗体行插入虚拟机 virt-install 配置。 Proxmox 虚拟环境一章描述了一个示例。

使用 virt-install CLI 部署 vJunos 交换机虚拟机

对于每个 vJunos-switch 虚拟机,您需要一个基本映像的单独副本,以便系统写入其中。下面的配置使用 KVM 备份文件方法创建一个映像,其中包含从原始映像中所做的更改和读取。此方法可加快虚拟机启动速度并节省存储空间。您可能需要修改文件 /etc/libvirt/qemu.conf 才能将自己添加为用户和组。然后,运行 sudo systemctl restart libvirtd 以使用此功能。

备份文件必须始终允许您为每个虚拟机复制映像。

最后,您可以在以下配置中成功启动 vJunos-switch 虚拟机,而无需更改粗体参数。虚拟机的第一个以太网接口始终为 fxp0。设置 MAC 地址并将 DHCP 服务器配置为将 192.168.10.201 分配为静态 DHCP 租约后,您可以稍后直接启动远程 shell。

使用 virt-manager GUI 部署 vJunos-switch 虚拟机

要通过 virt-manager GUI 安装 vJunos-switch,您必须手动更改一些基于 XML 的配置文件。因此,GUI 不会为此虚拟机提供任何好处。

  1. 获取基本 VM 的副本到 libvirtd 映像目录,如图所示。

  2. 单击 “编辑”->“首选项 ”,为此虚拟机启用 XML 编辑

    A screenshot of a computer Description automatically generated

  3. 选择 “启用 XML 编辑”

    A screenshot of a computer Description automatically generated

  4. 选择 文件 -> 新建虚拟机

    A screenshot of a computer Description automatically generated

  5. 选择 导入现有磁盘映像进行 安装。

    A screenshot of a computer Description automatically generated

  6. 单击浏览。

    A screenshot of a virtual machine Description automatically generated

  7. 选择您复制的图像,然后单击 “选择卷”

    A screenshot of a computer Description automatically generated

  8. 选择 OS 的 通用默认值 ,然后单击 转发

    A screenshot of a computer Description automatically generated

  9. 单击 + 进行配置:
    • 内存=5120
    • CPU=4

    A screenshot of a computer Description automatically generated

  10. 然后,配置:
    1. 姓名=spine1
    2. 选择 “安装前自定义配置”
    3. 暂时选择 “虚拟网络”br0network“:NAT。 第一个接口 (fxp0) 的网络选择必须是 NAT 网络。
    4. 单击 “完成”

      A screenshot of a computer Description automatically generated

  11. 单击 CPU。

    主机 CPU 配置完成。您可以单击 XML 以稍后更改配置,因为不需要其他选项。

    A screenshot of a computer Description automatically generated

  12. 将第一个接口的 Device model 更改为 virtio

    A screenshot of a computer Description automatically generated

  13. 使用接口的 add 函数添加新的网络接口并配置:
    • 网络来源=Bridge ge000
    • 取消选中=MAC address
    • 设备型号=virtio

    A screenshot of a computer Description automatically generated

  14. 重复步骤 13 以添加网络源 Bridge ge001, Bridge ge002Bridge ge003.

    A computer screen shot of a computer Description automatically generated

    A screenshot of a computer Description automatically generated

    A screenshot of a computer Description automatically generated

  15. 或者,您可以移除下图中以黄色突出显示的默认接口和选项,因为这些接口和选项对于 vJunos 交换机虚拟机不是必需的。

    A screenshot of a computer Description automatically generated

  16. 选择“操作系统信息”,然后选择“XML 进行编辑”。删除 和 </os> 之间的<os>所有内容并将其替换为突出显示的行,如下所示。替换后的配置会指示特殊的 BIOS 命令,以确保虚拟机充当 vEX9214,而非 vMX。

    A screenshot of a computer Description automatically generated

    1. 插入以下配置,如下所示:

      替换后的配置如下图中黄色突出显示所示。

      A screenshot of a computer Description automatically generated

    2. 如上图所示插入以下配置 <cpu

      替换后的配置如下图中黄色突出显示所示。

      A screenshot of a computer program Description automatically generated

  17. 单击 应用开始安装

安装过程可能需要三分钟,系统会提示你登录 VM。

A screenshot of a computer Description automatically generated

Linux 网桥和虚拟机接口 虚拟机创建后的更改

启动虚拟机后,必须更改接口和 Linux 网桥配置。您在 部署前的准备工作一章中使用默认配置创建的网桥适用于 EVPN VXLAN 交换矩阵。

默认的 Linux 网桥不支持:

  • LLDP 消息传输,这意味着您看不到任何链路邻接方。
  • LACP 802.3ad 消息传输,可防止您构建 LAG。
  • MTU 大,会导致 VXLAN 消息分段。使用 VXLAN 时,交换矩阵的 MTU 必须至少比连接的客户端大 50 个字节。对连接的桌面虚拟机和具有相同默认 MTU (1500) 的交换矩阵链路进行映像,其中传输链路始终会额外增加 50 个字节。ICMP Ping等小数据包工作正常,但当客户端使用1500字节的完整MTU时,效果不佳。
  • 802.1X 有线客户端身份验证被阻止。

因此,您需要在创建 VM 后更改虚拟接口和 Linux 网桥以支持这些功能。此更改可确保您顺利构建虚拟 EVPN VXLAN 交换矩阵。

  1. 使用以下命令创建 bash 脚本以执行所有必需的功能。
  2. 将以下配置复制并粘贴到编辑器中。然后,保存并关闭。
  3. 在演示 VM 上运行此脚本,您可以在其中监视应用更改所需的命令。

您有意在某个接口上针对未升级的 MTU 发出警告。此警告意味着 Linux 网桥始终具有任何连接的网络接口中最低的 MTU。因此,请确保升级连接到单个网桥的所有接口。否则,您的 MTU 更改将不会实施。

注意:

该脚本有意不升级虚拟机的第一个接口(通常是 fxp0)。如果要包含此接口,请将第二行更改为“virsh domiflist $1 |尾部 -n +3 > /tmp/vmbridgelist.txt“。

注意:

调整 Linux 桥仅适用于 Ubuntu 20.04 或更高版本。

可选:优化您的 KVM 服务器

Ultra 内核 Samepage 合并内核

在启动多个 vJunos 交换机虚拟机时,与标准 KSM 支持相比,使用支持 Ultra 内核 Samepage 合并的内核可以节省 30% - 40% 的内存。这对于实验室和 EVE-NG 等系统来说是有益的,EVE-NG 默认包含此内核。如果系统在不支持更高内核的 Ubuntu 20.04.x 上运行,您可以使用以下配置从官方 GitHub 存储库构建这样的内核。

注意:

确保您已在 BIOS 中禁用安全启动。如果没有,则不会加载未签名的内核。

  1. 在浏览器中输入 https://git.launchpad.net/~ubuntu-kernel/ubuntu/+source/linux/+git/focal/refs/
    1. 如果您的服务器上安装了普通 5.4.x 内核,请运行以下命令:

    2. 如果您的服务器上安装了较新的内核,例如支持硬件支持堆栈 (HWE) 的内核, 5.15.x 请运行以下命令:
  2. 无论您的内核版本如何,请继续执行以下配置以构建和安装 USKM 内核。
  3. 服务器再次启动后,检查您是否在新内核上运行。

关闭安全性缓解措施

注意:

如果您的服务器处于生产阶段或可通过 Internet 访问,请避免使用这些说明。您可以修改安全检查以提高实验室的 CPU 性能。你被警告了。

为避免 20% 的 CPU 性能损失,您需要禁用针对崩溃/幽灵漏洞的所有缓解措施。此服务器不托管来自不同用户的虚拟机。由于你管理实验室中的所有 VM,而且它不是公开提供的生产级系统,因此你将性能置于安全性之上。