Протокол 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-сервера в centos

Конфігураційний файл 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 "winitpro.ru";
  option routers 15.10.0.1;
  option broadcast-address 15.10.0.255;
  default-lease-time 3600;
  max-lease-time 7200;
}

Короткий опис параметрів, що настроюються DHCP зони:

  • підмережа – адресний простір (IP мережу), яке обслуговує даний DHCP сервер;
  • діапазон – діапазон IP адрес, з якого будуть призначатися адреси пристроїв;
  • опція домен-імена-сервери – адреси DNS серверів, які будуть використовуватися клієнтом;
  • варіант домен-ім’я – параметр задає доменне ім’я, яке клієнти використовують при запитах до DNS;
  • опціональні маршрутизатори – IP адреса шлюзу, який буде використовуватися DHCP клієнтом
  • опція трансляція-адреса – широкомовний (бродкаст) адреса IP мережі;
  • час оренди за замовчуванням, макс. час оренди – час і максимальний час (в сек) на яке видається IP адреса клієнта. Після закінчення цього часу IP клієнт повинен продовжити термін оренди.

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

option domain-name "winitpro.ru";
option domain-name-servers 77.88.8.8, 8.8.8.8;
default-lease-time 3600;
max-lease-time 7200;
authoritative;
log-facility local7;

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

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

dhcpd -t -cf перевірка конфігураційного файлу DHCP сервісу

На скріншоті з цифрою 1 показаний приклад перевірки при правильного налаштування конфігураційного файлу DHCP. У сегменті з цифрою 2 показано, що при наявності помилок в конфігурації утиліта dhcpd вказує на них.

Додайте сервіс dhcpd в автозавантаження і запустіть:

# systemctl enable dhcpd
# systemctl start dhcpd

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

Not configured to listen on any interfaces!

dhcpd Не налаштовано для прослуховування на будь-яких інтерфейсах!

На віртуальній машині у мене два інтерфейси, на одному прописаний білий IP-адреса, а другий порожній. У подібному випадку, потрібно вказати конкретний інтерфейс для роботи DHCP і прописати на ньому адресу з мережі, яку ми будемо роздавати клієнтам.

Відкрийте файл:

# nano /etc/sysconfig/dhcpd

Додайте в нього такий рядок:

DHCPDARGS=ens5

де ens5 – це ім’я мережевого інтерфейсу, якому буде обслуговувати DHCP запити.

Потім створіть файл конфігурації мережевого інтерфейсу (якщо він не створений):

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

TYPE="Ethernet"
DEVICE="ens5"
ONBOOT="yes"
BOOTPROTO="static"
IPADDR="15.10.0.5"
NETMASK="255.255.255.0"
DNS1=77.88.8.8

настройка інтерфейсу на dhcp сервері

Виконайте рестарт мережі:

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

Коли налаштування мережі будуть виконані і застосовані, можна запустити сам сервіс dhcpd:

# systemctl start dhcpd.service

запуск сервера dhcpd в centos linux

Сервіс успішно налаштований і запущений. Щоб 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 {
  hardware ethernet 52:54:00:b6:89:82; fixed-address 15.10.0.101;
}

Як ви бачите, потрібно вказати 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

Щоб не захаращувати основний конфиг 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
Oct 28 00:28:02 server2 dhcpd[2981]: Copyright 2004-2017 Internet Systems Consortium.
Oct 28 00:28:02 server2 dhcpd[2981]: All rights reserved.
Oct 28 00:28:02 server2 dhcpd[2981]: For info, please visit https://www.isc.org/software/dhcp/
Oct 28 00:28:02 server2 dhcpd[2981]: Source compiled to use binary-leases
Oct 28 00:28:02 server2 dhcpd[2981]: Wrote 0 deleted host decls to leases file.
Oct 28 00:28:02 server2 dhcpd[2981]: Wrote 0 new dynamic host decls to leases file.
Oct 28 00:28:02 server2 dhcpd[2981]: Wrote 0 leases to leases file.
Oct 28 00:28:02 server2 dhcpd[2981]: Listening on LPF/ens5/52:54:00:80:be:db/15.10.0.0/24
Oct 28 00:28:02 server2 dhcpd[2981]: Sending on LPF/ens5/52:54:00:80:be:db/15.10.0.0/24
Oct 28 00:28:02 server2 dhcpd[2981]: Sending on Socket/fallback/fallback-net
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
BOOTPROTO=dhcp
TYPE=Ethernet
ONBOOT=yes

Збережіть файл і перезапустіть мережевий сервіс:

# systemctl restart NetworkManager

У моєму випадку IP адреса на інтерфейсі з’явився тільки після перезавантаження сервера:

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

Кілька корисних команд для 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

Leave a Reply

Your email address will not be published. Required fields are marked *