Широковещательный адрес явно неправильно настроен на некотором (старом) встроенном устройстве Linux, которое я установил (но которым больше не владею), потому что он не соответствует ожидаемому значению с учетом IP-адреса и сетевой маски (например, у него есть широковещательная передача 192.168.70.255 вместо 192.168.71.255 для 192.168.70.243/255.255.254.0). Он запускает ядро 2.4.31 с busybox 0.60.5. Конфигурация сети просто выполняется с помощью этого фрагмента оболочки:
ifconfig eth0 $IPADDR netmask $NETMASK
if [ -n "$GATEWAY" ]; then
route add default gw $GATEWAY
fi
Таким образом, широковещательный адрес явно не настроен. Возникает вопрос: что является причиной такого плохого поведения? Это ifconfig busybox, который неправильно устанавливает широковещательный адрес, или ядро настроило его неправильно?
Примечание: возможно, что никто из них не несет ответственности, но что-то еще мешает процессу загрузки (и плохо его перенастраивает), поскольку на устройстве запускается пользовательское программное обеспечение, о котором я не знаю. Я свяжусь с дополнительной информацией, когда они будут у меня.
Начав исследования по теме, которую я обнаружил, strace
что изменение широковещательного адреса с ifconfig
приводит к дополнительному ioctl()
вызов (SIOCSIFBRDADDR
- Установите InterFace BRoadcast ADDRess), который не отображается в обычной трассировке, если вы не учитываете параметр широковещания. Таким образом, похоже, что ifconfig не обрабатывает широковещательный адрес в случае по умолчанию и оставляет это на усмотрение ядра.
Фактически прочитав вопрос на этот раз, моя интуиция такова, что проблема заключается в том, что BusyBox делает неправильные предположения или, возможно, живет в какой-то параллельной вселенной, где классовая маршрутизация не исчезла. Вы не говорите, сколько лет ядру или busybox, но вы можете проверить, что виновато, если вы можете получить более свежую версию busybox, копию ip или strace на коробке. ip или более новый busybox позволит вам установить ip и сетевую маску с помощью инструмента с заведомо хорошим поведением. Если все еще не так, вероятно, дело в ядре. Если так, то это занято. С помощью strace вы могли видеть, что делает busybox.
Если вы не можете получить в коробке какие-либо новые двоичные файлы, то вы не можете ничего сделать, кроме как самостоятельно установить правильное значение для широковещательной передачи.
Готов поспорить, дело не в ядре.
Если у вас есть доступ к машине через оболочку, попробуйте рекурсивно выполнить grep в / etc для этой строки:
grep -R "192.168.70.255" *
Это должно сказать вам, где находится конфигурация, которую нужно изменить.
Возможно ли, что трансляция динамически генерируется из комбинации IP / Mask, и что вы на самом деле неправильно ввели сетевую маску?