Mac-Osx

OS X bootpd 作為 dhcp 伺服器不提供 IP 地址

  • December 15, 2019

我正在我的 Mac OS 10.6 上試驗 PXE lan-boot;

經過長時間的故障排除後,我發現 LaunchDbootpd使用以下選項可以很好地執行:

<?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,誰會想到。

在這一點上我能找到的最後一個缺陷是:

&lt;key&gt;dhcp_enabled&lt;/key&gt;
&lt;true/&gt;

應該:

&lt;key&gt;dhcp_enabled&lt;/key&gt;
&lt;array&gt;
   &lt;string&gt;en0&lt;/string&gt;
&lt;/array&gt;

介面用作數組的字元串;儘管在實踐中似乎-i en0在啟動參數中也需要指定。這是bootps.plist/System/Library/LaunchDaemons/bootps.plist

&lt;key&gt;ProgramArguments&lt;/key&gt;
&lt;array&gt;
   &lt;string&gt;/usr/libexec/bootpd&lt;/string&gt;
   &lt;string&gt;-i&lt;/string&gt;
   &lt;string&gt;en0&lt;/string&gt;
&lt;/array&gt;

如果您有任何其他問題,我建議您使用bootpd參數手動執行:-dv這使其執行前台 ( -d) 和詳細 ( -v)。

希望這可以幫助其他人解決這個問題!

引用自:https://serverfault.com/questions/381404