Как подтвердить получение пакета приложением - PullRequest
3 голосов
/ 10 сентября 2011

Мои сомнения довольно странные ..

На моем сервере Linux приложение DHCP-сервера ожидает на порту 547 сообщений от клиента dhcp.

Несмотря на то, что я вижу сообщения от клиента dhcp на wireshark (работающем на моем сервере Linux) ... сервер dhcp не отвечает.

Есть ли в любом случае подтверждение того, что пакет фактически обрабатывается сервером dhcp или помещается между ними через стек ip Linux?

Сервер DHCP является закрытым кодом, поэтому я не могу изменить его, чтобы добавить дополнительные журналы или проверить в функции recv.

Просто рассмотрите его как общий вопрос, основанный на сокетах, а не на конкретном DHCP. Меня интересует, как мы можем узнать из статистики или другого материала, что пакет был получен в соответствующих буферах сокетов.

Ответы [ 2 ]

0 голосов
/ 10 сентября 2011

Если вы запустили strace на dhcp-сервере, и он ничего не возвращает из select, скорее всего, он НЕ получает фрейм.Несколько вещей для проверки

  • Вы уверены, что ваш клиент отправляет запросы IPv6 DHCP вместо IPv4 (порт 67)?
  • Убедитесь, что никакой другой процесс не прослушивает порт 547 насервер.

Перепроверьте параметры командной строки strace и включите отладку и многословность.Еще одна вещь, которую нужно знать при использовании strace, это следовать за вилками ... -Ff

Надеюсь, это поможет

0 голосов
/ 10 сентября 2011

Вы можете сделать это, создав DHCP-сервер с символами отладки - возможно, в вашем дистрибутиве уже есть готовый пакет * -dbg.Подключив к процессу отладчик, такой как gdb, вы можете перехватывать сообщения и отлаживать его, чтобы увидеть, в чем проблема.

Однако сначала я бы попытался использовать обычные возможности, а именно сообщения журнала.Вы уже пытались активировать запись отладки в демоне DHCP?

...