Добрый день!
Disclaimer! Думаю моя проблема подходит под этот топик, писал сначала как новую тему, но перед отправкой в голову пришла мысль поискать по форуму, и нашел эту тему. Скорее всего проблема аналогичная, а мне есть что добавить поэтому ниже мое маленькое расследование…Мы приобрели коммутатор D-Link DGS-3120-24SC. Данное оборудование используется у нас на уровне агрегации. Необходимо что бы на нем была настроена функция DHCP Relay которая бы раздавала IP адреса для клиентских устройств, подключенных в коммутаторы доступа (DES 1228ME), которые уже в свою очередь включаются в DGS-3120. В процессе настройки столкнулись с одной проблемой и одной особенностью, но прежде всего о железе:
Код:
Command: show switch
Device Type : DGS-3120-24SC Gigabit Ethernet Switch
MAC Address : 84-C9-B2-99-10-C0
IP Address : 192.168.128.226 (Manual)
Boot PROM Version : Build 2.00.003
Firmware Version : Build 2.50.B029
Hardware Version : A1
Firmware Type : EI
Serial Number : R34N1B9000392
Итак, проблема - Не все устройства могут получить IP адрес.
Существует следующая конфигурация (лишнее вырезано, но если нужно - выложу):
Код:
# DHCP_LOCAL_RELAY
disable dhcp_local_relay
# DHCP_RELAY
enable dhcp_relay
config dhcp_relay hops 4 time 0
config dhcp_relay option_82 state disable
config dhcp_relay option_82 check disable
config dhcp_relay option_82 policy replace
config dhcp_relay option_82 remote_id user_define 84-C9-B2-99-10-C0
config dhcp_relay option_60 state disable
config dhcp_relay option_61 state disable
config dhcp_relay option_60 default mode drop
config dhcp_relay option_61 default drop
config dhcp_relay add vlanid 82 192.168.128.5
ПК с windows 7 при такой конфигурации получают IP адреса нормально, однако у нас так же используются голосовые шлюзы Cisco SPA 112, вот с ними и обнаружилась проблема. Был проведен следующий эксперимент: порт DGS-3120 был настроен как Untagged Port в VLAN 82, настроен DHCP Relay VLAN для данного VLAN 82 и в этот порт поочередно включался ПК с Win7 и SPA 112. Работа протокола DHCP фиксировалась анализатором траффика (Wireshark) посредством настройки зеркалирования порта (Port Mirror), а в случае с win7 анализатор траффика работал еще и на клиентской машине. В итоге получаем следующий результат:
Работа протокола DHCP с подключенным ПК win7:

Работа протокола DHCP с подключенным SPA112:

Для достоверности тот же самый аппарат (MAC c4:0a:cb:bc:06:ac) был подключен к DES 1228ME с настроенной функцией DHCP Relay и был получен следующий результат:

Из анализа дампов было выявлено что в формате пакетов Bootstarp протокола за исключением идентификаторов транзакций и адресов отличий нет, а вот в L2 заголовке я обнаружил одну аномалию, которая теоретически может вызывать подобную проблему. Дело в том что DGS-3120 отправляет пакет DHCP Offer с МАС адресом источника 00:00:00:00:00:00 а не своим реальным 84:c9:b2:99:10:c0 и по всей видимости win7 это спокойно переваривает а вот SPA112 и возможно другие устройства, это ставит в ступор. Если это так, то сложно сказать кто в данной ситуации не прав, DGS-3120 который не анонсирует свой реальный МАС адрес или SPA112 который в ответ не отправляет Request. В RFC по поводу того с какого L2 адреса должен приходить Offer прямых указаний я не нашел, но можно убедиться что в ситуации когда другое оборудование (DES 1228ME) отправляет Offer с родным адресом (5c:d9:98:0b:50:17) проблем не возникает. В любом случае, насколько я понимаю , нет никаких ограничений для того что бы оборудование-отправитель Offer-ов отсылали пакеты со своего реального MAC-адреса, по крайней мере большинство знакомого мне оборудования поступает именно так.
Учитывая то что существует еще и «особенность», о ней ниже, думаю что можно считать что DHCP Relay в данном оборудовании с прошивкой версии 2.50.B029 работает по всей видимости некорректно.
В ходе тестирования мы включались сетевым анализатором в порт настроенный как Tagged Port для Vlan 82, 714, 750 и в момент когда SPA112 пытался получить адрес на этот порт прилетал следующий трафик:



Из этого видно что при настроенной функции DHCP Relay VLAN для vlan 82, DGS-3120 рассылает ответы во все настроенные vlan-ы, чего, исходя из смысла и назначения данного функционала, быть не должно. Примечательно то, что в ответе в vlan 750 (как раз он является управляющим для группы оборудования, и в нем находится настоящий DHCP сервер) коммутатор анонсирует свой настоящий MAC адрес 84:c9:b2:99:10:c0.
Прошу вас разобраться в данной проблеме и по возможности решить ее. Старался изложить как можно подробнее, но если что упустил – спрашивайте. Дампы есть тут -
https://dl.dropbox.com/u/19363447/dlink/3120relaydump.zip.