Настройка DHCP-сервера на CentOS 6

Собственно когда-то давно я уже занимался настройкой DHCP-сервера в Debian, но с тех пор прошло много лет, всё забылось, а поскольку записей я тогда не вёл, то пришлось вспоминать всё с нуля. Учитывая, что я уже давно работаю исключительно с CentOS и Fedora, то вспомнить оказалось пользительней вдвойне. Итак, быстрая настройка DHCP-сервера за несколько минут в CentOS 6.

Маленькое предисловие

По привычке набрал

yum search dhcp |grep server
чтобы найти пакет с DHCP-сервером, но получил только
dhcp-common.x86_64 : Common files used by ISC dhcp client and server
dnsmasq.x86_64 : A lightweight DHCP/caching DNS server
dnsmasq-utils.x86_64 : Utilities for manipulating DHCP server leases
Грешным делом подумал, что то, что мне нужно - это dnsmasq, но уже установив, понял, что это что-то другое. Безусловно, настроить можно и его, но в статье пойдёт речь не о dnsmasq, а именно о dhcpd. Чтобы вы его не искали скажу сразу, он находится в пакете dhcp, а не dhcpd или dhcp-server как можно было бы ожидать. Поэтому ставьте его командой:
yum install dhcp
и приступим

Файл /etc/dhcp/dhcpd.conf

Собственно, всё что необходимо нам надо будет прописать в этот файл, который по умолчанию идёт пустым. Итак, привожу примерный конфиг и объясняю что к чему:

authoritative;
ddns-update-style interim;
default-lease-time 28800;
max-lease-time 28800;


allow booting;
allow bootp;
option option-128 code 128 = string;
option option-129 code 129 = text;
next-server 192.168.0.1;
filename "/pxelinux.0";


subnet 192.168.0.0 netmask 255.255.255.0 {
        
        option routers                  192.168.0.1;  # default gateway
        option subnet-mask              255.255.255.0;
        option broadcast-address        192.168.0.255;
        option domain-name-servers      8.8.8.8;
        option domain-name              "mydomain.ru";

        pool {
          range                         192.168.0.10 192.168.0.128;

          host computer1 {
            hardware ethernet B8:CA:3A:5F:8E:40;
            fixed-address 192.168.0.10;
          }

          host computer2 {
            hardware ethernet B8:CA:3A:5F:8E:40;
            fixed-address 192.168.0.11;
          }

          deny unknown-clients;
       }
}

Для удобства объяснений, я покрасил строки конфига в разные цвета. Зелёным цветом обозначены те настройки, которые нужны в любом случае:

authoritative; - DHCP-сервер активен

ddns-update-style interim; - тип обновления DNS. Значение interim говорит нашему DHCP-серверу не приставать к DNS-серверу с динамическими обновлениями DNS при выделении IP-адреса новому копьютеру

default-lease-time 28800; - время в секундах по-умолчанию в течение которого будет действителен выданный DHCP адрес

max-lease-time 28800; - максимальное время в секундах в течение которого будет действителен выданный DHCP адрес

Собственно, это далеко не все глобальные настройки, но для нашей статьи я решил ограничится ими, в большинстве случаев их вполне достаточно

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

Теперь перейдём от глобальных директив к описанию собственно того, что мы ждём от DHCP-сервера

subnet 192.168.0.0 netmask 255.255.255.0 - здесь мы говорим, что наш DHCP-сервер будет работать с подсетью 192.168.0.0/24, т.е. адресным пространством от 192.168.0.1 до 192.168.0.255

option routers 192.168.0.1; - это шлюз, который будет передан клиентскому компьютеру, при получении IP адреса по DHCP

option subnet-mask 255.255.255.0; - это маска подсети, которая будет передана клиентскому компьютеру, при получении IP адреса по DHCP

option broadcast-address 192.168.0.255; - это широковещательный адрес, который будет передан клиентскому компьютеру, при получении IP адреса по DHCP

option domain-name-servers 8.8.8.8; - это адреса DNS-серверов, которые будут переданы клиентскому компьютеру, при получении IP адреса по DHCP

option domain-name "mydomain.ru"; - это имя домена, которое будет передано клиентскому компьютеру, при получении IP адреса по DHCP

А вот теперь самое интересное. Если вы чтобы любой компьютер, подключенный к вашей сети, где вы запустите DHCP-сервер получал по DHCP какой-либо адрес из указанного вами диапазона - вы можете удалить секцию с сиреневым и красным цветом и на этом закончить настройку. Но обычно, толковый системный администратор не пускает такие вещи на самотёк и позволяет получать IP адрес по DHCP только проверенным компьютерам. Т.е. если использовать сиреневую секцию, то во-первых, можно сделать диапазон выдаваемых адресов более узким (смотрим строчку pool). А во-вторых, прописать выделение конретных IP адресов по MAC-адресу сетевой карты компьютера. На самом деле это удобно, когда один и тот же компьютер всегда получает один и тот же IP адрес. И наконец последний штрих. Вы используете директиву, обозначенную красным, если не хотите, чтобы какой-то другой компьютер кроме описанных в подсекциях host получал IP адрес с помощью вашего DHCP-сервера

Заключение

Вот собственно и всё. Запускайте сервер командой

/etc/init.d/dhcpd start
или
service dhcpd start

и не забудьте прописать автозапуск dhcpd при загрузке системы:

chkconfig dhcpd on


Автор: Виктор Вислобоков, 24.11.2013