upload successful

# 前言

上周去用户现场部署 Ivanti EPM 服务器用于测试,当时用户主要测试功能为远程控制和操作系统部署,远程控制这个功能不需要配置,只要在代理配置中启用了远程功能即可

操作系统部署这块,如果是在 Windows Server 环境中配置还是比较简单的,仅需要在 DHCP 服务器中添加供应商类和 PXE 主机引导文件信息即可,但是用户的环境中是用 Linux Server 作为 DHCP 服务器,由于之前的项目中并没有用户使用过 Linux Server 作为 DHCP 服务器,没有配置经验,为了不浪费用户时间,决定暂时不使用 PXE 启动来测试操作系统部署,而是在核心服务器上导出 WinPE 镜像,将镜像烧录到 U 盘,用 U 盘引导测试,后续再配置 DHCP 中的 PXE 信息,用于网络引导测试

跟用户进行了短暂的沟通,最终用户也同意了这个方案,先用 U 盘启动测试,后续再教他们如何配置 PXE 启动

当天测试很成功,回来后便着手搭建 Linux DHCPPXE 启动环境

# 环境准备

操作系统 IP 地址 安装服务
Windows Server 2019 192.168.80.203 EPM 核心服务器
CentOS 7 192.168.80.205 DHCP
Windows 11 192.168.80.204 TFTP、PXE Agent

我这边用的虚拟机版本是 VMware® Workstation 15 Pro ,我已经提前安装了一台 CentOS 7 作为本次测试的服务器,先关闭 VMwareDHCP 服务,因为我们要在 CentOS 7 里安装 DHCP 服务,如果不关闭的话会有冲突

upload successful

关闭 VMwareDHCP服务 后,我们的 CentOS 7 将会无法通过 DHCP 获取到 IP 地址,这时就需要修改网卡配置文件,将其设置成静态 IP,手动配置好 IP 地址相关信息

vi /etc/sysconfig/network-scripts/ifcfg-ens32

upload successful

配置好后用 nmcli c reload ens32 命令重启网卡,令其生效

upload successful

# DHCP

配置好网络后,用 yum install dhcp -y 命令安装 DHCP 服务

upload successful

安装完后切换到 /etc/dhcp 目录,然后用 cp 命令把 /usr/share/doc/dhcp-server/dhcpd.conf.example 模板文件复制到 /etc/dhcp 目录下,并重命名为 dhcpd.conf

upload successful

然后用 vi dhcpd.conf 编辑这个文件,修改子网信息,我这边是 192.168.80.0/24 ,请根据自己的虚拟网络配置对应的信息,其它的信息可以删除

upload successful

配置好后重启 DHCP 服务看看是否正常

upload successful

可以看到 UDP 67 端口已经起来了

# TFTP And PXE Agent

在核心服务器默认安装目录下 C:\Program Files\LANDesk\ManagementSuite\LANDesk\files 找到 Setup_PXEProxy.exe 安装程序,拷贝到 Windows 11 这台设备上运行安装,查看 C:\Program Files (x86)\LANDesk\PXE 目录大小变化,安装完后应该是在 800M 左右

upload successful

进入 PXE 下的 System 目录,将 PXESvc.exe 重命名,该程序负责提供 DHCP 服务,由于当前已经有 DHCP 服务器了,所以不需要这台 PXE代表 提供 DHCP 服务

upload successful

打开系统服务,启动 LANDesk(R) PXE MTFTP Service 服务,并确保 LANDesk(R) PXE Service 服务在停止状态

upload successful

# EPM 配置

在核心服务器上,查看 PXE 信息中的子网是否已经启用,以及当选设备是否是 Windows 11 这台设备,确认无误即可

upload successful

# DHCP 测试

首先测试 DHCP 服务器是否能够正常为设备提供 IP 服务,创建一台新的虚拟机,选择 BIOS 启动,并提前在 DHCP 服务器上用 tail -f /var/log/messages 查看系统日志变化

upload successful

点击开启虚拟机

upload successful

可以看到客户端能够正常获取到 IP 地址,接下来就是配置 PXE 启动信息了

# 配置 PXE 信息

编辑 dhcpd.conf 配置文件,添加 PXE 启动信息

l
# A slightly different configuration for an internal subnet.
option space PXE;
option PXE.mtftp-ip    code 1 = ip-address;
option PXE.mtftp-cport code 2 = unsigned integer 16;
option PXE.mtftp-sport code 3 = unsigned integer 16;
option PXE.mtftp-tmout code 4 = unsigned integer 8;
option PXE.mtftp-delay code 5 = unsigned integer 8;
option arch code 93 = unsigned integer 16;
subnet 192.168.80.0 netmask 255.255.255.0 {
range 192.168.80.100 192.168.80.250;
option routers 192.168.80.2;
option broadcast-address 192.168.80.255;
default-lease-time 600;
max-lease-time 7200;
class "pxeclients" {
match if substring (option vendor-class-identifier, 0, 9) = "PXEClient";
next-server 192.168.80.204;
if option arch = 00:06 {
filename "IA32 EFI\UNDI\bstrap\bootia32.0";
} else if option arch = 00:07 {
filename "EFI\UNDI\bstrap\bootx64.0";
} else {
filename "x86pc\UNDI\provwin\startrom.0";
}
}
}

upload successful

保存后重启 dhcpd 服务,服务不报错应该就没什么大问题

upload successful

# PXE 启动测试

回到之前新建的虚拟机,重启进入 PXE 启动,看看是否正常

upload successful

可以看到客户端是能够正常由网卡引导,但是提示 TFTP File not found

当前客户端是 BIOS 启动, vendor class identifier 应该是 arch:00000 , 对应的启动文件是 PXE 代表 TFTP 根目录下的 x86pc\UNDI\provwin\startrom.0

为了验证引导信息是否正确,需要在 PXE 代理主机上安装 Wireshark 抓包分析,安装好后打开 Wireshark 对网卡进行抓包,然后回到客户端重新引导一遍

操作完后停止 Wireshark ,在过滤栏中输入 bootp 查看 dhcp协议

upload successful

vendor class identifier 信息正常,查看 boot file 信息

upload successful

王德发,目录符号 "\" 被过滤掉了,难怪引导不了🙃

细想一下,这个会不会是跟 Linux 的特性有关?因为 Linux 的目录符号是 "/" , 在 DHCP 配置文件更换试试

upload successful

重启 DHCP 服务器,然后回到客户端重新引导看看

upload successful

下载失败,继续抓包分析💀

upload successful

看来不能改变 Windows 的目录符号,重新编辑 DHCP 配置,目录符号使用 "\\" 试试

upload successful

奈斯,客户端正常引导

upload successful

抓包查看 boot file name 信息文件路径也显示正常了

upload successful

关闭虚拟机,测试 UEFI 引导是否正常

upload successful

开机进入 EIF Network 引导,成功加载 WinPE 系统

upload successful

查看 Vendor class identifierboot file name 信息正常

Vendor class identifier 显示 Arch:00007

upload successful

boot file nameEFI\UNDI\bstrap\bootx64.0

upload successful

# 结束语

这次的测试相对简单,重温了一下 DHCP 协议和 PXE 引导原理,虽然 DHCP 的配置还有许多不懂的地方,但是目前我也暂时用不上

总的来说,本次测试运气也比较好,测试过程中并没有碰什么壁,如果当客户端的 Vendor class identifierboot file name 信息正常还是无法引导的话,我就不知道怎么进行下去了,这时候可能需要找厂家支持了,但是我对厂家并不抱太大的希望,因为通常这个东西还是得靠自己,接触 EPM 一年了,有时遇到问题真的会觉得很无助,它不像开源或者免费的产品,遇到问题上网一搜一大堆答案,厂家在国外,我语言不通没法直接跟那边沟通,通过 Email 效率很低,心累,就酱吧!!!🤡🤡🤡

此文章已被阅读次数:正在加载...Edited on

Give me a cup of [coffee]~( ̄▽ ̄)~*

Bob WeChat Pay

WeChat Pay

Bob PayPal

PayPal

Bob Alipay

Alipay