Mac-Osx
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
通過路由器的 wifi 使用移動設備進行測試時,我得到:
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.0
,則net_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>
介面用作數組的字元串;儘管在實踐中似乎
-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>
如果您有任何其他問題,我建議您使用
bootpd
參數手動執行:-dv
這使其執行前台 (-d
) 和詳細 (-v
)。希望這可以幫助其他人解決這個問題!