Установка dhcp сервера ubuntu. Протокол динамического выделения адресов (DHCP). Установка DNS-сервера Bind

Здравствуйте, господа.
Занимаюсь самообразованием по администрированию 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. Это значительно упрощает настройку оборудования и экономит огромное количество времени. Используя DHCP нам не нужно производить настройку сети на каждом отдельном устройстве, нужно лишь подключить устройство к сети и DHCP сервер сделает все настройки автоматически. Каждый домашний WiFi роутер имеет в себе встроенный DHCP сервер, поэтому вам не нужно каждый раз при подключении к разным роутерам прописывать все настройки вручную, роутер делает это за вас.

DHCP сервер может автоматически присвоить клиенту:

  • Адрес ip;
  • Маску подсети;
  • IP адрес шлюза;
  • IP адрес DNS сервера;

В отдельных случаях:

  • Имя хоста;
  • Имя домена;
  • Адрес серверов времени(NTP);

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

Установка и настройка DHCP сервера

В Ubuntu установка и настройка DHCP сервера выполняется всего в несколько шагов, быстро и продуктивно. Для того, чтобы начать использовать сервер нужно установить программное обеспечение на компьютер, делается это при помощи команды:

Sudo apt-get install isc-dhcp-server

Минимальная настройка DHCP сервера включает в себя редактирование только 2х файлов.

Первый файл который мы с вами отредактируем, это nano /etc/default/isc-dhcp-server и добавляем/редактируем всего одну строку:

INTERFACES="eth3"

где «eth3» интерфейс к которому подключаются клиенты с внутренней сети и который будет слушать DHCP;

Теперь собственно и сама настройка DHCP сервера. Открываем файл nano /etc/dhcp/dhcpd.conf и удаляем все содержимое.
Сейчас мы с вами настроим сервер только для раздачи адресов всем устройствам, которые будут запрашивать у сервера адрес. Добавляем в файл строки:

Default-lease-time 7200; max-lease-time 43200; subnet 192.168.0.0 netmask 255.255.255.0 { range 192.168.0.100 192.168.0.200; option routers 192.168.0.1; option domain-name-servers 192.168.0.1; }

Разберем по-порядку строки которые мы внесли в этот файл:

  • default-lease-time - время аренды(в секундах) адреса у сервера, если клиент не запросил другое;
  • max-lease-time - максимальное время аренды адреса;
  • subnet - описывает сеть ip и её маску;
  • range - диапазон адресов с которых по запросу клиента будут предоставляться адреса;
  • option routers - адрес роутера. Это должен быть адрес интерфейса через который пользователи попадают в интернет.
  • option domain-name-servers - адрес DNS сервера. Указывает на то, что сервер расположен на этом же компьютере и слушает интерфейс с адресом 192.168.0.1

Роутером у нас должен выступать интерфейс который мы описали в файле INTERFACES="eth3" и там должен быть назначен адрес который мы описали в настройках DHCP сервера. Если у вас не установлен DNS сервер, можете использовать сервер от вашего ISP провайдера или публичные от google или yandex .

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

  • /etc/ init . d / isc - dhcp - server start - запуск сервера;
  • /etc/ init . d / isc - dhcp - server stop - остановка сервера;
  • /etc/ init . d / isc - dhcp - server restart - перезапуск сервера;

Можно использовать команду service isc-dhcp-server {start|stop|restart} .

Следующий пункт настройки сервера — настройка DHCP, настраиваем автоматическую раздачу IP адресов сервером.

После чего проверяем на клиенте, успешную настройку DHCP сервера Ubuntu:

Ubuntu Server: Автоматическое получение зарезервированного IP адреса

Просмотр списка клиентов с назначенными адресами

После получения клиентами IP адресов от нашего созданного DHCP сервера, просмотреть этот список можно командой:

nano /var/lib/dhcp/dhcpd.leases

Ubuntu Server: Список арендованных IP адресов

Там же можно увидеть и соответствие MAC адресов с именами компьютеров вашей локальной сети.

Кстати, просматривать этот список может быть удобней в .

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

От автора:

Если проблема решена, один из способов сказать «Спасибо» автору — .

Если же проблему разрешить не удалось и появились дополнительные вопросы, задать их можно на нашем , в специальном разделе.

Добрый день, эта статья будет посвящена установке и настройке DHCP на сервере Ubuntu 14.04. В прошлой статье мы говорили о том, как настроить DNS . DHCP очень часто работает в связке с DNS. DHCP раздает адреса, а DNS записывает символьное представление IP-адреса.

И так, приступим. Как всегда я предполагаю, что у Вас установлен сервер Ubuntu 14.04 и он полностью обновлен. Теперь устанавливаем службу DHCP, выполнив команду:

Sudo apt-get install isc-dhcp-server

Служб DHCP в ubuntu привиликое множество, я не буду рассказывать про них. Я предпочитаю именно isc-dhcp-server. После установки рекомендую остановить DHCP службу командой:

Это делается для того, что если у Вас сервер находится в рабочей сети, то чтоб не начал раздавать адреса. Теперь заходим в файл /etc/default/isc-dhcp-server

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

В этом фале находим строку INTERFACES=”” и между кавычек вписываем название сетевого интерфейса на котором будут раздаваться адреса. Чтоб посмотреть какие названия сетевых интерфейсов у Вас есть, выполните команду:

После того как впишите название сетевого интерфейса, у Вас должно получится что то вроде этого:

# Defaults for dhcp initscript
# sourced by /etc/init.d/dhcp
# installed at /etc/default/isc-dhcp-server by the maintainer scripts

#
# This is a POSIX shell fragment
#

# On what interfaces should the DHCP server (dhcpd) serve DHCP requests?
# Separate multiple interfaces with spaces, e.g. "eth0 eth1".
INTERFACES="eth0"

Sudo nano /etc/dhcp/dhcpd.conf

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

Subnet 192.168.0.0 netmask 255.255.255.0 { //указываем подсеть range 192.168.0.2 192.168.0.254; //диапазон выдачи option domain-name-servers 192.168.0.1; //указываем DNS option domain-name "workgroup"; //Доменное имя option routers 192.168.0.1; //Шлюз по умолчанию option broadcast-address 192.168.0.255; //Широковещательный адрес default-lease-time 604800; //время аренды в секундах (7дней) max-lease-time 604800; //максимальное время аренды в секундах (7дней) }

Всё готово, можем запустить:

Sudo service isc-dhcp-server stop

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

Dnssec-keygen -a HMAC-MD5 -b 128 -r /dev/urandom -n USER DHCP_UPDATER

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

Cat Kdhcp_updater.*.private|grep Key

Ключ необходимо записать, он нам понадобится в двух конфигурационных файлах. Теперь открываем /etc/dhcp/dhcpd.conf и в любом месте добавляем:

Key DHCP_UPDATER { //Описание ключа, его алгоритмы algorithm HMAC-MD5.SIG-ALG.REG.INT; secret "ЗДЕСЬ ЗАПИСАННЫЙ КЛЮЧ"; } zone workgroup. { //зона которую DHCP должен обновлять primary 127.0.0.1; key DHCP_UPDATER; } zone 0.168.192.in-addr.arpa. {//обратная зона которую DHCP должен обновлять primary 127.0.0.1; key DHCP_UPDATER; }

Готово, теперь DHCP будет обновлять DNS. Теперь в файле DNS надо разрешить это обновление указав ключ. Открываем файл /etc/bind/named.conf.local и добавляем в него:

Key DHCP_UPDATER { //Описание ключа, его алгоритмы algorithm HMAC-MD5.SIG-ALG.REG.INT; secret "ЗДЕСЬ ЗАПИСАННЫЙ КЛЮЧ"; }

Ищем в этом же фале описание зон workgroup и 0.168.192.in-addr.arpa и в их описание добавляем строку allow-update { key DHCP_UPDATER; }; Должно получится примерно так:

Zone "workgroup" { type master; file "/etc/bind/db.example.com"; allow-update { key DHCP_UPDATER; }; }; zone "0.168.192.in-addr.arpa" { type master; file "/etc/bind/db.0.168.192"; allow-update { key DHCP_UPDATER; }; };

Теперь перезапустим службы DNS и DHCP

Sudo service isc-dhcp-server restart
sudo service bind9 restart

Всё готво, теперь все компьютеры получившие адреса от DHCP будут попадать в DNS.



Есть вопросы?

Сообщить об опечатке

Текст, который будет отправлен нашим редакторам: