Опубликовано:
13 Апрель 2010

Рубрики записи:
Сисадминство

Метки: , , .

Затвиттить

Версия для печати

Разбор узких мест DHCP-сервера

Проблема раз. Потеря выделенных адресов.

Протокол динамической конфигурации хоста (RFC 2131) не обновлялся с 1997 г. С точки зрения развития сети его уже можно назвать древним. Самой большой проблемой при использовании протокола является информация о выделении адресов: способ хранения этой информации не зависит от протокола — ею распоряжаются серверы, и именно в этой сфере требуются улучшения.

Если сервер DHCP теряет информацию состояния, клиентские машины продолжают использовать выделенные им IP-адреса, которые сервер уже не в состоянии опознать. В результате может получиться, что некоторые рабочие станции будут продолжать использовать выделенные им IP-адреса, в то время как сервер остается "в неведении". Рабочие станции не посылают ему DHCP-пакеты, а следовательно, они не "будут знать" о случившейся аварии. Сервер же, в свою очередь, "не будет знать", как  эти станции используют адреса из общего пула.

На участке сети, в котором произошла потеря информации DHCP, конфликты адресов неизбежны. Когда клиентская машина обращается с запросом о выделении адреса сервер находит первый из доступных адресов, который, возможно, уже используется другой машиной.

На самом деле эта проблема постепенно уходит в вечность, так как современные серверы используют различные технологии сохранения этой ценной информации в случае сбоя. Сервер Win2k8R2 поддерживает протокол DHCP Failover, использование которого позволяет двум серверам синхронизировать данные об аренде адресов между собой, но на DHCP-запросы отвечает только основной сервер. Резервный подключается, когда недоступен первый. Учитывая, что он "знает" все, что выдал основной сервер, переход на резервный полностью прозрачен. Никсовый DHCP-сервер dhcpd также использует бэкап и постоянно сохраняет последние изменения информации о пуле адресов.

Проблема два. Выход из строя.

Даже в небольших сетях для раздачи IP-адресов и других сетевых настроек (DNS, WINS, gateway) клиентам на порядок удобнее использовать DHCP-сервер, чем вручную прописывать адреса в настройках каждой системы. Управление IP-адресами из одного места экономит время. Проблема в том, что теперь клиенты зависимы от работоспособности DHCP-сервера, и в случае выхода его из строя не смогут получить IP-адрес, соответственно, не смогут воспользоваться ресурсами локальной и глобальной сетей.  В клиентских машинах под управлением Win2k и более поздних версий служба Client/Server была усовершенствована и теперь позволяет при отсутствии DHCP-сервера автоматически назначать себе IP-адрес. Этот процесс называется автоматическим назначением частных IP-адресов (Automatic Private IP Addressing, APIPA). В данном случае, APIPA-клиенты автоматически назначают себе IP-адрес в диапазоне 169.254.0.0/16, что дает им основные возможности связи по протоколу TCP/IP. Но адресация APIPA может вызвать большие проблемы в вашей сети, так как она выполняет назначение ip-адресов из диапазона, который обычно не входит в локальную подсеть компании. При отказе DHCP-сервера клиенты, пытающиеся обновить аренду на сервере, не смогут этого сделать и автоматически назначат себе APIPA-адрес. Даже после восстановления работоспособности DHCP-сервера эти клиенты не станут сразу же перерегистрироваться и будут отрезаны от сети. Существует два варианта отключения APIPA: через реестр (неудобный вариант, для каждого адаптера прописывается вручную. При этом необходимо знать имя адаптера) и путем использования альтернативной настройки протокола IP, которая позволяет производить назначение статического IP-адреса в случае недоступности DHCP-сервера.

Настраиваем отказоустойчивый DHCP-сервис

В небольших компаниях, чтобы организовать резервирование DHCP, часто используют второй, как правило, несильно загруженный сервер, выполняющий другую работу. В этом случае IP-адреса между серверами распределяются по схеме 80/20 (так советует Microsoft, хотя это не обязательно), то есть основной сервер берет на себя 80% адресов, оставшиеся 20 достаются второму серверу. Причем основной сервер должен находится "ближе" к клиентам, чем дополнительный. Это обусловлено простым правилом - кто первый тот и папа :)

Рассмотрим сеть класса "С": сервер DHCP1 берет на себя 192.168.1.1-200, сервер DHCP2 — 192.168.1.201-254. Во избежание конфликтов на обоих серверах настраиваются исключаемые адреса (Excluded Adresses), в которые прописываются IP-адреса, выдаваемые другим сервером. Если основной сервер выйдет из строя, резервный сможет отвечать на запросы клиентов и обслуживать их аренду. При необходимости второй сервер можно легко перестроить на полный диапазон. Тут тоже есть свои нюансы, которые в этой статье рассмотрены не будут. Так что если будете создавать нечто подобное - разберитесь и почитайте доп. литературу.


Также рекомендую следующие записи:


Понравилась статья? Подпишись на обновления по RSS, E-mail или добавляйте меня в Twitter.

Комментарии (2)


StasikOS пишет:
18.04.2010 в 18:15

"На участке сети, в котором произошла потеря информации DHCP, конфликты адресов неизбежны. Когда клиентская машина обращается с запросом о выделении адреса сервер находит первый из доступных адресов, который, возможно, уже используется другой машиной."
Это не страшно. В DHCP есть механизм, который заставит:
1. Клиента проверить, не занят ли выданный сервером адрес
2. Сообщить серверу, что адрес уже был занят до нас.
3. Серверу запомнить факт "занятности" адреса и выдать другой.



Алексей пишет:
18.04.2010 в 20:49

StasikOS, спасибо за конструктивный комментарий


Оставить комментарий

XHTML: Вы можете использовать эти теги: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>