Адрес выдается правильный.
Собрал стенд. dhcp <-> c4948 <-> 9-09-09-09 <-> 9-09-09-09.2
На коммутаторах настраивал зеркалирование портов, дабы проанализировать трафик. В результате было выявлено, что DHCPOFFER от dhcp-сервера теряются на пути к 9-09-09-09.2, а именно на аплинк-порту (который смотрит в 9-09-09-09.2) коммутатора 9-09-09-09. на коммутаторе 9-09-09-09 тоже включен ip dhcp snooping. Если же включить дебаг на коммутаторе 9-09-09-09, то можно увидеть, что DHCPOFFER считается как локальный пакет для коммутатора 9-09-09-09, поэтому отбрасывается и не пересылается дальше к коммутатору 9-09-09-09.2
Логи с коммутатора 9-09-09-09:
*Mar 19 03:47:57.127: DHCP_SNOOPING: received new DHCP packet from input interface (FastEthernet0/24)
*Mar 19 03:47:57.127: DHCP_SNOOPING: binary dump of option 82, length: 26 data:
0x52 0x18 0x1 0x6 0x0 0x4 0x0 0xBE 0x1 0xC 0x2 0xE 0x1 0xC 0x39 0x2D 0x30 0x39 0x2D 0x30 0x39 0x2D 0x30 0x39 0x2E 0x32
*Mar 19 03:47:57.135: DHCP_SNOOPING: binary dump of extracted circuit id, length: 8 data:
0x1 0x6 0x0 0x4 0x0 0xBE 0x1 0xC
*Mar 19 03:47:57.135: DHCP_SNOOPING: binary dump of extracted remote id, length: 16 data:
0x2 0xE 0x1 0xC 0x39 0x2D 0x30 0x39 0x2D 0x30 0x39 0x2D 0x30 0x39 0x2E 0x32
*Mar 19 03:47:57.135: DHCP_SNOOPING_SW: opt82 data indicates local packet
*Mar 19 03:47:57.135: DHCP_SNOOPING: process new DHCP packet, message type: DHCPOFFER, input interface: Fa0/24, MAC da: ffff.ffff.ffff, MAC sa: 0021.1b12.b9c3, IP da: 255.255.255.255, IP sa: 192.168.20.1, DHCP ciaddr: 0.0.0.0, DHCP yiaddr: 192.168.40.3, DHCP siaddr: 0.0.0.0, DHCP giaddr: 192.168.20.1, DHCP chaddr: 0006.4f04.109f
*Mar 19 03:47:57.135: DHCP_SNOOPING: remove relay information option.
Если же отключить снупинг на 9-09-09-09 или изменить remote-id на коммутаторе 9-09-09-09.2, то адрес абоненты получают.
Если изменить remote-id коммутатора 9-09-09-09.2, то в логах на 9-09-09-09.2 можно увидеть строку: DHCP_SNOOPING_SW: opt82 data indicates not a local packet
То есть 9-09-09-09 считает, что DHCPOFFER пришедший с 24 порта не локальный (не предназначен ему) и пересылет его дальше в 23 порт (на коммутатор 9-09-09-09.2)
Как я полагаю, cisco 9-09-09-09, получив пакет от dhcp, посимвольно пробегается по remote-id пришедшего пакета и так же посимвольно сверяет со своим remote-id. Достигнув конца remote-id пришедшего пакета, (и в случае, если remote-id совпали), cisco прекращает сверку (не смотря на то, что remote-id пришедшего пакета, осталось еще два символа ".2") и считает, что пакет предназначается ему.