我已经为此苦苦挣扎了一段时间。我有几台从网络启动的测试机器,它们从 DHCP 服务器接收启动数据,这告诉它们谁是启动服务器,它们将启动的文件在哪里等等。但是,我需要在同一个子网中添加第二个 PXE 服务器(现在无法创建另一个 Vlan)。
我在某处读到过,我可以根据 MAC 地址向某些机器发送某些参数(这样就可以选择哪些计算机从哪个服务器启动),但是我找不到如何做到这一点,有人知道怎么做吗?这将是我的解决方案,但我找不到答案。
我的 DHCP 是 Windows Server 2003
我有 2 台服务器运行自定义版本的 Linux 服务器作为 TFTP 服务器。有些机器使用数据从服务器 1 启动,而其他机器必须能够从服务器 2 启动。
谢谢
编辑:我已经选了答案,但如果有人关心的话,我没有使用建议的链式加载,而是编写了一个 gPXE 脚本并将其与 ISO 映像一起刻录到 CD 中,我从它启动,执行脚本并将 PC 重定向到脚本中指定的服务器,这是我使用的脚本。
#!gpxe
dhcp net0
set filename pxelinux.0
set next-server 10.225.83.125 #Server your pointing to
set 210:string http://10.225.83.125/fogimg/ #if http the exact http address
imgfetch pxelinux.0 #name of the img file to fetch
imgload pxelinux.0 #name of the img file to load
boot pxelinux.0 #name of the img file to boot from
答案1
答案2
我们在 Linux DHCP 服务器上使用 ISC dhcpd3,而不是 Server 2003。但我们确实在那里支持两种不同的网络启动环境。用于 Linux 安装的 PXELinux 和用于 Windows 安装的 Microsoft Deployment Toolkit 2010。
例如,由于我们从 DHCP 服务器使用 TFTP,因此我们的 Linux 客户端有如下条目
host linux-host {hardware ethernet 00:01:02:03:04:05;
fixed-address A.B.C.D; filename "pxelinux.0";}
Windows 客户端有类似这样的条目
host windows-host {hardware ethernet 00:06:07:08:09:10;
fixed-address A.B.C.E; use-host-decl-names on;
next-server A.B.C.F; option tftp-server-name "A.B.C.F";
option bootfile-name "boot\\x86\\wdsnbp.com";}
这是(我认为)Chopper3 上面描述的设置。就我个人而言,我永远不会再使用 Windows DHCP 服务器。我们有一个 Python 脚本,可以在几秒钟内重新生成我们的 DHCP 配置,这样我们就可以根据需要在启动类型之间切换。
答案3
您在这里想要的是能够根据客户端 MAC 设置 BOOTP/DHCP 选项 66 和 67。虽然您可以使用默认的 Windows DHCP 服务轻松地全局设置这些选项,但没有选项可以进行选择,即使使用保留也是如此。
我不知道其他 DHCP 服务器是否有此功能,所以另一种可能性是在现有的 DHCP 服务器上设置 MAC 到 IP 保留(这样您就知道您的机器在哪些 IP 上),并使用选项 66 和 67 将相同的启动主机和文件分发给每台机器,但是然后在分发这些启动文件的机器上根据源 IP 分发不同的文件 - 这有意义吗?