Клиенты получают неверные настройки (IP-адреса) по DHCP

В данной статье освещаются некоторые вопросы, касающиеся проблем в реализации
Протокола Динамичной Конфигурации Хоста (Dynamic Host Configuration
Protocol). Такие как отказ в обслуживании, осуществление атаки посредника (man in the
middle attack) и др. Прошу прощения, если эта информация уже была освещена
где-то, по крайней мере в рунете я не видел.

Распределение IP-адресов в DHCP

В DHCP используются три способа назначения IP-адресов:

ручное назначение автоматическое назначение динамическое назначение При ручном назначении IP-адрес клиента DHCP вводится вручную сетевым администратором на сервере DHCP, после чего передается клиенту через протокол DHCP.

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

При динамическом назначении клиент получает IP-адрес на временной основе или «арендует» его на определенный срок. По истечении этого срока IP-адрес отзывается, и клиент DHCP должен перестать его использовать. Если клиент DHCP по-прежнему нуждается в IP-адресе для выполнения своих функций, он должен запросить другой адрес.

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

Метод динамического назначения адресов особенно удобен для клиентов DHCP, нуждающихся в IP-адресе для временного подключения к сети. Для примера рассмотрим сеть класса С, к которой могут подключаться до 300 мобильных пользователей с портативными компьютерами. Сеть класса С может содержать до 253 узлов B55 — 2 специальных адреса = 253). Поскольку компьютеры, подключающиеся к сети через TCP/IP, должны обладать уникальными IP-адресами, все 300 компьютеров не могут подключиться к сети одновременно. Тем не менее, если в любой момент времени в сети возможно не более 200 физических подключений, появляется возможность переназначения неиспользуемых адресов класса С за счет применения механизма динамического назначения адресов DHCP.

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

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

Параметры настройки сервиса с точки зрения администрирования службы DHCP, а также описание работы службы, ее настройка и архитектура

Администрирование DHCP

Администрирование DHCP осуществляется:

  1. Консолью DHCP на компьютере под управлением Windows 8/2012 и выше, введенным в домен , под учетной записью, являющейся членом группы : Администраторы домена, Администраторы DHCP
  2. Консолью DHCP на компьютере под управлением Windows 7/2008 R2 с ограниченным функционалом в администрировании DHCP, введенным в домен , под учетной записью, являющейся членом группы : Администраторы домена, Администраторы DHCP
Параметры настройки сервиса с точки зрения администрирования службы DHCP, а также описание работы службы, ее настройка и архитектура

Правила администрирования DHCP:

  1. Включить компьютер или Avaya ip-телефон в сеть. С этого момента ими можно пользоваться. Переписать полученный ip-адрес (в Avaya ip-телефоне переписать MAC-адрес).
  2. На компьютере или сервере под управлением Windows, включенном в домен , под учетной записью пользователя с необходимыми правами доступа, открыть консоль DHCP. На скриншоте пример запуска из командной строки.
  3. В открывшейся консоли, при отсутствии , добавить его в консоль:  
  4. Раскрыть необходимый раздел администрирования :
Читайте также:  Стать владельцем файла или папки с помощью командной строки в Windows

Администрирование DHCP сводится к правке области [] lan01, являющейся основной областью назначения ip-параметров офиса, включая в себя:

Адреса — для серверов, их сервисов, роутеров и т.п., только для служебного администрирования старшими системными администраторами. Адреса назначаются статическими в этом диапазоне. Адреса — — для служебного администрирования только старшими системными администраторами. Адреса назначаются статическими в этом диапазоне. Адреса — — для сетевых принтеров, МФУ и т.п. Адреса назначаются резервацией ip службой ТП. Адреса — — для рабочих станций рядовых пользователей. Адреса назначаются резервацией ip службой ТП. Адреса — — для новых рабочих станций рядовых пользователей. Адреса назначаются резервацией ip службой ТП. Адреса — — для рабочих станций исключительных пользователей, для служебного администрирования только старшими системными администраторами. Адреса назначаются статическими в этом диапазоне. Адреса — — резервный пул ip-адресов, пустой, для служебного администрирования только старшими системными администраторами. Адреса не назначаются. Адреса — — для серверного оборудования ip-телефонии, для служебного администрирования только старшими системными администраторами. Адреса назначаются статическими в этом диапазоне Адреса — — для конечных устройств ip-телефонии головного офиса: телефоны Avaya и т.п. Адреса назначаются автоматически только Avaya ip-телефонам (политика avaya ip-tel, см. ниже) или резервацией DHCP-сервера службой ТП. Адреса — — для конечных устройств ip-телефонии удаленных офисов (филиалов), подключающихся через VPN-туннель к головному офису: телефоны Avaya и т.п. Для служебного администрирования только старшими системными администраторами. Адреса назначаются DHCP-службой ВПН-сервера.

В консоли управления DHCP, развернув нужную область, открыв раздел «Арендованные адреса» найти записанный ip или MAC-адрес. Если работа проводится через консоль на Windows 8/2012 — нажать правой кнопкой мыши по нужной записи и выбрать «Добавить к резервированию»:

Если работа производится через консоль на Windows 7/2008 R2 и ниже (не рекомендуется), графа «Добавить к резервированию» не отображается в консоли. В этом случае надо запомнить пару ip-адрес = MAC-адрес, перейти в раздел «Резервирование», и создать новое резервирование с этой парой в ручном режиме:  

Параметры настройки сервиса с точки зрения администрирования службы DHCP, а также описание работы службы, ее настройка и архитектура

При создании резервации настоятельно рекомендуется соблюдать пару уже арендованного ip-MAC. Если это невозможно (к примеру, настраивается сетевой принтер) — следует перегрузить ip-оборудование и проверить, что ему выдан правильный ip-адрес, перед вводом оборудования в эксплуатацию.

На этом этапе работа с DHCP закончена, резервация добавлена и готова к работе.

Разделение зон ответственности и прав администрирования

В связи с невозможностью гибкого распределения прав доступа к отдельным веткам администрирования DHCP-сервисом, все системные администраторы и сотрудники службы ТП имеют полные права на администрирование любых DHCP-серверов в домене Нижеследующий список формулирует зоны ответственности и прав администрирования между сотрудниками:

  1. Старшие системные администраторы ответственны за управление всеми DHCP-серверами в домене и внутренней сети любого из vlan.
  2. Сотрудники службы ТП ответственны за управление:

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

Параметры настройки сервиса с точки зрения администрирования службы DHCP, а также описание работы службы, ее настройка и архитектура

Область [] lan01

  • Арендованные адреса
  • Резервирование

Распределение IP-адресов [ править | править код ]

Протокол DHCP предоставляет три способа распределения IP-адресов:

  • Ручное распределение. При этом способе сетевой администратор сопоставляет аппаратному адресу (для Ethernet-сетей это MAC-адрес) каждого клиентского компьютера определённый IP-адрес. Фактически данный способ распределения адресов отличается от ручной настройки каждого компьютера лишь тем, что сведения об адресах хранятся централизованно (на сервере DHCP), и потому их проще изменять при необходимости.
  • Автоматическое распределение. При данном способе каждому компьютеру на постоянное использование выделяется произвольный свободный IP-адрес из определённого администратором диапазона.
  • Динамическое распределение. Этот способ аналогичен автоматическому распределению за исключением того, что адрес выдаётся компьютеру не на постоянное пользование, а на определённый срок. Это называется арендой адреса. По истечении срока аренды IP-адрес вновь считается свободным, и клиент обязан запросить новый (он, впрочем, может оказаться тем же самым). Кроме того, клиент сам может отказаться от полученного адреса.

Некоторые реализации службы DHCP способны автоматически обновлять записи DNS, соответствующие клиентским компьютерам, при выделении им новых адресов. Это производится при помощи протокола обновления DNS, описанного в RFC 2136.

Диагностика на стороне сервера 

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

Запущен ли DHCP как сервис?

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

Приходят ли запросы от клиентов на DHCP-сервер? 

Чтобы определить это, нужно снова запустить анализатор сетевого трафика. На этот раз на сервере. После запуска на сервере tcpdump, dhcpdump или Wireshark клиенту, у которого проблемы с получением адреса, необходимо попытаться получить его снова любым способом, описанным в начале статьи. Если DHCP-сервер работает в штатном режиме, то должны быть и запросы, и ответы. Но всё может быть иначе.

Нет ни запросов, ни ответов? 

Предположим, что у нас есть по крайней мере один клиент, которому не удаётся получить настройки, и запрос от него точно должен был прийти на сервер. Если этого не произошло, очевидно, что клиент либо сам не отправляет запрос, либо запрос не доходит до сервера по разным причинам. Может, он блокируется на промежуточном сетевом оборудовании или в сети некорректно работает ретрансляция DHCP-запросов dhcp_relay. Чтобы это проверить, можно в первом случае вернуться к диагностике на стороне клиента и проследить с помощью анализатора сетевого трафика, что клиент отправляет DHCP-запрос. Во втором — проверить настройки на промежуточном сетевом оборудовании. 

Запрос(ы) есть, ответа(ов) нет? 

Самая простая и очевидная причина в этом случае — закончился пул свободных адресов. Это легко проверить на самом DHCP-сервере по списку выделенных IP-адресов (leases). Если причина действительно в этом — задумайтесь: возможно, пришло время для увеличения пула пригодных для использования IP-адресов на сервере. Чтобы решить проблему прямо сейчас, можно почистить список существующих адресов, выданных в аренду клиентам, уменьшить время аренды и перезапустить сервис DHCP. Но быстрые решения помогают не всегда, а причин может быть гораздо больше. В таком случае придётся детально просматривать логи, а также последние изменения в конфигурации на сервере.

dhcdrop — Поиск нелегальных DHCP серверов в сети

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

Немного теории

При запросе к DHCP серверу, сервер выдает определенный ip адрес и закрепляет его за MAC адресом клиента. Это значит, что клиенту с таким MAC адресом может быть выдан только такой ip адрес.

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

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

Читайте также:  Окончание официальной поддержки операционной системы Windows 7

Чем плохи ложные DHCP сервера?

Плохи они тем, что когда у клиента вашего сервера закончится время аренды ip адреса, он запросит в аренду новый ip адрес сформировав DHCP запрос (DHCPDISCOVER) используя случайный исходящий MAC адрес. Таким образом если первый сервер который выдаст в аренду ip адрес будет не ваш, а одного из пользователей, то все кто получит от него адреса не смогут получить доступ к интернету.

Как обезопасить сеть от ложных DHCP серверов?

Есть несколько способов борьбы с ложными серверами, блокировка на оборудовании доступа или программное обеспечение. Очень редко L2 коммутаторы имеют функции блокировки DHCP ответов. В этом случае нам понадобится программа dhcdrop, которая поможет нам бороться с поддельными серверами.

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

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

Исходя из документации мы имеем:

  • -q — тихий режим работы;
  • -t — режим теститрования;
  • -i — сетевой интерфейс;
  • -l — легальный сервер(указывать МАС адрес);
dhcdrop — Поиск нелегальных DHCP серверов в сети

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

Пример команды которую мы будем использовать:

dhcdrop -q -t -l f8:1a:67:14:7a:79 -i vlan10

Поскольку сеть в которой я работаю разбита на виртуальные подсети и каждый интерфейс подсети имеет имя vlanN, при помощи скрипта мы будем перебирать интерфейсы и для каждого запускать сканирование. Если же вам просто нужно просканировать на интерфейсе, просто пишете имя интерфейса(eth0,ix0 и т.п).

Сам скрипт выглядит следующим образом:

#!/bin/sh . /etc/ load_rc_config dhcpd LEGAL_DHCP=»f8:1a:67:14:7a:79″ for iface in ${dhcpd_ifaces}; do RESULT=$(/usr/local/sbin/dhcdrop -q -t -i ${iface} -l ${LEGAL_DHCP}) if [ $? = 200  ]; then (echo «Subject: Найден DHCP в ${iface}»; echo «From: [email protected]»; echo «To: [email protected]»; echo «${RESULT}») | sendmail [email protected] [email protected] fi done

Сохраняем скрипт в формате .sh и добавляем в планировщик задач cron.

Алгоритм работы скрипта очень простой. Сначала мы считываем конфигурацию DHCP интерфейсов(интерфейсы на которых работает DHCP сервер), а далее для каждого интерфейса выполняем команду dhcdrop -q -t -i {имя интерфейса} -l f8:1a:67:14:7a:79.

Если программа завершается с кодом 200, что сигнализирует об присутствии нелегитимного DHCP сервера, отправляем email при помощи sendmail. Отправку почты не составит труда адаптировать под другой клиент. Нужно только поменять email адреса на реальные.

Данный скрипт написан для FreeBSD и успешно используется на протяжении долгого времени.

Далее действуйте на ваше усмотрение, либо забейте весь пул адресов, либо просто отключите злоумышленника на оборудовании найдя его по МАС адресу.

Возможности сервера

На стадии проектирования протокола, разработчики стремились решить следующие задачи:

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

Среди этих возможностей протокола следует отметить также важные функции, повышающие качество сервиса:

  • резервное копирования хранилища сетевых настроек;
  • задание альтернативной конфигурации (перемещение узлов между подсетями);
  • достижение высокой доступности.

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