вторник, 16 декабря 2014 г.

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

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


Установка

Установка DHCP-сервера весьма простая - устанавливаем его из репозитория:
yum -y install dhcp

Конфигурация

В первую очередь назначаем сетевой интерфейс, на котором будет работать наш DHCP-сервер. Для этого редактируем файл /etc/sysconfig/dhcpd и указываем имя нужного интерфейса в параметре DHCPDARGS. В данном примере DHCPDARGS=eth0, т.е. наш DHCP-сервер будет слушать интерфейс eth0.
Далее переходим к написанию файла конфигурации.
В стандартной установке доступен достаточно объёмный пример файла конфигурации, содержащий параметры для различных сценариев работы DHCP-сервера. Его можно (но в моём примере не нужно) установить командой
cp /usr/share/doc/dhcp-4.1.1/dhcpd.conf.sample /etc/dhcp/dhcpd.conf
Однако этот файл, на мой взгляд не слишком нагляден и для базовой установки DHCP-сервера перегружен лишними параметрами и комментариями. По этой причине создаём новый пустой файл dhcpd.conf
touch /etc/dhcp/dhcpd.conf
и пишем с нуля конфигурацию следующего вида:
option domain-name "mydomain.ru";
option domain-name-servers 8.8.8.8, 8.8.4.4;
option ntp-servers 192.168.72.1, 192.168.72.2;
option tftp-server-name "192.168.2.100";
default-lease-time 600;
max-lease-time 7200;
authoritative;
log-facility local7;

subnet 192.168.2.0 netmask 255.255.255.0 {
 range 192.168.2.151 192.168.2.159;
 option routers 192.168.2.1;
 option broadcast-address 192.168.2.255;
}

host AirCam {
  hardware ethernet 24:a4:3c:39:61:7f;
  fixed-address 192.168.2.160;
}
Теперь пояснения по конфигурации.
В первую очередь идут глобальные параметры. Если они далее в конфигурации не будут переопределены в описании подсетей или хостов, они будут использованы по-умолчанию.
option domain-name "mydomain.ru" - имя домена
option domain-name-servers 8.8.8.8, 8.8.4.4 - первый и второй DNS-сервера, который будет выдавать клиентам наш DHCP-сервер.
option ntp-servers 192.168.72.1, 192.168.72.2 - NTP-сервера, выдаваемые клиентам. Данная опция может быть полезна для IP-телефонов.
option tftp-server-name "192.168.2.100" - сервер TFTP. Данная опция может быть использована например IP-телефонами или другими клиентскими устройствами для получения конфигурации и/или прошивки с TFTP-сервера (очень актуально для IP-телефонов Cisco). Этот параметр является строковым, поэтому обязательно указывается в кавычках.
default-lease-time 600 - время аренды выданного клиенту IP-адреса в секундах (по-умолчанию, если клиент не запросит больше).
max-lease-time 7200 - максимально возможное время аренды.
authoritative - говорит о том, что данный DHCP-сервер является главным (официальным) в локальной сети.
log-facility local7 - очередь Syslog, в которую будут отправляться логи DHCP-сервера.

Переходим к описанию подсети 192.168.2.0/24
subnet 192.168.2.0 netmask 255.255.255.0 - говорит нам о том, что далее в этой секции будут описаны параметры да подсети 192.168.2.0/24.
range 192.168.2.151 192.168.2.159 - диапазон IP-адресов, выдаваемых клиентам.
option routers 192.168.2.1 - шлюз по-умолчанию в данной подсети
option broadcast-address 192.168.2.255 - широковещательный адрес данной подсети.

Если необходимо статически закрепить конкретный IP-адрес за определённым устройством, то для этого устройства создаётся отдельная секция host со следующими параметрами:
hardware ethernet 24:a4:3c:39:61:7f - MAC-адрес устройства, по которому его будет идентифицировать DHCP-сервер.
fixed-address 192.168.2.160 - собственно, статически закреплённый за данным устройством IP-адрес.

Другие полезные опции dhcpd можно посмотреть здесь.

После подготовки конфигурационного файла, сохраняем его и перезапускаем DHCP-сервер:
service dhcpd restart
И вот тут могут быть грабли - сервер может не запуститься. Если такое произошло, прежде всего, проверьте правильность написания конфигурации. Если в конфигурации ошибок нет, то скорее всего виноват SELinux. И тут есть два варианта: либо совсем его отключить, либо добавить dhcpd в исключения. Рассмотрим оба варианта.

Вариант 1. Отключение SELinux.
Редактируем конфигурационный файл
vi /etc/selinux/config
и устанавливаем в нём параметр SELINUX=disabled
После данной операции обязательно потребуется перезагрузка системы.

Вариант 2. Добавление dhcpd в исключение SELinux.
Устанавливаем необходимые пакеты для конфигурирования политик SELinux
yum -y install policycoreutils-python
и следующей командой добавляем dhcpd в исключения SELinux
semanage permissive -a dhcpd_t

После выполнения вышеуказанных действий (вариант 1 или вариант 2), снова перезапускаем dhcpd:
[root@localhost ~]# service dhcpd restart
Shutting down dhcpd:                                       [  OK  ]
Starting dhcpd:                                            [  OK  ]
Теперь наш сервер запустился, слушает интерфейс eth0, и готов раздавать адреса из указанного в конфигурации пула.

Комментариев нет:

Отправить комментарий