Отключенный dhcp-сервер на маршрутизаторе не позволяет клиентам получить адрес
У меня странная проблема в моей локальной сети, которая не позволяет некоторым клиентам иногда получать IP-адрес от реального dhcp-сервера (xxx3). Dhcp-сервер - это виртуальная машина CentOS, на которой запущен isc-dhcp-сервер для ipv4. Маршрутизатор от моего провайдера, Sagemcom, имеет отключенный dhcp-сервер (xxx1).
Однако, когда клиент подключен напрямую к маршрутизатору Sagemcom, иногда я вижу ответ, подобный этому:
The server offers address x.x.x.181 from x.x.x.3
NACK: Requested address not available from x.x.x.1
(не совсем так...) Итак, почему маршрутизатор выдает NACK, хотя он должен быть выключен? Какую роль здесь играет директива `authoritive 'из dhcpd.conf?
Итак, мой самый важный вопрос, как я могу устранить это?
Если я бегу nmap --script broadcast-dhcp-discover
когда мой собственный dhcp-сервер неактивен, я не получаю ответ.
2 ответа
Какую роль здесь играет директива `authoritive 'из dhcpd.conf?
Из руководства dhcpd:
DHCP-сервер обычно предполагает, что информация о конфигурации данного сегмента сети неизвестна и не является достоверной. Это связано с тем, что, если наивный пользователь устанавливает DHCP-сервер, не полностью понимая, как его настроить, он не отправляет ложные сообщения DHCPNAK клиентам, которые получили адреса от законного DHCP-сервера в сети.
Это означает, что dhcp-сервер отправит NACK, если получит запрос на адрес, о котором он не знает. В вашем случае это другой dhcp-сервер, который отправляет NACK, поэтому "авторизация" на вашем сервере в этом случае не имеет значения, но это будет, если клиент запросит адрес, принадлежащий другому dhcp-серверу.
Вы можете запустить tcpdump с опцией -e, чтобы увидеть, какой хост Ethernet отправляет NACK. Это может быть либо маршрутизатор, либо прокси-сервер, настроенный для пересылки на маршрутизатор. В зависимости от конфигурации потенциального прокси-сервера, он может ответить NACK, если не получит ответ от dhcp-сервера.
Возможно, у вас в сети настроен хелпер dhcp relay/dhcp, который указывает на "отключенный" dhcp сервер. Запрос будет содержать IP-адрес ретрансляционного устройства, и если он не совпадает с подсетью dhcp, будет выдан NACK. Подробности можно узнать, выполнив некоторую трассировку пакетов.
Пожалуйста, смотрите здесь: https://documentation.meraki.com/zGeneral_Administration/Tools_and_Troubleshooting/DHCP_NAK устранение неисправностей/ DHCP_NAK
DHCP NAK является отрицательным подтверждением от сервера DHCP. Сервер отправит DHCP NAK в следующих случаях:
Запрашиваемый адрес может быть из той же подсети, но не из пула адресов сервера. Это может быть сценарий отработки отказа в
какие 2 DHCP-сервера обслуживают одну подсеть, так что когда один
выходит из строя, другой не должен НАК клиентам, которые получили IP от
первый сервер.Запрашиваемый адрес находится в другой подсети.
Запрашиваемый адрес уже используется другим клиентом.
На другие ваши вопросы:
Итак, почему маршрутизатор дает NACK, в то время как он должен быть выключен? Какую роль здесь играет директива `authoritive 'из dhcpd.conf?
Кажется, сервер dhcp действительно не выключен.
Цитата из https://linux.die.net/man/5/dhcpd.conf:
Авторитетное утверждение
авторитетный;
не авторитетный;
DHCP-сервер обычно предполагает, что информация о конфигурации данного сегмента сети неизвестна и не является достоверной. Это связано с тем, что, если наивный пользователь устанавливает DHCP-сервер, не полностью понимая, как его настроить, он не отправляет ложные сообщения DHCPNAK клиентам, которые получили адреса от законного DHCP-сервера в сети.
Сетевые администраторы, устанавливающие авторитетные DHCP-серверы для своих сетей, должны всегда писать авторитетные; вверху их файла конфигурации, чтобы указать, что DHCP-сервер должен отправлять сообщения DHCPNAK неправильно настроенным клиентам. Если этого не сделать, клиенты не смогут получить правильный IP-адрес после смены подсетей, пока не истечет срок их старой аренды, что может занять довольно много времени.
Обычно написание авторитетное; на верхнем уровне файла должно быть достаточно. Однако, если сервер DHCP должен быть настроен так, чтобы он знал о некоторых сетях, для которых он является авторитетным, и о некоторых сетях, для которых он не является, может быть более целесообразным объявить полномочия для каждого сегмента сети.
Обратите внимание, что наиболее конкретной областью, для которой концепция полномочий имеет какой-либо смысл, является физический сегмент сети - либо оператор общей сети, либо оператор подсети, который не содержится в операторе общей сети. Не имеет смысла указывать, что сервер является доверенным для некоторых подсетей в общей сети, но не является полномочным для других, и не имеет смысла указывать, что сервер является доверенным для одних объявлений хоста, а не для других.
Итак, мой самый важный вопрос, как я могу устранить это?
Ответ - трассировка пакетов. https://www-01.ibm.com/support/docview.wss?uid=swg21175744