Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

Системный администратор - секреты мастерства: маленькие хитрости DHCP


Здравствуйте, уважаемые коллеги! 

С вами снова Павел Медников. Сегодня мы разберем некоторые тонкости использования протокола DHCP, но сначала позвольте представить вам мой личный web-сайт www.mednikov.ru, открывшийся буквально на днях. Данный ресурс выполнен в виде блога, в котором публикуются материалы данной рассылки и другие статьи, в рассылку не вошедшие. Если вам интересны материалы предыдущих выпусков рассылки, вы можете ознакомиться с ними здесь. А теперь, перейдем к делу. 

Итак, как вы знаете, IP-адреса можно назначать вручную (статические адреса) и автоматически (динамически присваиваемые адреса). В случае применения статической адресации вы вынуждены вручную настраивать сетевые интерфейсы каждого хоста, следя за тем, чтобы присваиваемые настройки были корректными для вашей сети. Вам необходимо не только следить за корректностью параметров, но и помнить, какие адреса уже присвоены хостам, а какие – еще нет. Если в вашей сети 3-4 хоста, то это не сложно, однако стоит ей разрастись до 20-25 хостов, и разобраться в этой мешанине из занятых и свободных адресов становится уже затруднительно. Особенно это становится неудобным, когда в вашей сети появляется большое количество ноутбуков, которые часто покидают пределы вашей сети и используются в других сетях. Регулярные перенастройки сетевых интерфейсов способны довести до белого каления как пользователей, так и администраторов. Однозначно, требуется какое-то решение, позволяющее автоматизировать этот процесс с должной степенью надежности и предсказуемости. Для этих целей был придуман протокол DHCP.

Протокол DHCP (dynamic host configuration protocol) применяется для автоматического присвоения хостам сети IP-адресов и других настроек, что делает его очень полезным при использовании в повседневной работе системного администратора. Упрощенно его использование в жизни выглядит следующим образом: в сети на одном из хостов (на сервере, маршрутизаторе или брандмауэре) работает сетевая служба, постоянно прослушивающая сеть на предмет специальным образом сформированного пакета данных, называемого запросом «DHCPDISCOVER». Хост, настроенный на автоматическое конфигурирование сетевого адаптера при включении, посылает в сеть запрос «DHCPDISCOVER» и в течение некоторого времени ждет ответа. Если ответа на DHCPDISCOVER не получено, считается, что DHCP-сервер в сети отсутствует или он недоступен, и присвоения адреса хосту не происходит.

Когда DHCP-сервер «слышит» запрос DHCPDISCOVER, он отправляет от себя сообщение DHCPOFFER, в котором DHCP-клиенту (хосту, желающему получить IP-адрес) предлагается свободный IP-адрес и срок, на который этот IP-адрес можно «арендовать» (это значение так и называется «срок аренды»). В сети может существовать несколько DHCP-серверов, поэтому в ответ на одно сообщение DHCPDISCOVER может прийти несколько сообщений DHCPOFFER. Хост принимает одно из поступивших ему предложений и отправляет в сеть сообщение DHCPREQUEST, в котором сообщает, какой же адрес из предложенных он выберет. Поскольку одновременно адреса по DHCP могут запрашивать несколько десятков хостов, «понравившийся» нашему компьютеру адрес за время обмена DHCP-любезностями может быть перехвачен более шустрым конкурентом. В этом случае, если адрес, который мы хотим себе присвоить, уже успели занять, DHCP-сервер ответит нашему хосту сообщением DHCPDECLINE, и нам придется начинать всю процедуру сначала. Если же понравившийся IP-адрес все еще свободен, то сервер ответит сообщением DHCPACK; наш хост присвоит себе этот адрес и все остальные настройки, которые нам передаст DCHP-сервер, а сервер «запомнит», что он выдал такой-то IP хосту, имеющему такой-то MAC адрес сроком на столько-то дней.

MAC-адрес – это уникальный идентификатор сетевой платы. Его также называют аппаратным адресом (hardware address). Этот идентификатор уникален у каждой из выпущенных сетевых плат, за исключением неизлечимо-китайских, по 100 руб. за килограмм, выпущенных в далекой провинции Сунь-Вынь, где местные жители не особенно заморачиваются насчет таких условностей. Если серьезно, то были случаи, когда у двух дешевых сетевых плат были одинаковые MAC-адреса.

После получения IP-адреса, хост отправляет серверу сообщение DHCPINFORM – запрос на получение дополнительных сетевых настроек. Речь о них пойдет чуть позже.

Если объяснять процесс получения адреса по DHCP на пальцах, то лучше всего сравнить сеть с толпой перед театром, в котором вот-вот начнется премьерный и единственный показ постановки популярного режиссера. Наш хост – зритель, которому не досталось билета, он ходит около входа и спрашивает, не ли лишних билетов. Его встречают два билетных спекулянта.

Хост (кричит в толпу – DHCPDISCOVER): Лишний билет у кого-нибудь есть?
Спекулянт №1 (DHCP-сервер А дает ответ DHCPOFFER): У меня есть! За тысячу рублей отдам!
Спекулянт №2 (DHCP-сервер В тоже дает DHCPOFFER): У меня тоже есть! За полторы тысячи рублей отдам!
Хост чешет репу, душит жабу и решается (DHCPREQUEST): Беру у Спекулянта №1 за 1 тысячу рублей!
Спекулянт №1 (DHCPDECLINE): Поздно, батенька! Пока ты думал, у меня уже купили!
Хост (в отчаянии – новый DHCPDISCOVER): У кого еще билеты остались?!
Спекулянт №2 (DHCP-сервер В снова дает DHCPOFFER): У меня остался! Но теперь отдам уже за 2 тысячи рублей, спекулянт я или где? :-Р Думай быстрее, потом дороже будет!
Хост (DHCPREQUEST): Черт с тобой, кровопийца! Беру за 2 тысячи!
Спекулянт №2 (DHCPACK): По рукам! Давай деньги, получи билет.
Хост (DHCPINFORM): Мужик, ты мне билет в бельэтаж продал – это далеко от сцены? Бинокль нужно брать?

 Полученный IP-адрес действителен в течение времени, называемого «сроком аренды» (lease time). До его истечения, адрес считается занятым и никому не выдается. Впрочем, хост может досрочно избавиться от него. При этом он отправляет серверу сообщение DHCP-release, после чего DHCP-сервер метит занимаемый хостом адрес как свободный.

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

Во-вторых, DHCP позволяет закреплять определенный IP-адрес за определенным MAC-адресом (резервирование IP по MAC). Это дает возможность администратору гарантировано выдавать тому или иному сетевому устройству один и тот же IP-адрес и менять его по своему усмотрению, не прикасаясь для этого к самой «железке». Очень полезное свойство, когда, например, в вашей сети есть десяток ноутбуков, которым вы хотите выдавать строго определенные IP-адреса, скажем, для того, чтобы контролировать их сетевой трафик на предмет наличия в нем признаков работы вредоносного ПО. Установили в нашей сети IDS (систему обнаружения вторжений и опасной сетевой активности), например SNORT - и наблюдаем за определенными адресами, которые сами же и раздаем ноутбукам по DHCP, основываясь на их MAC-адресах. Мало ли чего эти менеджеры понахватали на ноутбуки, пока были в командировке или когда подключали компьютер дома.

Также эта особенность полезна при конфигурировании принтеров с сетевыми интерфейсами: некоторые принтеры склонны «забывать» свои сетевые настройки после выключения их из розетки, а многие уборщицы обладают маниакальным стремлением выключать из розетки все вилки, попавшие в поле зрения. Утром пользователь включил принтер обратно, а настройки – тю-тю. Принтер не печатает. Начинается крик и паника. И хотя проблема выеденного яйца не стоит, но админу – все равно стресс. Особенно утром, с недосыпу. Так что если принтер автоматически получит по DHCP навечно закрепленный за ним IP-адрес, нам от этого только спокойнее будет, а пользователь вообще ничего не заметит. В итоге все счастливы.

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

  • Шлюзы по умолчанию. Если в вашей сети имеется несколько Интернет-каналов (для обеспечения бесперебойной работы), вы можете назначить хостам несколько шлюзов и порядок их предпочтения. В случае выхода одного из каналов из строя, переключение на резервный канал произойдет автоматически, без вашего вмешательства. Это же дает возможность организовать простейшую балансировку нагрузки между каналами, назначив по DHCP одной группе хостов один маршрутизатор в качестве шлюза, а другой группе – второй.
  • Статические маршруты. Если в вашей сети есть несколько подсетей, соединенных маршрутизаторами, то при помощи DHCP можно автоматически оповещать хосты о наличии маршрутов в другие подсети. Причем это, по желанию, можно сделать только для избранных – например, используя привязку к MAC. Эта же опция полезна при организации VPN-доступа к корпоративной сети – VPN-клиентам можно сообщить маршруты лишь к нужным им подсетям, оставив другие подсети недоступными для подключающихся по VPN пользователей.
  • Смещение времени. Если ваши пользователи часто бывают в различных временных поясах (например, мотаются из Питера во Владивосток и обратно), то можно заставить системные часы их ноутбука адаптироваться к вашему местному времени при помощи DHCP.
  • Сервер синхронизации времени. Поскольку часы компьютеров славятся своей неточностью, их желательно синхронизировать с какими-то эталонными часами. Для этого используется служба NTP. Информацию о сервере NTP можно раздавать хостам при помощи DHCP.
  • DNS-серверы. С помощью этой опции вы можете назначать вашим клиентам DNS-серверы как внутри сети, так и за ее пределами. Причем, в отличие ручной настройки интерфейса, вы можете передать хосту обширный список доступных DNS-серверов.
  • Настройки сервера загрузки – настройки протокола TFTP/BOOTP, необходимые для бездисковой загрузки хостов. Эта возможность востребована при наличии в сети бездисковых терминалов, загружающихся по сети, и при организации дистанционной автоматической установки ОС на компьютеры пользователей (об этом поговорим отдельно)
  • Списки доступных SMTP и POP серверов.
  • Настройки WINS и Netbios
  • Размер MTU, время жизни кэша ARP, размер TTL и др.

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

Естественно, использование DHCP имеет свои подводные камни. Например, стоит DHCP-серверу выйти из строя, и при следующем включении хостов большая часть сети может оказаться несконфигурированной, а основные сетевые ресурсы окажутся недоступными. В такой момент системный администратор начинает понимать, что такое быть раздираемым на части. Чтобы такого не происходило, желательно иметь резервную преднастроенную службу DHCP, размещенную на другом сервере, но находящуюся в неактивном состоянии. Если в вашей сети два контроллера домена Windows (основной и резервный), то организовать резервирование DHCP не составляет проблем. Многие серьезные маршрутизаторы, например Cisco также имеет встроенный DHCP-сервер, который можно использовать как в качестве основной, так и резервной DHCP-службы. Всякая дешевка, типа D-Link, TrendNet, Asus или Huawei, также умеет раздавать настройки TCP/IP по DHCP, но часто их функциональность ограничивается выдачей IP-адреса, адреса шлюза по умолчанию и адреса DNS-сервера, поэтому полагаться на такое оборудование всерьез не стоит.

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

На сегодня это все. В следующем выпуске рассылки мы затронем тему сетевой безопасности и рассмотрим вопросы настройки брандмауэров и основы фильтрации IP-пакетов. Оставайтесь с нами!


С уважением,
Павел Медников
 
P.S. Напоминаю, что все материалы данной рассылки публикуются также на моем личном блоге www.mednikov.ru/blog. Там же вы сможете найти материалы на тему администрирования сетей, не вошедшие в данную рассылку, а также статьи по другим темам. Добро пожаловать! 


В избранное