ISC dhcrelay не пересылает пакеты DISCOVER на сервер dhcp - PullRequest
0 голосов
/ 02 июня 2018

Я делаю 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

DHCP Discover packet (bootstrap protocol)

1 Ответ

0 голосов
/ 03 июня 2018

Фильтр BPF определен в common/bpf.c.Он проверяет, является ли пакет IP / UDP-пакетом с одним фрагментом (без фрагментации) и предназначен для порта 67, и отбрасывает его в противном случае.

Вы упомянули, что ваш пакет является IP / UDP-пакетом, но сделалВы уверены, что он не фрагментирован и имеет правильный порт?

...