forum.bitel.ru
http://forum.bitel.ru/

serverIdentifier
http://forum.bitel.ru/viewtopic.php?f=44&t=9959
Страница 1 из 1

Автор:  alf_from_melmok [ 24 ноя 2014, 17:36 ]
Заголовок сообщения:  serverIdentifier

Добрый день!

Подскажите пожалуйста, не могу разобраться, как-то правильно работать с DHCP опцией serverIdentifier?

Схема: SE100 в режиме DHCP прокси, авторизация IPOE. Необходимо выдавать клиентам "серые" и "белые" IP адреса в зависимости от настроек категории в сервисе привязанном к договору. И при этом в зависимости от пула, как я понимаю, нужно правильно выставлять опцию serverIdentifier, и также смотреть что идет в Relay IP и в SRC IP UDP пакета.


Работаем на 5.2

Автор:  Amir [ 24 ноя 2014, 20:10 ]
Заголовок сообщения:  Re: serverIdentifier

serverIdentifier вроде бы предназначен только для идентификации клиентом DHCP-сервера.
Т.е. клиент шлет DISCOVER - несколько DHCP-серверов шлют ему OFFER.
Клиент выбирает одного и шлет REQUEST с serverIdentifier выбранного DHCP-сервера (этот REQUEST может прийти к обоим DHCP-серверам, а обработать его должен только сервер с указанным serverIdentifier).

Автор:  alf_from_melmok [ 25 ноя 2014, 13:54 ]
Заголовок сообщения:  Re: serverIdentifier

Спасибо большое за разъяснение. Я видимо не до конца понял логику работы. Где-то читал что serverIdentifier важен при RENEW state из которого некоторые DHCP-клиенты берут целевой IP-адрес DHCP-сервера для запроса на продление лизинга, который шлют юникастом. Вследствии при схеме с релеем (а в случае CLIPS на SE100 еще и проксирование DHCP запроса имеется) могут возникать проблемы.

Автор:  Amir [ 25 ноя 2014, 15:29 ]
Заголовок сообщения:  Re: serverIdentifier

Да, для этого по RFC serverIdentifier тоже используется.
Причем у наших клиентов по разному, видимо зависит от коммутаторов и схемы: у кого-то вроде бы RENEW вообще игнорируется, у кого-то как-то обрабатывается так, что до биллинга доходит с option82, у кого-то как-будто преобразуется в RELAY-запрос от коммутатора/циски/SE, у кого-то RENEW запросы обрабатывает биллинг.
Т.е., например, у кого-то вроде бы нормально работало только при serverIdentifier=0.0.0.0, у кого-то - только при serverIdentifier=адрес InetAccess.

У SE вроде есть режим, когда он сам делает leaseTime маленьким, обрабатывая частые RENEW сам (чтобы была возможность побыстрее отнять адрес при сбросе сессии), т.е. вышестоящему DHCP-серверу запросы приходят реже, чем на самом деле идет от клиента.

Автор:  alf_from_melmok [ 25 ноя 2014, 17:39 ]
Заголовок сообщения:  Re: serverIdentifier

Вот у меня как раз такая ситуация сейчас - SE100 взял на себя ответ клиенту и продлил ему адрес (юникастом), а вот на InetAccess DHCP Helper CLIPS он не послал ничего. В результате InetDhcpHelperProcessor - Remove connection remove делает.

Пока не нашел как в SE100 этим манипулировать. А как билингу правильно указать, что там SE100 хлопочет за него в части продления лиз?

Автор:  Amir [ 25 ноя 2014, 17:43 ]
Заголовок сообщения:  Re: serverIdentifier

В случае с InetDhcpHelperProcessor - DHCP там как-бы вспомогательный. RADIUS-сессия есть - отвечает на запросы по DHCP (выдавая тот адрес, что в сессии), нет - не отвечает.
Т.е. вроде как в этом случае биллингу все рано, приходил DHCP-пакет или нет. Сессию он ведет по RADIUS.

Автор:  alf_from_melmok [ 25 ноя 2014, 18:32 ]
Заголовок сообщения:  Re: serverIdentifier

Сорри, ошибся, проблема оказалась не в этом.

SE100 присылает Аккаунтинг-СТОП пакет с формулировкой

Код:
  Session-Error-Msg=DHCP IP-host mismatch
  Session-Error-Code=196


Собственно проблема где-то в DHCP диалоге. Внимательно еще раз посмотрел на дамп и понял, что сам DHCP клиент по какой-то причине видимо игнорирует DHCP ACK от SE100, поскольку пытается запросить адрес до последнего и в финале дает широковещательно новый запрос на выдачу адреса, после чего SE100 ему говорит NACK и оправляет на биллинг Аккаунтинг-СТОП по установленной сессии.

Пример DHCP ACK который игнорирует клиент. Сам клиент это DLINK DIR-615.

Код:

  TIME: 2014-11-25 14:20:36.581
    IP: 10.1.0.1 (0:30:12:17:f:4c) > 10.1.0.95 (d8:fe:e3:c8:cd:f2)
    OP: 2 (BOOTPREPLY)
 HTYPE: 1 (Ethernet)
  HLEN: 6
  HOPS: 1
   XID: 29b47563
  SECS: 0
 FLAGS: 0
CIADDR: 10.1.0.95
YIADDR: 10.1.0.95
SIADDR: 0.0.0.0
GIADDR: 0.0.0.0
CHADDR: d8:fe:e3:c8:cd:f2:00:00:00:00:00:00:00:00:00:00
 SNAME: .
 FNAME: .
OPTION:  53 (  1) DHCP message type         5 (DHCPACK)
OPTION:  54 (  4) Server identifier         10.1.0.1
OPTION:  51 (  4) IP address leasetime      900 (15m)
OPTION:   1 (  4) Subnet mask               255.255.252.0
OPTION:   3 (  4) Routers                   10.1.0.1
OPTION:   6 (  8) DNS server                1.1.1.1,2.2.2.2


Автор:  Amir [ 25 ноя 2014, 18:38 ]
Заголовок сообщения:  Re: serverIdentifier

А OFFER на который роутер послал REQUEST ничем не отличается от ACK?
Биллинг здесь участвует? Если да, что в его логах c DHCP диалогом?

Автор:  alf_from_melmok [ 25 ноя 2014, 21:56 ]
Заголовок сообщения:  Re: serverIdentifier

Отличались они тем, что не было ServerIdentifier, как только DHCP Helper стал отдавать ServerIdentifier=0.0.0.0, то продление аренды заработало корректно. Не заметил как в процессе отладки у меня в конфиге ServerIdentifier оказался закомментирован.

Страница 1 из 1 Часовой пояс: UTC + 5 часов [ Летнее время ]
Powered by phpBB® Forum Software © phpBB Group
http://www.phpbb.com/