过去,我通过使普通的 dhcp 服务器返回网络启动所需的所有内容,多次设置 PXE 服务器:在单个 dhcp 设置中,常规 ip config 和 bootinfo。这样很容易做到。
根据我读过的文档(维基百科有一个很好的总结)应该有可能拥有一个未修改的 dhcp 服务器(例如,如果您所在位置的管理员拒绝访问)和一个仅返回启动信息的单独服务器。这通常称为“PXE 服务器”或“代理 DHCP”服务器。过去我见过(未使用)这个 pxe 服务器(最后一个版本是 5 年前)。
昨天我安装了 Cobbler 来看看它到底做了什么。现在我想使用它(喜欢它的易用性),但修改“主”dhcpd 服务器以获取 PXE 不是一种选择。
我找不到任何关于如何让 cobbler 使用真正的 PXE (==proxy dhcp) 服务器运行的文档。
这可以用 cobbler 完成吗?
我可以将 isc dhcp 服务器配置为 PXE 服务器(即没有 ip 信息,只有引导信息)吗?
还是我应该采用完全不同的方法(如果是,您的建议是什么)?
谢谢
我刚刚发现的新发现:dnsmasq 2.4.8 版的更改日志说:
“代理-DHCP,其中 dnsmasq 只提供 PXE 信息,而另一个 DHCP 服务器进行地址分配,也是允许的。”
很有意思。特别是因为 cobbler 已经可以控制 dnsmasq。
更新:
dnsmasq 2.51 将支持完全实现我想要的技巧的这个配置。
我的 /etc/cobbler/dnsmasq.template 现在看起来像这样:
# Cobbler generated configuration file for dnsmasq
# $date
#
# resolve.conf .. ?
#no-poll
#enable-dbus
read-ethers
addn-hosts = /var/lib/cobbler/cobbler_hosts
# Be a proxyDHCP server
dhcp-range=10.10.0.0,proxy
# Only respond to clients that are known (i.e present in /etc/ethers)
dhcp-ignore=#known
# Set this (and domain: see below) if you want to have a domain
# automatically added to simple names in a hosts-file.
expand-hosts
domain=test.basjes.nl,10.10.15.0
# Loads <tftp-root>/pxelinux.0 from dnsmasq TFTP server.
pxe-service=x86PC, "Boot PXELinux (=Cobbler controlled)", pxelinux ,$next_server
$insert_cobbler_system_definitions
更新:2012-04-30
几个月前,我收到一封来自某人的电子邮件,说他无法使上述工作正常进行。事实证明,我已经对自己忘记的鞋匠进行了一些修理和更换。所以我为刚刚成为主干一部分的主线鞋匠提供了关键的修复。我还创建了一些额外的支持文档。
PXE ROM 需要来自 DHCP 服务器的“next-server”指令才能找到并加载引导加载程序(无论是 grub、pxelinux 还是任何其他引导加载程序)。如果未提供“下一个服务器”,则由 PXE ROM 决定要做什么。您必须查看您的网卡 bios 配置,看看是否有一个选项可以手动指定服务器。
正如上面的答案所指出的,使用自定义 ISO 或 USB 记忆棒来引导机器,在内核命令行中已经提供了所有信息可能是最好的方法。如果您无权访问 DHCP 服务器的配置。
我们所做的是挂载我们制作的 ISO 文件,从中引导内核和 initrd,并让它从中心位置加载 kickstart。然后,此 kickstart 文件指向包含 RPM 文件的存储库,这可能是您的 cobbler 服务器。
我对 Cobbler 没有太多经验(很遗憾),但也许这对你来说是一个选择?
如果您只想运行一些测试,您可以在同一网络上拥有多个 dhcp 服务器。您可以让 cobbler 创建一个 dhcpd 配置,该配置将告诉服务器仅在特定 MAC 发出 ARP 请求时响应。如果您只是注释掉/禁用该服务器上的任何范围(我在这里谈论的是 isc-dhcpd),它不会是侵入性的。如果您使用 AD 等,您可能会收到一些 windows 框(在广播中)抱怨此 dhcp 服务器是非权威的,但除此之外,我认为没有太大的危险。
但最好的方法是让 cobbler/dhcp 和您尝试在与网络其余部分分开的 VLAN 上配置的服务器。这样你就限制了你的广播域,其他盒子甚至都不会看到你的 dhcp 公告。