Установка dhcp сервера на ubuntu server 16.04. Настройка динамического обновления зон. Балансировка и резервный DHCP-server

В этой статье мы рассмотрим установку и начальную настройку DHCP сервера на Ubuntu. В моем случае установка будет производиться на дистрибутив Ubuntu 14.04.3 LTS, однако, подобным образом DHCP можно установить и настроить на любом дистрибутиве. В моем случае сервер существует достаточно давно и в качестве DNS/DHCP на нем был установлен dnsmasq, который не был настроен и никогда не работал. Поскольку на данный момент dnsmasq входит в число неподдерживаемых дистрибутивом пакетов, было принято решение избавиться от него и настроить все несколько иначе. Если у Вас на сервере нет установленного DHCP-сервера, первый шаг можно пропустить.

Удаление dnsmasq

Тут ничего сложного, просто пишем в консоль:

sudo apt-get remove dnsmasq

И дожидаемся его полного удаления. После этого в системе, вероятно, остались ненужные более пакеты, от которых зависел dnsmasq, следует удалить и их тоже:

sudo apt-get autoremove

После этого можно приступать к настройке DHCP сервера с нуля.

Установка DHCP сервера isc-dhcp-server

Как обычно, для начала следует обновить установленные в системе пакеты:

sudo apt-get update && sudo apt get upgrade -y

Теперь установим непосредственно сам DHCP сервер:

sudo apt-get install isc-dhcp-server

Сервер должен сразу запуститься, но нам предстоит настроить его под свои нужды.

Открываем и редактируем файл /etc/default/isc-dgcp-server. В нем нужно указать сетевой интерфейс, который будет использоваться для раздачи IP-адресов. В моем случае один и тот же интерфейс смотрит как в локальную сеть, так на шлюз (который в той же локальной сети), поэтому я указываю его.

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

sudo nano /etc/default/isc-dhcp-server

Параметру INTERFACES присваиваем значение ethXN, где ethXN - адаптер для локальной сети. Получиться должно примерно следующее:

Узнать, какой интерфейс в Вашем случае используется для локальной сети можно выполнив:

Теперь займемся редактированием основных настроек DHCP

Откроем для редактирования /etc/dhcp/dhcpd.conf:

sudo cp /etc/dhcp/dhcpd.conf /etc/dhcp/dhcpd.conf.dist && sudo nano -w /etc/dhcp/dhcpd.conf

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

default-lease-time;
max-lease-time;

Их можно либо удалить, либо построить вокруг них секцию для своей подсети. Если не уверены, как это сделать, то проще будет просто стереть их или закомментировать знаком #, а потом добавить на их место такое содержимое:

subnet 192.168.0.0 netmask 255.255.255.0 {
range 192.168.0.200 192.168.0.250;
option domain-name "ordaupfin.local";
option domain-name-servers 192.168.0.231, 192.168.0.1;
option routers 192.168.0.231;
option broadcast-address 192.168.0.255;
default-lease-time 604800;
max-lease-time 604800; }

Рассмотрим эту секцию подробнее:

  • Задаем подсеть 192.168.0.0 с маской 255.255.255.0, Вы, естественно, адаптируете все это под свои нужды. Обратите внимание, что все нижеследующие опции включены в секцию этой подсети (заключены в фигурные скобки);
  • Range задает диапазон выдаваемых адресов. В моей сети большинство клиентов имеют статические адреса, поэтому я выделяю небольшой диапазон;
  • option domain-name добавляет имя домена к имени клиента, например подключенному клиенту HOME-PC будет присвоено имя HOME-PC.ordaupfin.local;
  • option domain-name-servers задает адреса DNS серверов, у меня в сети их 2, можно указать внешний DNS, например Google Public DNS A - 8.8.8.8;
  • option routers задает шлюз по-умолчанию;
  • option broadcast-address задает широковещательный адрес подсети;
  • default-lease-time и max-lease-time задают срок аренды по умолчанию и максимальный срок аренды IP-адреса в секундах соответственно. У меня это 7 дней.

Вот как это выглядит в nano:

Теперь перезапускаем DHCP сервер командой:

sudo service isc-dhcp-server restart

Если вы увидели в терминале сообщение:

isc-dhcp-server stop/waiting
isc-dhcp-server start/running, process 30456

Значит, все хорошо и компьютеры в сети могут получать адреса по DHCP. Если демон после правки конфигов не запускается, значит внимательно смотрим конфигурационные файлы на предмет ошибок/опечаток. В этом может помочь syslog, если посмотреть его сразу после неудачной попытки запуска:

tail -f /var/log/syslog

Листать лог вверх-вниз можно сочетанием клавиш Shift+PgUp/Shift+PgDwn, выход из просмотра Ctrl+C.

В моем случае все прошло удачно. При включении WiFi и подключении к сети успешно был получен IP адрес и все остальные настройки:

Спасибо за внимание!

Предложения и обсуждения данной статьи ведется в комментариях

Здравствуйте, господа.
Занимаюсь самообразованием по администрированию Linux и недавно заинтересовался установкой и настройкой ddns-сервера (Dynamic DNS) под данной платформой, используя связку Bind + dhcpd . Чтение форумов, man и документации с сайтов дали вполне положительный результат и мне хотелось бы поделиться опытом с людьми. Надеюсь статья будет полезной.
Изначально мы имеем чистую ОС GNU/Linux Debian 6.0.1 , без графического окружения. После установки было произведено обновление и установлен минимальный набор программного обеспечения, такого как mc и sudo . Так же я заранее привел имя хоста к виду hostname.domainname . И так как я использую виртуальную машину VirtualBox и работаю не в «боевых» условиях, все действия производятся из-под root аккаунта. Всё необходимое программное обеспечение устанавливается из репозиториев с помощью пакетного менеджера apt-get .
Суммарная информация:
ОС - GNU/Linux Debian 6.0.1;
Имя сервера - ddnsagc01.agency.com;
Параметры сети - static 192.168.1.2/24;
Установка isc-dhcp-server
Итак, начнем мы с установки сервера dhcp.
# apt-get install dhcp3-server
После установки, останавливаем демон сервера командой:
# /etc/init.d/isc-dhcp-server stop
И идем править основной конфигурационный файл, который находится по адресу /etc/dhcp/dhcpd.conf . Для редактирования я буду использовать идущий в составе дистрибутива редактор nano :
# nano /etc/dhcp/dhcpd.conf
# При начальной настройке я отключаю опцию динамического обновления и подключу её позже.
ddns-update-style none;
# Базовая конфигурация для моего домена agency.com.
subnet 192.168.1.0 netmask 255.255.255.0 {
default-lease-time 21600; # Время на которое выдается адрес, сек.
max-lease-time 28800; # Принудительно забрать адрес через, сек.
option domain-name «agency.com»; # Имя домена.
option domain-name-servers 192.168.1.2; # Адрес dns сервера.
option subnet-mask 255.255.255.0; # Маска подсети.
option routers 192.168.1.1; # Шлюз.
range 192.168.1.1 192.168.1.100; # Диапазон выдаваемых адресов.
}
# Фиксированные адреса выдаваемые для машин по MAC-адресу.
Host adagc01 { # Контроллер домена.
hardware ethernet 08:00:27:19:c8:48;
fixed-address 192.168.1.3;
}
Host ddnsagc01 { # ddns сервер.
hardware ethernet 08:00:27:05:99:1a;
fixed-address 192.168.1.2;
}
Host squid01 { # Шлюз.
hardware ethernet 08:00:27:4f:78:1b;
fixed-address 192.168.1.1;
}
Следующий конфигурационный файл который нам предстоит поправить находится в директории /etc/default/ и называется isc-dhcp-server . Там нам нужно изменить всего одну строчку, указывающую DHCP серверу на каком интерфейсе ему работать:
INTERFACES = «eth0» # Сюда подставляем имя своего интерфейса.
После внесения всех изменений стартуем демон командой:
# /etc/init.d/isc-dhcp-server start
Проверяем работу, пытаясь получить адрес машиной из нашей сети и если всё в порядке сервер выдаст адрес из указанного диапазона и остальные указанные нами настройки.
Установка DNS-сервера Bind
Вместе с Bind полезно будет поставить еще и утилиты для работы с сетью (такие как nslookup и dig, входящие в пакет dnsutils):
# apt-get install bind9 bind9utils dnsutils
После установки останавливаем сервер:
# /etc/init.d/bind9 stop
Конфиги Bind хранит в /etc/bind . Там же лежат файлы корневых зон и зон прописанных по умолчанию - db.0, db.127, db.root и т.д. rndc.key - файл ключ сгенерированный при установке, он нам понадобится для обновления наших файлов-зон с помощью dhcp-сервера. Новый ключ генерируется с помощью утилиты rndc-confgen . Разработчики предлагают вам не вносить изменения в основной конфигурационный файл сервера named.conf, а подключать к нему свои конфигурационные файлы с помощью директивы include . Так, если открыть named.conf после установки там будет всего лишь пояснение, что это за файл и три строчки определяющих подключаемые конфиги:
# less /etc/bind/named.conf | grep include
include «/etc/bind/named.conf.options»;
include «/etc/bind/named.conf.local»;
include «/etc/bind/named.default-zones»;
Сперва я внес информацию из rndc.key в основной конфигурационный файл, добавив его опять же с помощью include:
# nano /etc/bind/named.conf
include «/etc/bind/rndc.key»;
Теперь нам необходимо прописать собственные прямую и обратные зоны. Разработчики предлагают использовать для этого файл named.conf.local , что мы и сделаем:
# nano /etc/bind/named.conf.local
zone «agency.com» { # Название прямой зоны.
type master;
file «db-agency.com»; # Имя файла зоны.

};

Zone «1.168.192.in-addr.arpa» { # Название обратной зоны.
type master;
file «db-1.168.192»; # Имя файла зоны.
allow-update { key rndc-key; }; # Разрешаем обновление зоны с ключом.
};
Далее нам необходимо создать указанные файлы. По умолчанию Bind предполагает их хранение в /var/cache/bind :
# touch /var/cache/bind/db-agency.com
# touch /var/cache/bind/db-1.168.192
Нам необходимо прописать некоторые параметры в только что созданные зоны.
Файл прямой зоны:

# nano /var/cache/bind/db-agency.com
$TTL 10800
agency.com. IN SOA ddnsagc01.agency.com. admin.agency.com. (
11 ; Порядковый номер.
10800 ; Обновление.
3600 ; Повторная попытка.
604800 ; Устаревание.
3600) ; Отрицательное TTL в 1 час.
;
; Укажем серверы имен.
;
agency.com. IN NS ddnsagc01.agency.com.
;
; Так же пропишем А запись для указанного сервера имен.
ddnsagc01 A 192.168.1.2
Файл обратной зоны:

$TTL 10800
1.168.192.in-addr.arpa. IN SOA ddnsagc01.agency.com. admin.agency.com. (
11 ; Порядковый номер
10800 ; Обновление
3600 ; Повторная попытка
604800 ; Устаревание
3600) ; Отрицательное TTL в 1 час
;
; Укажем серверы имен.
;
1.168.192.in-addr.arpa. IN NS ddnsagc01.agency.com.
;
; Так же пропишем PTR запись для указанного сервера имен.
2.1.168.192.in-addr.arpa. IN PTR ddnsagc01.agency.com.
Установим владельцем только что созданных файлов пользователя bind:
# chown bind:bind /var/cache/bind/db-agency.com
# chown bind:bind /var/cache/bind/db-1.168.192

Настройка динамического обновления зон
Bind настроен и теперь нам необходимо настроить dhcp сервер на обновление файлов зон bind. Для этого открываем для редактирования и меняем параметр ddns-update-style с none на interim в /etc/dhcp/dhcpd.conf:
ddns-update-style interim;
Прописываем rndc-key (который можно подключить и через include, но я предпочел прописать вручную):
key rndc-key {
algorithm hmac-md5;
secret «XXXXXXXXXXX»;
}
И наконец указываем какие зоны должен обновлять сервер:
zone agency.com {

key rndc-key;
}
zone 1.168.192.in-addr.arpa {
primary 127.0.0.1; # Адрес DNS сервера.
key rndc-key;
}
Перезапускаем демоны Bind и isc-dhcp-server и проверяем работу установленной связки:
# /etc/init.d/bind9 restart
# /etc/init.d/isc-dhcp-server restart
После перезапуска демонов и в том случае, если всё прописано верно - в каталоге /var/cache/bind появятся.jnl файлы (журналы) наших зон, указывающие на то, что зоны корректно обновляются. В моём случае Bind так же чуть изменил файлы зон, подкорректировав их таким образом, чтобы стали использоваться сокращения в виде символа «@» для подмены имени домена, заменил значения указанные в часах и неделях на секунды (как в приведенных мною конфигах) и некоторые другие.
Bind и isc-dhcp-server записывают информацию о своей работе в syslog , так что если что-то не заработало, идем в /var/log/syslog и ищем в чем загвоздка. Следует обращать внимание на знаки препинания при описании доменных зон. Так моя ошибка заключалась в том, что я пропустил точку при указании домена и никак не мог добиться обновления обратной зоны.
Спасибо за внимание, надеюсь статья окажется полезной.
При написании статьи использовалась книга "DNS и BIND " Крикета Ли и Пола Альбитца, man страницы и многочисленные форумы в сети Интернет.

P.S.

Всё описанное выше я оформил в виде pdf-файла, в котором т.ж. присутствует раздел по использованию настроенной связки для работы с сервером Active Directory. Этот раздел является практически копией статьи Алексеюя Кеда aka Lissyara (http://www.lissyara.su) и я не включаю его в данную публикацию. Но тем не менее, я выкладываю ссылку на данный PDF-документ, который немного отличается по форматированию и имеет небольшие дополнения.

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

Принцип работы протокола DHCP:

  1. Клиент рассылает широковещательный запрос DHCP Discover на поиск DHCP-сервера
  2. Сервер, приняв такой запрос, предлагает клиенту IP-адреса и параметры сети в пакете DHCP Offer
  3. Приняв предложение сервера, клиента подтверждает свой выбор в пакете DHCP Request
  4. Выполнив регистрацию нового хоста, сервер посылает подтверждение клиенту DHCP Ack

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

В нашем случае мы будем рассматривать настройку DHCP на сервере Ubuntu. На стороне клиента необходимо сразу же выставить режим автоматического получения IP-адресов. В Windows это настраивается так: Пуск -> Панель управления -> Сеть и Интернет -> Управление сетями и общим доступом -> Изменение параметров адаптера -> пр. кнопкой мыши по Подключение по локальной сети -> Протокол Интернет версии 4 (TCP/IPv4) -> ставим Получить IP-адрес автоматически

В Linux это настраивается в конфигурационном файле /etc/network/interfaces . Вводим команду:

$ sudo nano /etc/network/interfaces

Ищем строку # The primary network interface и ниже нее необходимо выставить следующие настройки интерфейса:

После чего сохраняемся Ctrl + X -> Y > Enter. Выполняем команду:

$ sudo /etc/init.d/networking restart

Переходим к самому главному – настройке DHCP-сервера. Первым делом устанавливаем пакет isc-dhcp-server:

$ sudo apt-get install isc-dhcp-server

Переходим в режим редактирования DHCP-сервера в файле dhcp.conf

$ sudo nano /etc/dhcp/dhcp.conf

Файл изначально пустой, необходимо прописать настройки вручную:

Теперь по порядку объясняю каждую строку:

  1. default-lease-time – промежуток времени в секундах, на который выделяется IP-адрес клиенту, если он сам не указал данный промежуток
  2. max-lease-time – максимальный промежуток времени, на который выделяется IP-адрес
  3. subnet – адрес подсети
  4. netmask – маска подсети
  5. range – пул Ip-адресов для выдачи клиентам
  6. option router – адрес шлюза по-умолчанию
  7. option domain-name -servers – адреса DNS-серверов
  8. option domain-name – имя домена

Перезапускаем демон DHCP командой:

$ sudo /etc/init.d/isc-dhcp-server restart

Для того, чтобы запросить Ip с компьютера-клиента под управлением Widnows в командной строки выполните

ipconfg /renew


Подписывайтесь на нашу

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

В общем случае настройки, передаваемые DHCP сервером DHCP клиентам включают:

    IP адрес и сетевую маску

    IP адрес шлюза по умолчанию

    IP адрес DNS серверов

Однако DHCP сервер может также предоставить такие параметры настройки, как:

    Имя хоста

    Имя домена

    Адрес сервера времени

    Адрес сервера печати

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

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

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

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

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

Два последних метода можно рассматривать, как автоматические, поскольку DHCP сервер выдает адреса без дополнительного вмешательства. Единственная разница заключается в том, насколько арендуется адрес, другими словами, когда истечет время использования адреса клиентом. Ubuntu поставляется вместе с DHCP сервером и клиентом. Сервером является dhcpd (сервис протокола динамического выделения адресов). Клиент, поставляемый с Ubuntu, - это dhclient и он может быть установлен на все компьютеры, требующие автоматических настроек. Обе программы просты в установке и настройке и автоматически стартуют при загрузке системы.

Установка

В теринале введите следующую команду для установки dhcpd:

Sudo apt-get install isc-dhcp-server

Возможно вам потребуется изменить настройку по умолчанию редактированием /etc/dhcp/dhcpd.conf для удовлетворения вашим потребностям и специфическим настройкам.

Вы также можете исправить /etc/default/isc-dhcp-server для определения интерфейсов, которые должен слушать dhcpd.

Обратите внимание, что сообщения dhcpd будут посылаться в syslog. Смотрите его для диагностики.

Настройка

Сообщение об ошибке в конце установки может немного смущать, но следующие шаги помогут вам настроить сервис:

В большинстве случаев, все что вам нужно сделать, это выделять случайный IP адрес. Это можно сделать следующими настройками:

# minimal sample /etc/dhcp/dhcpd.conf default-lease-time 600; max-lease-time 7200; subnet 192.168.1.0 netmask 255.255.255.0 { range 192.168.1.150 192.168.1.200; option routers 192.168.1.254; option domain-name-servers 192.168.1.1, 192.168.1.2; option domain-name "mydomain.example"; }

В результате DHCP сервер будет выдавать клиентам IP адреса из диапазона 192.168.1.150-192.168.1.200. адреса будут предоставляться на 600 секунд, если клиенты не запросят специфический промежуток времени. При этом максимально разрешенное время аренды будет 7200 секунд. Сервер будет также «рекомендовать» клиентам использовать адрес 192.168.1.254 в качестве шлюза и 192.168.1.1 и 192.168.1.2 как DNS сервера.

После изменения настройки вам потребуется перзапустить dhcpd:

Sudo /etc/init.d/isc-dhcp-server restart




Top