Настройка DHCP на Ubuntu 14.04

Добрый день, эта статья будет посвящена установке и настройке 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 службу командой:

sudo service isc-dhcp-server stop

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

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

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

ifconfig

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

# 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"

Далее идем в файл /etc/dhcp/dhcpd.conf, в котором нам необходимо прописать настройки.

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.