Я делаю POC DHCP relay.У меня есть настройки следующим образом.
DHCP-клиент (VX-Works) ----------- DHCP Relay ----------- DHCP-сервер (VXworks))
В этой настройке DHCP-клиент отправляет пакеты DICOVER, но агент ретрансляции не получал пакет.Я посмотрел код и обнаружил, что к сокету применяется фильтрация пакетов Беркли (BPF).DHCP Relay просто отбрасывал пакет и не направлял его на сервер.
Чтобы продвинуться дальше в моей отладке, я удалил фильтр BPF и часть проверки контрольной суммы из кода.
Теперь ретранслятор DHCP пересылает пакет, но пакет не тот, который ожидает DHCP-сервер.DHCP Relay корректно меняет пакет с широковещательного на одноадресный.Кадр, заголовок Ethernet, заголовок IP и заголовок UDP, полученные на стороне сервера, являются правильными (я проверил в журналах Wireshark), но поля параметров протокола начальной загрузки неверны.
Я также захватил Wiresharkлоги на стороне клиента.Клиент отправляет пакет DICOVER, как и ожидалось.
Если вам нужна дополнительная информация, пожалуйста, оставьте комментарий.
Действительно: ISC dhcrelay (4.3.1P1) на базе Linux (ядро 3.14)
Заранее спасибо.
Редактировать: Ниже приведен шестнадцатеричный дамп отдельного пакета, захваченного вСторона клиента DHCP.
ff ff ff ff ff ff 00 20 61 1e 9e 14 08 00 45 00
01 1a 4f fe 40 00 20 11 09 d6 00 00 00 00 ff ff
ff ff 00 44 00 43 01 06 fd 9b 01 01 06 00 00 ae
af 53 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 20 61 1e 9e 14 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 63 82 53 63 35 01 01 39 02 02
4e 37 04 0f 06 03 01 ff