Могу ли я иметь несколько DHCP-серверов в одной сети?

86

Это канонический вопрос о резервных серверах DHCP.

Можно ли иметь более одного DHCP-сервера в одной локальной сети? Каковы последствия этого?

  1. Что произойдет, если доступно более одного DHCP-сервера? Как мои клиенты знают, какой использовать?
  2. Как я могу иметь серверы DHCP, предоставляющие адреса более чем одной подсети \ сегменту сети?
  3. Как настроить несколько серверов DHCP для предоставления адресов для одной подсети.
Роб Моир
источник
1
Идея, стоящая за этим вопросом, состоит в том, чтобы дать окончательный ответ на все вопросы «Как я могу иметь более одного DHCP-сервера», которые сводят наших более постоянных пользователей с ума. Мы надеемся, что это станет одним из наших канонических ответов ( meta.serverfault.com/questions/1986/… )
Роб Моир
2
RTFM? tools.ietf.org/html/draft-ietf-dhc-failover-12#section-5.3 (и rfc 3074) уже определяют это поведение, и linux dhcpd реализует его manpages.ubuntu.com/manpages/precise/en/man5/ …
Dani_l
2
@Dani_l, возможно, вам следует перейти по ссылке «канонический вопрос» в вопросе, а также, возможно, просмотреть авторов ответов на мой вопрос здесь, прежде чем сказать мне, что мне нужна RTFM.
Роб Мойр
2
Я не говорю вам, чтобы прочитать руководство. Я просто указываю, что есть руководство. Вопрос канонический, но, если это применимо, я полагаю, что он должен включать ссылку на «официальные» процедуры, если таковые существуют. В этом случае IETF / RFC существует, и это настолько официально, насколько это возможно.
Dani_l

Ответы:

97

Я предполагаю базовые знания о том, что делает DHCP и как настроить ваш DHCP-сервер по вашему выбору в этом ответе, но прежде чем мы поговорим о нескольких DHCP-серверах в одной сети, давайте сначала кратко рассмотрим, как клиенты получают IP-адреса. от DHCP на самом базовом уровне.

DHCP в простой сети работает по принципу DORA.

  • Обнаружение - клиент передает сообщение в сегменте локальной сети, к которой он подключен, для обнаружения доступных серверов DHCP.

  • Предложение - правильно настроенный DHCP-сервер получает запрос от клиента и предлагает ему адрес из своего пула доступных адресов.

  • Запрос - клиент отвечает на предложение, запрашивая адрес, полученный в предложении.

  • Подтверждение - сервер подтверждает запрос, помечая адрес как используемый в его пуле адресов, и информирует клиента о том, как долго действует аренда адреса, и любую другую необходимую информацию.

Любое устройство в сегменте сети может быть сервером DHCP; это не обязательно должен быть маршрутизатор, контроллер домена или любое другое «специальное» устройство в сети.

Когда устройства в вашей сети сначала запрашивают IP-адрес или достигают конца их аренды (или вы заставляете их проверять, что их аренда все еще действительна), они просто передают запрос на DHCP-сервер и принимают предложение от первого DHCP-сервер для ответа . Это важно помнить, когда мы рассмотрим варианты для нескольких DHCP-серверов ниже.

Несколько DHCP-серверов PT 1: охват нескольких подсетей.

Если у вас есть несколько VLAN или сегментов физической сети, которые разделены на разные подсети, и вы хотите предоставить службу DHCP для устройств во всех этих подсетях, то есть два способа сделать это.

  1. Если коммутатор маршрутизатора / уровня 3, разделяющий их, может действовать как агент ретрансляции BOOTP / DHCP, то вы можете продолжать хранить все свои серверы DHCP в одной или двух центральных частях вашей сети и настроить свой сервер (ы) DHCP на поддержка нескольких диапазонов адресов. Для поддержки этого ваш маршрутизатор или коммутатор уровня 3 должен поддерживать спецификацию агента ретрансляции BOOTP, описанную в разделе 4 RFC 1542 .

  2. Если ваш маршрутизатор не поддерживает ретрансляторы RFC 1542 BOOTP, или если некоторые из ваших сегментов сети географически распределены по медленным каналам связи, вам потребуется разместить один или несколько серверов DHCP в каждой подсети. Этот «локальный» DHCP-сервер будет обслуживать только требования своего локального сегмента, и между ним и другими DHCP-серверами нет взаимодействия. Если это именно то, что вам нужно, вы можете просто настроить каждый DHCP-сервер как автономный сервер с подробной информацией о пуле адресов для своей подсети и не беспокоиться о других DHCP-серверах в других частях сети. Это самый простой пример наличия более одного DHCP-сервера в одной сети.

Несколько DHCP-серверов PT 2: DHCP-серверы, которые обслуживают один и тот же сегмент сети.

Когда большинство людей спрашивают о «нескольких DHCP-серверах в одной сети», они обычно спрашивают: они хотят, чтобы более одного DHCP-сервера выдавали клиентам одинаковый диапазон сетевых адресов либо для распределения нагрузки между несколькими серверами, либо для обеспечения избыточности, если один сервер отключен.

Это вполне возможно, хотя требует некоторого обдумывания и планирования.

С точки зрения «сетевого трафика» процесс DORA, описанный в начале этого ответа, объясняет, как более одного DHCP-сервера может присутствовать в сегменте сети; клиент просто передает запрос на обнаружение, и первым DHCP-сервером, ответившим на предложение, является «победитель».

С точки зрения сервера, каждый сервер будет иметь пул адресов, которые он может выдавать клиентам, известный своей областью адресов. DHCP-серверы, обслуживающие одну и ту же подсеть, не должны иметь единую «общую» область, а скорее они должны иметь «разделенную» область.

Другими словами, если у вас есть диапазон адресов DHCP для выдачи клиентам от 192.168.1.100 до 192.168.1.200, тогда оба сервера должны быть настроены для обслуживания отдельных частей этого диапазона, поэтому первый сервер может использовать части этой области из С 192.168.1.100 по 192.168.1.150, и второй сервер затем выдаст с 192.168.1.151 по 192.168.1.200.

Разделить область DHCP, показывая исключения

В последних реализациях Microsoft от DHCP есть мастер, позволяющий легко разделить область видимости, описанную в статье Technet, на которую, возможно, стоит взглянуть, даже если вы не используете реализацию Microsoft DHCP, поскольку она иллюстрирует принципы, о которых идет речь здесь довольно красиво, и этот ответ уже достаточно долго.

Разделение области - лучшая практика

Одна из лучших рекомендаций, о которых вы услышите, - это правило 80/20 для разделения области DHCP, что означает, что один сервер будет обслуживать 80% адресов в этой области, а другой - DHCP-сервер, который фактически находится «в резерве». будет обслуживать 20% адресов.

Идея разделения адресов 80/20 заключается в том, что 80% доступных адресов, как мы надеемся, должны быть достаточными для всех адресов, необходимых в подсети, и аренды DHCP обычно выдаются на несколько дней; поэтому, если ваш основной DHCP-сервер отключается в течение нескольких часов, маловероятно, что более 20% компьютеров в этой подсети будут вынуждены обновлять свои адреса во время простоя, что делает пул адресов в 20% достаточным.

Это все еще разумный совет, но он предполагает две вещи:

  1. То, что вы можете решить любую проблему с вашим «основным» DHCP-сервером достаточно быстро, чтобы избежать исчерпания небольшого пула адресов на вашем резервном DHCP-сервере.
  2. Что вас не интересует балансировка нагрузки.

В наши дни (как вы можете видеть из моих примеров) я предпочитаю разделение 50/50, что, я думаю, является более реалистичным ответом на вышеприведенные пункты.

При создании областей на серверах DHCP необходимо учитывать еще одну настройку: полная область действия для каждого сервера и исключение диапазона, заданного другим сервером DHCP. Это дает преимущество «самодокументирования» информации DHCP для полной подсети на каждом DHCP-сервере, что улучшит ясность для всех, кто пытается понять, что происходит, а также в случае, если один из ваших DHCP-серверов отключен для Через некоторое время вы можете временно перенастроить диапазон исключений на другом сервере, чтобы он мог уменьшить провисание.

Объединяя эти идеи

Наконец, стоит помнить, что вы можете объединить принципы, рассмотренные выше - вы можете разместить все свои DHCP-серверы в одной или нескольких VLAN «центрального сервера» и использовать ретрансляторы BOOTP на всех ваших маршрутизаторах для отправки всех DHCP-запросов из очень больших и сегментированных сеть к централизованной службе DHCP (что я и делаю, см. ниже). Или вы можете иметь DHCP-серверы, распределенные по вашей сети, с «основным» DHCP-сервером в локальной подсети и «резервным» DHCP-сервером в «соседнем» сегменте сети, предоставляющем небольшое количество адресов в качестве резервной копии - вы даже можете иметь два DHCP-сервера в своих сегментах сети, настроенные для обеспечения диапазона адресов 80/20 друг для друга. Наиболее разумный выбор будет зависеть от того, как ваши физические и логические сети отображаются друг на друга.

DHCP-серверы, обслуживающие разделенные области для нескольких подсетей

Роб Моир
источник
3
В случае разделения областей: имейте в виду, что резервирование DHCP должно быть установлено на обеих половинах. Поддерживать их синхронизацию может быть довольно сложно, если вам нужно делать частые обновления.
Тонни
4
Можете ли вы подробнее рассказать о методах, гарантирующих, что резервный DHCP-сервер не будет поражен, пока работает основной DHCP-сервер? Из того, что я могу прочитать, если есть равная вероятность получения ответа от любого сервера, резервный сервер статистически исчерпал бы адреса, как только общее количество аренды превысит вдвое размер резервного пула. Это, по-видимому, делает резервный сервер бесполезным для новых клиентов, когда основной сервер DHCP не работает ... верно?
Нильс Б.
3
@NielsB. если вы делаете что-то вроде 80/20, то вы можете установить задержку ответа резервного сервера ( blogs.technet.com/b/teamdhcp/archive/2009/01/22/… ). Я не беспокоюсь об этом, так как сам использую 50/50, но это сработает.
Роб Мойр
13

Я применил этот подход несколько лет назад для сетей малого и среднего размера (500 пользователей) со значительными преимуществами. DHCP перестал быть единой точкой отказа. Постоянно связывая MAC и IP-адреса, мы обеспечили, чтобы оба DHCP-сервера давали одинаковый ответ на каждый DHCP-запрос. Знание IP-адреса каждого сетевого актива также упростило администрирование сети, и DNS мог работать из одной и той же базы данных. Система использовала Internet Software Corporation BIND и DNS, и соответствующие сценарии можно загрузить по адресу https://web.archive.org/web/20121031051901/http://www.pearbright.com/index.php/download/25- dns-dhcp-download .

Альтернативой может быть использование истинного переключения ISC DHCPD: https://kb.isc.org/article/AA-00502/0/A-Basic-Guide-to-Configuring-DHCP-Failover.html

Питер Тэлбот
источник
2
ОП специально попросил дать пояснительный ответ на этот вопрос. Вы можете пересмотреть свой ответ, чтобы расширить его.
Брент Пабст
3
Несмотря на то, что этот ответ короткий, и я никогда не буду подробно останавливаться на каноническом наборе вопросов и ответов, я подумал, что он довольно хорош, поскольку в нем упоминается несколько иной метод избыточности DHCP.
Роб Мойр
1
@ DJ Pon3 Я согласен: я запускаю настройку, аналогичную вашей большой многосайтовой DHCP (но с меньшим количеством VLAN), и я использую тот же подход, что и Питер Тэлбот, для 3/4 из этих VLAN.
Тонни
1
Ссылка сейчас не работает :(
Сергей Власов