Протокол DHCP (Dynamic Host Configuration Protocol) широко используется в TCP/IP сетях для автоматического назначения IP адресов и других сетевых параметров устройствам в сети. В этой статье мы покажем, как настроить DHCP сервер на CentOS 8, и как настроить 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 зоны:
Некоторые опции 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 порт на нем.
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-сервера окончена.
Теперь посмотрим, как настроить 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
Клиент удаленного рабочего стола (rdp) предоставляет нам возможность войти на сервер терминалов через консоль. Что…
В VMware Workstation есть несколько способов настройки сети гостевой машины: 1) Bridged networking 2) Network…
Встроенный брандмауэр Windows может не только остановить нежелательный трафик на вашем пороге, но и может…
Вопреки распространенному мнению, отключить IPv6 в Windows Vista и Server 2008 это не просто снять…
Параметры экранной заставки для текущего пользователя можно править из системного реестра, для чего: Запустите редактор…
В этой статье расскажу про возможность просмотра журналов событий из командной строки. Эти возможности можно…