OS X bootpd como servidor dhcp não distribuindo endereços IP

2

Estou experimentando o PXE lan-boot no meu Mac OS 10.6;

Depois de alguns problemas com a solução prolongada, cheguei ao ponto em que o LaunchD está executando bootpd com as seguintes opções:

<?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>

A configuração física é:

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

Ao testar com um dispositivo móvel através do Wi-Fi do roteador, recebo:

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

mas o dispositivo nunca recebe um endereço IP.

Existe uma opção que está faltando para fornecer endereços?

    
por Hawken 20.04.2012 / 05:50

1 resposta

2

Bem, depois de algumas alterações eu tenho que trabalhar, vou tentar lembrar o que fiz para corrigi-lo:

Em primeiro lugar, não notei o outro erro que estava aparecendo na saída de inicialização:

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

O problema aqui é que, com uma máscara de 255.255.255.0 , o net_address deve terminar em .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>

Com o endereço do servidor ainda 192.168.1.1 < - pode ser necessário definir isso manualmente

Em segundo lugar, dhcp_option_150 não é compreendido por bootpd use dhcp_option_66 (66 não 150 precede 67, quem teria pensado.

A falha final que posso encontrar neste ponto é que:

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

deve ser:

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

com a interface para usar como uma string de uma matriz; embora, na prática, pareça que especificar -i en0 também seja necessário nos argumentos de lançamento. Isso está em bootps.plist at /System/Library/LaunchDaemons/bootps.plist as:

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

Se você tiver algum outro problema, eu recomendaria executar bootpd manualmente com os argumentos: -dv isso faz com que ele seja executado em primeiro plano ( -d ) e detalhado ( -v ).

Espero que isso ajude qualquer outra pessoa a superar esse problema!

    
por 21.04.2012 / 04:16