Categories: CentOSlinux

Установка и настройка DHCP сервера и клиента на CentOS/RHEL

Протокол DHCP (Dynamic Host Configuration Protocol) широко используется в TCP/IP сетях для автоматического назначения IP адресов и других сетевых параметров устройствам в сети. В этой статье мы покажем, как настроить DHCP сервер на CentOS 8, и как настроить DHCP клиента в этой ОС для автоматического получения настроек сети от сервера.

Установка и базовая настройка DHCP

В CentOS/RHEL можно установить DHCP-сервер с помощью менеджера пакетов из базового репозитория :

# dnf install dhcp-server -y – установка DHCP сервера для CentOS/RHEL 8

# yum install dhcp -y – установка DHCP сервера для CentOS/RHEL 7

Конфигурационный файл DHCP сервиса — /etc/dhcp/dhcpd.conf . Откройте в него и добавьте описание DHCP зоны (IP подсети) с настройками, которые ваш DHCP сервер должен выдавать клиентам.

# nano /etc/dhcp/dhcpd.conf

subnet 15.10.0.0 netmask 255.255.255.0 { range 15.10.0.100 15.10.0.200; option domain-name-servers 77.88.8.8, 8.8.8.8; option domain-name "remontka.com"; option routers 15.10.0.1; option broadcast-address 15.10.0.255; default-lease-time 3600; max-lease-time 7200; }

Краткое описание настраиваемых параметров DHCP зоны:

  • subnet – адресное пространство (IP сеть), которое обслуживает данный DHCP сервер;
  • range – диапазон IP адресов, из которого будут назначаться адреса устройствам;
  • option domain-name-servers – адреса DNS серверов, которые будут использоваться клиентом;
  • option domain-name — параметр задает доменное имя, которое клиенты используют при запросах к DNS;
  • option routers — IP адрес шлюза, который будет использоваться DHCP клиентом
  • option broadcast-address — широковещательный (бродкаст) адрес IP сети;
  • default-lease-time, max-lease-time – время и максимальное время (в сек) на которое выдается IP адрес клиенту. После истечения этого времени IP клиент должен продлить срок аренды.

Некоторые опции DHCP можно задать на уровне глобальных параметров DCHP сервера (в начале файла dhcpd.conf). Например:

option domain-name "remontka.com";_x000D_option domain-name-servers 77.88.8.8, 8.8.8.8;_x000D_default-lease-time 3600;_x000D_max-lease-time 7200;_x000D_authoritative;_x000D_ log-facility local7;

Для проверки корректность настройки конфигурационного файла DHCP сервера используется команда:

# dhcpd -t -cf /etc/dhcp/dhcpd.conf

На скриншоте с цифрой 1 показан пример проверки при корректной настройке конфигурационного файла DHCP. В сегменте с цифрой 2 показано, что при наличии ошибок в конфигурации утилита dhcpd указывает на них.

Добавьте сервис dhcpd в автозагрузку и запустите:

# systemctl enable dhcpd
# systemctl start dhcpd

У меня сразу сервис не запустился. Служба dhcpd вернула ошибку:

Not configured to listen on any interfaces!

На виртуальной машине у меня два интерфейса, на одном прописан белый IP-адрес, а второй пустой. В подобном случае, нужно указать конкретный интерфейс для работы DHCP и прописать на нем адрес из сети, которую мы будем раздавать клиентам.

Откройте файл:

# nano /etc/sysconfig/dhcpd

Добавьте в него следующую строку:

DHCPDARGS=ens5

Где ens5 — это имя сетевого интерфейса, котором будет обслуживать DHCP запросы.

Затем создайте файл конфигурации сетевого интерфейса (если он не создан):

# nano /etc/sysconfig/network-scripts/ifcfg-ens5

TYPE="Ethernet"_x000D_DEVICE="ens5"_x000D_ONBOOT="yes"_x000D_ BOOTPROTO="static"_x000D_IPADDR="15.10.0.5"_x000D_NETMASK="255.255.255.0"_x000D_DNS1=77.88.8.8

Выполните рестарт сети:

# service network restart – для CentOS/RHEL 7
# systemctl restart NetworkManager – для CentOS/RHEL 8

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

# systemctl start dhcpd.service

Сервис успешно настроен и запущен. Чтобы DHCP-клиент мог получить адрес с нашего сервера, нужно добавить сервис в исключения в firewalld :

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

Если вы используете другой файерволл, откройте 67 UDP порт на нем.

Резервирование IP адресов на DHCP сервере

DHCP сервер выдает динамические IP адреса. Это значит, что IP адрес, назначаемый конкретному клиенту может иногда меняться. В конфигурационном файле DHCP сервера вы можете зарезервировать (зафиксировать) для любого клиента конкретный статический IP адрес. Просто добавьте в файл /etc/dhcp/dhcpd.conf следующие строки:

host host1 {_x000D_ hardware ethernet 52:54:00:b6:89:82; fixed-address 15.10.0.101;_x000D_}

Как вы видите, нужно указать MAC-адрес устройства и зафиксированный за ним IP адрес из зоны DHCP, которую обслуживает сервер.

Не обязательно располагать отдельный DHCP сервер в каждом сегменте сети. Один DCHP сервер может обслуживать любое количество IP-подсетей. В этом случае на уровне маршрутизатора IP сегмента нужно настроить пересылку DHCP запросов на ваш сервер (функция DHCP-relay или ip helper-address в терминологии Cisco).

В конфигурационном файле dhcpd можно добаить несколько зон DHCP. Просто добавьте еще один блок:

subnet xxx.xxx.xxx.xxx netmask 255.xxx.xxx.xxx {...} 

# nano /etc/dhcp/dhcpd.conf

Чтобы не загромождать основной конфиг dhcpd, вы можете с помощью функции include подключать дополнительные файлы конфигурации:

include "/etc/dhcp/conf.d/subnets.conf";

В файле subnets.conf можно описать все DCHP зоны, которые обслуживаются вашим сервером.

Для просмотра списка IP адресов, которые выданы клиентам вашим DHCP-сервером, используйте команду:

# cat /var/lib/dhcpd/dhcpd.leases

Все логи DHCP по умолчанию пишутся в файл /var/log/messages . Для фильтрации событий dhcp можно использовать команду:

# cat /var/log/messages | grep dhcp

Или перенастроить сохранение журнала в отдельный файл, через rsyslog . В файл /etc/rsyslog.conf добавьте строку:

local6.* /var/log/dhcp.log

А в файл /etc/dhcp/dhcpd.conf строку:

log-facility local6;

Перезапустите оба сервиса:

# systemctl restart rsyslog
# systemctl restart dhcpd

Теперь все события DHCP сервера пишутся в отдельный лог-файл.

# cat /var/log/dhcp.log

Oct 28 00:28:02 server2 dhcpd[2981]: Internet Systems Consortium DHCP Server 4.3.6_x000D_Oct 28 00:28:02 server2 dhcpd[2981]: Copyright 2004-2017 Internet Systems Consortium._x000D_Oct 28 00:28:02 server2 dhcpd[2981]: All rights reserved._x000D_Oct 28 00:28:02 server2 dhcpd[2981]: For info, please visit https://www.isc.org/software/dhcp/_x000D_Oct 28 00:28:02 server2 dhcpd[2981]: Source compiled to use binary-leases_x000D_Oct 28 00:28:02 server2 dhcpd[2981]: Wrote 0 deleted host decls to leases file._x000D_Oct 28 00:28:02 server2 dhcpd[2981]: Wrote 0 new dynamic host decls to leases file._x000D_Oct 28 00:28:02 server2 dhcpd[2981]: Wrote 0 leases to leases file._x000D_Oct 28 00:28:02 server2 dhcpd[2981]: Listening on LPF/ens5/52:54:00:80:be:db/15.10.0.0/24_x000D_Oct 28 00:28:02 server2 dhcpd[2981]: Sending on LPF/ens5/52:54:00:80:be:db/15.10.0.0/24_x000D_Oct 28 00:28:02 server2 dhcpd[2981]: Sending on Socket/fallback/fallback-net_x000D_Oct 28 00:28:02 server2 dhcpd[2981]: Server starting service.

На этом настройка и отладка DHCP-сервера окончена.

Получение сетевых настроек DCHP клиентом

Теперь посмотрим, как настроить DHCP клиент в CentOS и получить IP адрес от DHCP сервера. Я добавил дополнительный интерфейс на вторую виртуальную машину с CentOS. Теперь нужно создать файл конфигурации для этого интерфейса:

# nano /etc/sysconfig/network-scripts/ifcfg-ens5

Внесите в него следующие параметры:

DEVICE=ens5_x000D_BOOTPROTO=dhcp_x000D_TYPE=Ethernet_x000D_ONBOOT=yes

Сохраните файл и перезапустите сетевой сервис:

# systemctl restart NetworkManager

В моем случае IP адрес на интерфейсе появился только после перезагрузки сервера:

3: ens5: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000_x000D_link/ether 52:54:00:b6:89:82 brd ff:ff:ff:ff:ff:ff_x000D_inet 15.10.0.101/8 brd 15.255.255.255 scope global noprefixroute ens5_x000D_

Несколько полезных команд для DHCP-клиента:

# dhclient -r ens5 – освободить текущий IP адрес
# dhclient -v ens5 – получить новый IP адрес у DHCP сервера
# dhclient -v ens5 -H testserver – указать имя клиента

Имя клиента вы можете прописать на сервере(dhcp-клиенте) в файле /etc/dhcp/dhclient.conf , Добавьте строку:

send host-name "testserver";

Перезапустите DHCP-клиент:

# dhclient -r ens5
# dhclient -v ens5

admin

Share
Published by
admin

Recent Posts

Консоль удаленного рабочего стола(rdp console)

Клиент удаленного рабочего стола (rdp) предоставляет нам возможность войти на сервер терминалов через консоль. Что…

2 месяца ago

Настройка сети в VMware Workstation

В VMware Workstation есть несколько способов настройки сети гостевой машины: 1) Bridged networking 2) Network…

2 месяца ago

Логи брандмауэра Windows

Встроенный брандмауэр Windows может не только остановить нежелательный трафик на вашем пороге, но и может…

2 месяца ago

Правильный способ отключения IPv6

Вопреки распространенному мнению, отключить IPv6 в Windows Vista и Server 2008 это не просто снять…

2 месяца ago

Ключи реестра Windows, отвечающие за параметры экранной заставки

Параметры экранной заставки для текущего пользователя можно править из системного реестра, для чего: Запустите редактор…

2 месяца ago

Как управлять журналами событий из командной строки

В этой статье расскажу про возможность просмотра журналов событий из командной строки. Эти возможности можно…

2 месяца ago