bender

Сервер DHCP на базе CentOS 7

Меня зовут Кирилл, и сегодня мы с Вами посмотрим установку третьего сервера из нашей схемы, а именно сервера – DHCP. В принципе – все знают, что этот сервер отвечает за раздачу IP адресов в локальной сети. Но давайте копнём немного глубже – аббревиатура DHCP означает DynamicHostConfigurationProtocol или – Протокол Динамической Настройки Узла. Помимо самого IP-адреса, DHCP сервер может сообщать клиентам массу дополнительных параметров, основные из которых:

  • Маска подсети
  • IP-адрес шлюза
  • Адрес DNS сервера
  • И имя домена DNS

DHCP– это клиент-серверный протокол и работает он примерно следующим образом:

 

  1.  Клиент подключается к сети и делает широковещательный запрос для обнаружения DHCPсерверов.
  2. Получив этот запрос DHCP сервер высылает клиенту ответ с соответствующими настройками, на его MAC
  3. Клиент, получив от сервера настройки – отсылает ему ответ, о том что он эти настройки принял.
  4. В свою очередь, сервер  подтверждает запрос, запоминает, что данный IP уже занят и высылает подтверждение клиенту.
  5. Получив ответ сервера, клиент делает соответствующую настройку сетевого интерфейса.

В наше время DHCP клиент установлен практических во всех операционках. К примеру WINDOWS вообще по умолчанию пытается получить адрес при помощи DHCP-клиента, ну а скажем в консольной версии CentOsдля этого достаточно набрать команду dhclient.

Итак, что же мы увидим в этом ролике?

  • Сервер у нас будет на базе CentOS 7. Т.к. в двух предыдущих сериях я уже показал, как её ставить, а так же как ставить  CentOS 6.5 сегодня мы этого делать не будем и сразу посмотрим как ставить сам DHCP.
  • Затем мы посмотрим файл конфигурации dhcpd.confи сделаем минимум настроек для  нормальной работы.
  • Отдельным моментом  я покажу, как закрепить нужный нам IP – адрес за определённым MAC’ом
  • Ну и под конец, мы всё это дело проверим.

Давайте приступим:

 

yum update -y

 Поставим несколько нужных пакетов:

yum install wget screen vim bash-completion ntp acpid install epel-release-7-2.noarch.rpm -y

Выключим SELinux

vim /etc/selinux/config
# This file controls the state of SELinux on the system.
# SELINUX= can take one of these three values:
#     enforcing - SELinux security policy is enforced.
#     permissive - SELinux prints warnings instead of enforcing.
#     disabled - No SELinux policy is loaded.
SELINUX=disabled
# SELINUXTYPE= can take one of these two values:
#     targeted - Targeted processes are protected,
#     minimum - Modification of targeted policy. Only selected processes are protected.
#     mls - Multi Level Security protection.
SELINUXTYPE=targeted

Установка сервера выполняется предельно просто:

yum install dhcp -y

После установки открываем файл конфигурации:

vim /etc/dhcp/dhcpd.conf

Содержимое файла:

# DHCP Server Configuration file.
#   see /usr/share/doc/dhcp*/dhcpd.conf.example
#   see dhcpd.conf(5) man page
option domain-name "traning.kz";
option domain-name-servers 192.168.10.2;
default-lease-time 32400;
max-lease-time 604800;
min-lease-time 7200;
log-facility local7;
subnet 192.168.10.0 netmask 255.255.255.0 {
range 192.168.10.21 192.168.10.220;
option routers 192.168.10.1;
option subnet-mask 255.255.255.0;
option netbios-name-servers 192.168.10.2;
option broadcast-address 192.168.10.255;
option ntp-servers 192.168.10.2;
}

Так. Давайте здесь сделаем паузу и пройдёмся по основным параметрам этого файла. Вообще  этот файл имеет массу различных нужных и не очень параметров, но для нормальной работы нашего сервера, достаточно тех, что Вы сейчас наблюдаете у себя на экране. Кому интересно может покурить мануал, их в интернете достаточно. Сервер наш будет работать, сам по себе, как выделенный т.е. никакого обновления записей DNS и т.п. мне сейчас не нужно. Но я думаю, после того, как мы поднимем все задуманные сервера, можно будет более подробно рассмотреть каждый из них… Но, а пока, давайте пройдёмся по файлу конфигурации.

optiondomain-name "traning.kz"; тут мы задаём имя нашего домена, именно оно будет передаваться клиенту.

option domain-name-servers 192168.10.2;Адрес нашего DNS – сервера. В нашем случае – адрес контроллера домена с Самбой – 192.168.10.2

Далее идут параметры сроков аренды, задаваемые в секундах:

default-lease-time 32400; - стандартный срок аренды – в моём случае – 9 часов

max-lease-time 604800; - максимальный срок аренды – в моём случае – 7 полных дней

min-lease-time 7200; - минимальный срок аренды – в моём случае – два часа.

log-facility local7; - этот параметр нужен для возможности выноса журнала ведения логов в отдельный файл.

Теперь переходим непосредственно к параметрам нашей подсети:

subnet 192.168.10.0 netmask 255.255.255.0 {

range 192.168.10.21 192.168.10.220; - диапазон адресов, с какого по какой раздавать

optionrouters 192.168.10.1; - адрес маршрутизатора

optionsubnet-mask 255.255.255.0; - маска подсети

option netbios-name-servers 192.168.10.2; - сервер NetBIOS

optionbroadcast-address 192.168.10.255; - Задание широковещательно адреса.

optionntp-servers 192.168.10.2; - Параметр сервера времени. В нашем случае – так же сервер на котором крутится samba.

}

Для индивидуальной раздачи IP по MAC правим добавим ещё секцию:

# DHCP Server Configuration file.
#   see /usr/share/doc/dhcp*/dhcpd.conf.example
#   see dhcpd.conf(5) man page

option domain-name "traning.kz";
option domain-name-servers 192.168.10.2;

default-lease-time 32400;
max-lease-time 604800;
min-lease-time 7200;

log-facility local7;
subnet 192.168.10.0 netmask 255.255.255.0 {
range 192.168.10.21 192.168.10.220;
option routers 192.168.10.1;
option subnet-mask 255.255.255.0;
option netbios-name-servers 192.168.10.2;
option broadcast-address 192.168.10.255;
option ntp-servers 192.168.10.2;
}

host firewall {
hardware ethernet 08:00:27:92:5E:4E;
fixed-address 192.168.10.123;
}

 Смотрим есть ли dhcpd в списке сервисов, которые поддерживает наш firewalld:

firewall-cmd --get-services

 Отлично, вот он:

[root@dhcp ~]# firewall-cmd --get-services
amanda-client bacula bacula-client dhcp dhcpv6 dhcpv6-client dns ftp high-availability http https imaps ipp ipp-client ipsec kerberos kpasswd ldap ldaps libvirt libvirt-tls mdns mountd ms-wbt mysql nfs ntp openvpn pmcd pmproxy pmwebapi pmwebapis pop3s postgresql proxy-dhcp radius rpc-bind samba samba-client smtp ssh telnet tftp tftp-client transmission-client vnc-server wbem-https

 

Добавляем сервис в firewalld:

firewall-cmd --add-service=dhcp --permanent
firewall-cmd --reload

Добавим службу в автозагрузку и сразу запустим её:

systemctl enable dhcpd.service
systemctl start dhcpd.service

 В принципе, на этом всё ;-)