![Mac OS X 服务器配置 DHCP 选项 66 和 67](https://linux22.com/image/601803/Mac%20OS%20X%20%E6%9C%8D%E5%8A%A1%E5%99%A8%E9%85%8D%E7%BD%AE%20DHCP%20%E9%80%89%E9%A1%B9%2066%20%E5%92%8C%2067.png)
我需要配置 Mountain Lion (10.8.2) OS X Server BOOTP 以提供 DHCP 选项 66 和 67,从而为网络上的 PC 提供 PXE 启动。我尝试遵循 bootpd MAN 页,但它们不够具体。我也在网上读过相互矛盾的信息,但没有关于 Mountain Lion DHCP 的明确信息。
来自 bootpd 手册页:
bootpd 具有用于更多选项的内置类型转换表,主要是 RFC 2132 中指定的选项,它会尝试将选项从属性列表中出现的任何类型转换为二进制数据包格式。例如,如果 bootpd 知道选项的类型是 IP 地址或 IP 地址列表,它会将 IP 地址的字符串形式转换为二进制网络字节顺序数值。
如果选项的类型是数字值,它会从字符串、整数或布尔值转换为适当大小的网络字节顺序数字值。
无论 bootpd 是否知道选项的类型,您始终可以使用数据属性列表类型指定 DHCP 选项
<key>dhcp_option_128</key>
<data>
AAqV1Tzo
</data>
我的 TFTP 服务器是172.16.152.20并且引导文件是pxelinux.0
我已经编辑了 /etc/bootpd.plist 并将以下内容添加到子网字典中:
<key>dhcp_option_66</key>
<data>
LW4gLWUgrBCYFAo=
</data>
<key>dhcp_option_67</key>
<data>
LW4gLWUgcHhlbGludXguMAo=
</data>
根据手册页,数据元素应该是 Base64 编码的,但无论我怎么尝试,我都无法让 PXE 客户端启动。
我尝试使用各种方法对 172.16.152.20 进行编码:
- echo “172.16.152.20” | openssl enc -base64 返回 MTcyLjE2LjE1Mi4yMAo=
- DHCP 选项代码实用程序 (http://mac.softpedia.com/get/Internet-Utilities/DHCP-Option-Code-Utility.shtml)从 172.16.152.20 生成一个字符串,结果如下:LW4gLWUgMTcyLjE2LjE1Mi4yMAo=(用于上例)
- DHCP 选项代码实用程序从 172.16.152.20 生成 IP 地址,结果如下:LW4gLWUgrBCYFAo=
编码pxelinux.0采用上述方法同样可以得到不同的编码。
我尝试过所有三种数据元素编码方法,但似乎都不起作用,即我的 PXE 启动客户端无法定向到我的 TFTP 服务器。有人能帮忙吗?
问候,保罗·亚当斯。
答案1
感谢 Apple 论坛中的一个帖子,我终于让这个工作正常了:
https://discussions.apple.com/thread/4561762?start=15&tstart=0
在 OS X Mountain Lion 中,Apple 现在期待以空字符结尾的字符串某些 DHCP 选项。贡献者约翰·洛克伍德已创建了一个实用程序,它将生成正确的 bootpd XML(包括以空字符结尾的选项字符串)。请参阅上面的主题,并在此处下载该实用程序:
http://jelockwood.blogspot.co.uk/2013/06/dhcp-server-on-os-x-server.html
将生成的代码添加到我的bootpd.plist使我能够仅使用 OS X DHCP 服务来 PXE 启动 PC。