Назад | Перейти на главную страницу

Два DHCP-сервера, дающие статические адреса в сети

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

Один из серверов в настоящее время имеет DHCP-сервер, который дает статические IP-адреса. Он предоставляет адреса только пользователям с разрешенным MAC-адресом, и каждый пользователь имеет фиксированный IP-адрес. Никаких динамических IP-адресов нет.

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

Меня больше всего интересует общая концепция: может ли DHCP как протокол поддерживать два DHCP-сервера, предоставляющих одинаковые статические IP-адреса? Запутываются ли клиенты, если они получают ответ от двух серверов с одинаковым IP-адресом аренды? Вот почему я не указал, какой DHCP-сервер использую. Я специально не запрашиваю инструкции по настройке хоста / сервера.

Первоначально я задавал это в Сетевой инженерии, но у них, похоже, есть привычка закрывать совершенно корректные вопросы, связанные с сетевой инженерией, не связанные с конфигурацией хоста / сервера, используя какой-то неизвестный случайный алгоритм, говоря, что вопрос касается конфигурации хоста / сервера (а это не t; это о протоколе), и вопрос касается протокола выше уровня 4 OSI (что так и есть, но опять же, у них есть множество вопросов DHCP, и не все они закрываются).

Я сам это делаю. Я использую две виртуальные машины под управлением FreeBSD. Каждая виртуальная машина запускает порт FreeBSD DHCP-сервера ISC (https://www.isc.org/downloads/dhcp/). Это программное обеспечение может иметь два (и не более) сервера в паре с высокой доступностью. Каждый общается с другим. Если они оба работают, они обеспечивают балансировку нагрузки. Если работает только один, он это понимает и немедленно берет на себя все услуги.

Я сам должен синхронизировать некоторые конфигурации между серверами. Для этого я использую команду rsync и аккуратно помещаю некоторые конфигурации (например, статические сопоставления IP-адресов, динамические пулы DHCP и т. Д.) В один набор файлов, помещая при этом все, что относится к каждому хосту, в другой файл, который я не использую rsync. .

Каждый раз, когда мне нужно внести изменения, я просто редактирую файлы на одном сервере, перезапускаю процесс DHCP-сервера, смотрю журналы, пока не буду уверен, что он работает правильно (5–120 секунд), а затем повторно синхронизирую файлы. Я использую ключ SSH в корневом каталоге на другом сервере, чтобы немного упростить rsync, но в этом нет необходимости. Затем я перехожу по SSH на другой хост и перезапускаю его процесс DHCP-сервера, смотрю журналы и так далее.

Благодаря написанию документации с контрольным списком весь этот процесс может занять у меня всего 3-5 минут.

Наконец, что, пожалуй, проще всего упустить из виду, у меня есть дополнительная команда ip helper-address в главном коммутаторе моей сети. Первая команда указывает на IP-адрес первого DHCP-сервера, а вторая команда указывает на IP-адрес второго DHCP-сервера. Отдельные сетевые клиенты получат ответ от одного или другого DHCP-сервера, поскольку оба сервера находятся в контакте друг с другом и координируют свои действия между собой.

Если вам интересно, я могу опубликовать более подробную информацию и примеры. Также есть неплохая документация от самих ISC. На самом деле, большие «уловки» - это синхронизация конфигурации между двумя экземплярами ISC-DHCP и использование двух команд пересылки DHCP в вашей топологии, например "ip helper-address" в продуктах Cisco для iOS.

Пара вещей:

Сказать, что эти зарезервированные IP-адреса не назначаются динамически, неверно. Они назначаются динамически. Дело в том, что это зарезервированные IP-адреса, поэтому DHCP-клиенту всегда динамически назначается один и тот же IP-адрес. Это не статические IP-адреса. Им динамически назначаются зарезервированные IP-адреса.

Ничто не мешает вам создать одинаковые резервирования на обоих DHCP-серверах. Это не требует специальной настройки DHCP (по крайней мере, на DHCP-сервере Windows). DHCP-клиент с резервированием получит свой IP-адрес от одного из двух DHCP-серверов. Неважно какой. Во время фазы обновления клиента (T1) клиент будет пытаться обновить IP-адрес с сервера DHCP, который назначил IP-адрес клиенту. Если клиент не может обновить IP-адрес от DHCP-сервера, который назначил IP-адрес клиенту (из-за того, что DHCP-сервер не работает), то клиент освободит IP-адрес и попытается получить IP-адрес от любого DHCP-сервера. Затем второй DHCP-сервер будет обслуживать клиента и, поскольку он имеет такое же резервирование для клиента, назначит клиенту тот же IP-адрес, который назначил первый DHCP-сервер. Этот процесс будет работать таким же образом во время фазы повторного связывания (T2).