OS X bootpd作为DHCP服务器不会给出IP地址

我正在试用Mac OS 10.6上的PXE lan-boot;

经过一些长时间的故障排除,我已经到了LaunchD很好的运行bootpd ,有以下选项:

 <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> <plist version="1.0"> <dict> <key>detect_other_dhcp_server</key> <false/> <key>bootp_enabled</key> <false/> <key>dhcp_enabled</key> <true/> <key>old_netboot_enabled</key> <false/> <key>netboot_enabled</key> <false/> <!-- <key>relay_enabled</key> <false/> <key>allow</key> <array/> <key>deny</key> <array/> <key>relay_ip_list</key> <array/> --> <key>reply_threshold_seconds</key> <integer>0</integer> <!-- <key>use_open_directory</key> <false/> --> <!-- <key>NetBoot</key> <dict> <key>shadow_size_meg</key> <integer>0</integer> <key>afp_users_max</key> <integer>0</integer> <key>age_time_seconds</key> <integer>0</integer> <key>afp_uid_start</key> <integer>0</integer> </dict> --> <key>Subnets</key> <array> <dict> <key>name</key> <string>192.168.1</string> <key>net_address</key> <string>192.168.1.1</string> <key>net_mask</key> <string>255.255.255.0</string> <key>net_range</key> <array> <string>192.168.1.2</string> <string>192.168.1.254</string> </array> <!-- <key>supernet</key> <string></string> --> <key>allocate</key> <true/> <key>lease_max</key> <integer>86400</integer> <key>lease_min</key> <integer>86400</integer> <!-- OTHER OPTIONS FORMAT: <key>dhcp_*</key> <string></string> --> <!-- DHCP PXE BINDINGS --> <key>dhcp_option_150</key> <string>pxe server</string> <key>dhcp_option_67</key> <string>boot folder</string> </dict> </array> </dict> </plist> 

物理设置是:

  Router (DHCP off) | |------- Mac (DHCP Server) | |------- Thin Client | |------- mobile device 

当通过路由器的无线networkingtesting移动设备时,我得到:

 bootpd[1244]: DHCP DISCOVER [en0]: <MAC ADDRESS> bootpd[1244]: service time 0.000725 seconds 

但设备永远不会收到IP地址。

我错过了一个选项,它需要发送地址?

那么经过我几个变化,我有它的工作,我会尽力记住我做了什么来纠正它:

首先,我没有注意到在启动输出中出现的其他错误:

 subnets: create failed, 'net_range' start not within subnet 

这里的问题是,掩码为255.255.255.0net_address应该以.0结尾:

 <key>name</key> <string>192.168.1</string> <key>net_address</key> <string>192.168.1.0</string> <key>net_mask</key> <string>255.255.255.0</string> <key>net_range</key> <array> <string>192.168.1.2</string> <string>192.168.1.254</string> </array> 

您的服务器地址仍然是192.168.1.1 < – 您可能需要手动设置

其次, dhcp_option_150不能被bootpd理解为使用dhcp_option_66 (66不是150之前的67,谁会想到。

我现在发现的最后一个缺点是:

 <key>dhcp_enabled</key> <true/> 

应该:

 <key>dhcp_enabled</key> <array> <string>en0</string> </array> 

用接口作为一个数组的string使用; 尽pipe在实践中似乎在启动参数中也需要指定-i en0 。 这是在bootps.plist/System/Library/LaunchDaemons/bootps.plist中:

 <key>ProgramArguments</key> <array> <string>/usr/libexec/bootpd</string> <string>-i</string> <string>en0</string> </array> 

如果您有任何其他麻烦,我会build议使用参数手动运行bootpd-dv这使得它运行前景( -d )和详细( -v )。

希望这可以帮助任何人努力解决这个问题!