DHCP (Dynamic Host Configuration Protocol — протокол динамической настройки узла) — это сетевой протокол, позволяющий серверу автоматически назначать клиентам в сети IP-адреса из определенного пула и предоставлять связанные с ними конфигурационные параметры.
Это означает, что каждый раз, когда клиент, подключенный к сети, загружается, он получает динамический, а не статический IP-адрес. IP-адрес, назначенный клиенту DHCP-сервером, находится в так называемой “аренде”, которая может варьироваться в зависимости от того, насколько клиенту может потребоваться подключение или настройка DHCP.
В этом руководстве мы рассмотрим, как установить и настроить DHCP-сервер в дистрибутивах CentOS/RHEL и Fedora.
Структура тестового окружения
Мы будем использовать следующее тестовое окружение.
DHCP-сервер - CentOS 7
DHCP-клиенты - Fedora 25 и Ubuntu 16.04
Как работает протокол DHCP?
Прежде чем двигаться дальше, давайте кратко объясним, как работает DHCP:
- Когда клиентская машина, настроенная на использование DHCP и подключенная к сети, включена, она посылает сообщение DHCPDISCOVER на DHCP-сервер.
- После того как DHCP-сервер получает сообщение DHCPDISCOVER, он отвечает сообщением DHCPOFFER.
- Затем клиент получает сообщение DHCPOFFER и отправляет на сервер сообщение DHCPREQUEST, означающее, что он готов получить сетевую конфигурацию, предлагаемую в сообщении DHCPOFFER.
- Последнее, но не менее важное, DHCP-сервер получает от клиента сообщение DHCPREQUEST и отправляет сообщение DHCPACK, показывающее, что клиенту теперь разрешено использовать назначенный ему IP-адрес.
Шаг 1: Установка DHCP-сервера на CentOS
- Установка DHCP довольно проста, достаточно всего лишь ввести следующую команду:
# yum -y install dhcp
Важно: предполагается, что к системе подключено более одного сетевого интерфейса, но вам нужно, чтобы DHCP-сервер был запущен лишь на одном из интерфейсов, сделать это можно следующим образом.
- Откройте файл /etc/sysconfig/dhcpd и добавьте имя конкретного интерфейса в список DHCPDARGS, например, если интерфейс eth0, то добавьте:
DHCPDARGS=eth0
Сохраните этот файл и выйдите.
Шаг 2: Настройка DHCP-сервера в CentOS
- Первым шагом настройки DHCP-сервера является создание файла конфигурации dhcpd.conf. Основной файл конфигурации DHCP обычно располагается по пути /etc/dhcp/dhcpd.conf (изначально пуст) и хранит всю сетевую информацию, отправляемую клиентам.
Тем не менее, существует пример уже готового файла конфигурации /usr/share/doc/dhcp*/dhcpd.conf.sample, который является хорошей отправной точкой для настройки DHCP-сервера.
В файле конфигурации DHCP, существует два типа операторов:
- parameters (параметры) — этот оператор определяет как выполнять задачу, выполнять ли задачу вообще и какие параметры конфигурации сети отправлять DHCP-клиенту.
- declarations (объявления) — этот оператор определяет топологию сети, клиентов, предлагает адреса для клиентов и применяет группу параметров к группе объявлений.
Начнём с копирования примера файла конфигурации, в качестве основного файла конфигурации:
# cp /usr/share/doc/dhcp-4.2.5/dhcpd.conf.example /etc/dhcp/dhcpd.conf
- Теперь откройте главный файл конфигурации и задайте параметры DHCP-сервера:
# vi /etc/dhcp/dhcpd.conf
В верхней части файла установите значения глобальных параметров, которые будут применяться ко всем подсетям:
option domain-name "itdoxy.lan";
option domain-name-servers ns1.itdoxy.lan, ns2.itdoxy.lan;
default-lease-time 3600;
max-lease-time 7200;
authoritative;
- Теперь определите подсеть; в этом примере мы настроим DHCP для 192.168.56.0/24 LAN-сети (не забывайте использовать параметры, которые применимы в вашем случае):
subnet 192.168.56.0 netmask 255.255.255.0 {
option routers 192.168.56.1;
option subnet-mask 255.255.255.0;
option domain-search "itdoxy.lan";
option domain-name-servers 192.168.56.1;
range 192.168.56.10 192.168.56.100;
range 192.168.56.120 192.168.56.200;
}
Шаг 3: Присвоение статического IP DHCP-клиенту
Вы можете присвоить статический IP-адрес конкретной клиентской машине в сети, просто определив раздел, описанный ниже, в файле /etc/dhcp/dhcpd.conf, в котором необходимо указать MAC-адреса и назначаемый фиксированный IP адрес:
host ubuntu-node {
hardware ethernet 00:f0:m4:6y:89:0g;
fixed-address 192.168.56.105;
}
host fedora-node {
hardware ethernet 00:4g:8h:13:8h:3a;
fixed-address 192.168.56.110;
}
Сохраните файл и закройте его.
Примечание: Вы можете узнать MAC адрес в Linux, используя следующую команду:
# ifconfig -a eth0 | grep HWaddr
- Теперь запустите службу DHCP и включите её автоматический запуск со следующей загрузки системы, используя команды:
---------- На CentOS/RHEL 7 ----------
systemctl start dhcpd
systemctl enable dhcpd
---------- На CentOS/RHEL 6 ----------
service dhcpd start
chkconfig dhcpd on
- Затем не забудьте разрешить службу DHCP (DHCPD-служба прослушивает порт 67/UDP), как показано ниже:
---------- На CentOS/RHEL 7 ----------
firewall-cmd --add-service=dhcp --permanent
firewall-cmd --reload
---------- На CentOS/RHEL 6 ----------
iptables -A INPUT -p tcp -m state --state NEW --dport 67 -j ACCEPT
service iptables save
Шаг 4: Настройка DHCP-клиентов
- Теперь вы можете настроить своих клиентов в сети на автоматическое получение IP-адресов от DHCP-сервера. Зайдите на клиентскую машину и измените файл конфигурации интерфейса Ethernet следующим образом (заменяя имя/номер интерфейса на свои):
# vi /etc/sysconfig/network-scripts/ifcfg-eth0
Добавьте следующие строки:
DEVICE=eth0
BOOTPROTO=dhcp
TYPE=Ethernet
ONBOOT=yes
Сохраните файл и выйдите.
- Также вы можете выполнить настройку на компьютере с помощью графического интерфейса (GUI), для этого установите Method на Automatic (DHCP), как показано на скриншоте ниже (Ubuntu 16.04 desktop).
- Затем перезапустите сетевые службы следующим образом (вы также можете просто перезагрузить систему):
---------- На CentOS/RHEL 7 ----------
systemctl restart network
---------- На CentOS/RHEL 6 ----------
service network restart
Если все настройки верны, то ваши клиенты станут автоматически получать IP-адреса от DHCP-сервера.
Спасибо за внимание! Надеемся, что данная статья помогла вам. Удачи!
Оригинальная статья: How to Install a DHCP Server in CentOS, RHEL and Fedora