Устранение ошибок маршрутизации DHCP: поле GIADDR равно нулю (Zero GIADDR)
- Широковещательные запросы
DHCPDISCOVERне доходят до удаленного централизованного DHCP-сервера через маршрутизатор. - Сервер регистрирует ошибка:
DHCPDISCOVER from MAC via eth0: cannot determine subnet (GIADDR is 0.0.0.0). - Клиенты за маршрутизируемым L3-интерфейсом не получают сетевые реквизиты.
- Пакеты отбрасываются маршрутизатором по правилу запрета широковещательного L3-трафика (Broadcast Drop).
1. Проверка поля GIADDR в дампе сетевого пакета
tcpdump -nvv -i eth0 "udp port 67" | grep -i "Gateway-IP"Если значение равно Gateway-IP: 0.0.0.0, пакет пришел через маршрутизатор без обработки агентом ретрансляции (DHCP Relay).
2. Настройка IP Helper-Address на L3-интерфейсе шлюза
Настройте адрес централизованного DHCP-сервера на SVI/Routed интерфейсе, к которому подключены клиенты:
conf t
interface Vlan20
description CLIENT_VLAN
ip address 10.20.0.1 255.255.255.0
ip helper-address 192.168.100.503. Проверка трансляции широковещательных пакетов в Unicast
show ip interface Vlan20 | include Helper
show ip dhcp relay information from-vlan 204. Проверка доступности DHCP-сервера с маршрутизатора
ping 192.168.100.50 source Vlan20 Частые вопросы (FAQ)
Для чего предназначено поле GIADDR в протоколе DHCP?
Поле GIADDR (Gateway IP Address) заполняется L3-агентом ретрансляции (Relay Agent). Оно указывает DHCP-серверу IP-адрес интерфейса шлюза, на основании которого сервер выбирает соответствующую подсеть и пул адресов.
Почему широковещательный DHCPDISCOVER не проходит через маршрутизатор без Relay?
Маршрутизаторы по умолчанию блокируют широковещательные пакеты (Destination IP 255.255.255.255, MAC FF:FF:FF:FF:FF:FF) для предотвращения широковещательных штормов между сетями.
Какие еще протоколы пересылает команда 'ip helper-address' по умолчанию на Cisco?
Помимо DHCP (порты 67, 68), ip helper-address транслирует TFTP (порт 69), DNS (порт 53), Time (порт 37), TACACS (порт 49) и NetBIOS (порты 137, 138).
Как ограничить пересылку только DHCP трафика через helper-address?
Используйте глобальные директивы: 'no ip forward-protocol udp 69', 'no ip forward-protocol udp 137' и оставьте активной только пересылку bootps (порт 67).