O que é responsável por configurar o endereço de broadcast padrão?

2

O endereço de broadcast aparentemente está configurado incorretamente em algum dispositivo embarcado (antigo) Linux que eu configurei (mas que eu não possuo mais) porque não corresponde ao valor esperado dado o endereço IP e a máscara de rede (por exemplo, tem uma transmissão de 192.168.70.255 em vez de 192.168.71.255 para 192.168.70.243/255.255.254.0). Ele executa um kernel 2.4.31 com busybox 0.60.5. A configuração de rede é feita simplesmente com esse snippet de shell:

ifconfig eth0 $IPADDR netmask $NETMASK
if [ -n "$GATEWAY" ]; then
    route add default gw $GATEWAY
fi

Assim, o endereço de broadcast não é configurado explicitamente. A questão é: o que é responsável por esse mau comportamento? É o ifconfig do busybox que não configura o endereço de broadcast corretamente ou é o kernel que o configura mal?

Nota: é possível que nenhum deles seja responsável, mas alguma outra coisa atrapalha no processo de inicialização (e reconfigura-o mal), já que o dispositivo executa um software específico do usuário que eu não conheço. Eu continuarei com mais informações assim que as tiver.

    
por Raphaël Hertzog 08.06.2009 / 15:32

4 respostas

2

Iniciando investigações sobre o tópico que descobri com strace que alterar o endereço de difusão com ifconfig leva a uma chamada complementar ioctl() ( SIOCSIFBRDADDR - Definir InterFace BRoadcast ADDRess) que não aparece no rastreio normal quando você deixa de fora o parâmetro de broadcast. Então parece que ifconfig não lida com o endereço de broadcast no caso padrão e deixa isso para o kernel.

    
por 08.06.2009 / 16:33
0

Não é o kernel, eu apostaria.

Se você tem acesso shell à máquina, tente recursivamente grep em / etc para essa string:

  grep -R "192.168.70.255" * 

Isso deve dizer onde está a configuração que precisa ser alterada.

    
por 08.06.2009 / 16:09
0
Tendo realmente lido a questão desta vez, minha reação instintiva é que o problema estaria no BusyBox fazendo as suposições erradas ou possivelmente vivendo em algum universo paralelo onde o roteamento classful não desaparecia. Você não diz quantos anos o kernel ou o busybox é, mas você pode ser capaz de testar qual é a falha se você pode obter uma versão mais recente do busybox, uma cópia de ip ou strace na caixa. O ip ou o busybox mais recente permitir-lhe-ia definir o ip e a netmask com uma ferramenta com um bom comportamento conhecido. Se ainda estiver errado, provavelmente é o kernel. Se estiver certo, é o busybox. Com strace você pode ver o que o busybox syscalls está fazendo.

Se você não conseguir novos binários na caixa, não há muito mais que você possa fazer além de definir a transmissão com o valor correto.

    
por 08.06.2009 / 16:24
0

É possível que a transmissão seja gerada dinamicamente a partir do combo IP / Mask e que você tenha realmente inserido a netmask errada?

    
por 08.06.2009 / 16:50