Самый простой ответ - первым пришел, первым обслужен.
Если у вас было несколько VLAN, и 10.10.10.0/24 находились в другой VLAN, отличной от 10.10.20.0/24 - широковещательная передача не пересекает VLAN.
Если DHCP-сервер находился в отдельной VLAN для клиентов, iphelper на интерфейсе маршрутизации между vlans направил бы широковещательную рассылку в правильное местоположение.
В вашем сценарии, где у вас есть две отдельные сети в одной VLAN (или их отсутствие), обслуживающие разные подсети - это гонка.
DHCP обслуживает с использованием следующих транзакций:
- Обнаружение DHCP (DHCPDISCOVER) - широковещательная рассылка клиента - «Есть ли там DHCP-сервер?»
- Предложение DHCP (DHCPOFFER) - сервер клиенту - «Да, я здесь и доступен!»
- Запрос DHCP (DHCPREQUEST) - клиент-сервер "Круто, можно мне адрес, пожалуйста?"
- Подтверждение DHCP (DHCPACK) - сервер-клиент «Конечно, вот IP-адрес, маска, шлюз, некоторые DNS / WINS-серверы, сервер времени и все остальное, настроенное для вашей области»
Все это происходит на UDP-портах 67 для сервера и 68 для клиента.
Как только шаг 2 будет достигнут - клиент перестанет «слушать» ответы других DHCP-серверов - он счастлив иметь дело с первым сервером, чтобы уделить ему некоторое внимание.
В качестве примечания: на самом деле существует хорошо известная серия атак DoS (отказ в обслуживании), которые злоупотребляют этим правом. Злоумышленник подключает устройство, которое отвечает и отправляет пакеты DHCPOFFER, а затем не отправляет DHCPACK при запросе ... снова и снова. Существует также еще одна DoS-атака, когда «поддельные» DHCP-серверы предлагают адреса, которые нельзя маршрутизировать или которые конфликтуют с другими IP-адресами, которые прослушиваются для связи с сетями.