Как настроить DHCP-сервер в Linux (Ubuntu, Debian, RedOS, Alt Linux)

Содержание
- Введение
- Требования
- Шаг 1: Установка DHCP-сервера
- Шаг 2: Конфигурация DHCP-сервера
- Шаг 3: Указание сетевого интерфейса
- Шаг 4: Назначение статического IP интерфейсу
- Шаг 5: Запуск и автозапуск DHCP-сервера
- Заключение
Введение
DHCP (Dynamic Host Configuration Protocol) — это протокол, который автоматически назначает IP-адреса и другие сетевые параметры клиентским устройствам. В Linux-среде DHCP-сервер может быть полезен в локальных сетях, тестовых стендах, школьных/корпоративных лабораториях и других инфраструктурных проектах.
В этом руководстве мы пошагово разберем установку и настройку DHCP-сервера на популярных Linux-дистрибутивах:
- Ubuntu/Debian
- RedOS
- Alt Linux
Требования
- Доступ
root
илиsudo
- Один из дистрибутивов: Ubuntu, Debian, RedOS, Alt Linux
- Минимум один активный сетевой интерфейс (рекомендуется два для маршрутизации)
Шаг 1: Установка DHCP-сервера
У разных дистрибутивов — разные названия пакетов и менеджеры пакетов
- Ubuntu / Debian
sudo apt update sudo apt install isc-dhcp-server nano
- RedOS
sudo dnf update sudo dnf install dhcp-server nano
- Alt Linux
su -c "apt-get update" root su -c "apt-get install dhcp-server nano" root
Шаг 2: Конфигурация DHCP-сервера
- Откройте файл настроек:
sudo nano /etc/dhcp/dhcpd.conf
- Удалите всё содержимое и вставьте этот пример базовой конфигурации:
default-lease-time 600; max-lease-time 7200; authoritative; subnet 192.168.1.0 netmask 255.255.255.0 { range 192.168.1.100 192.168.1.200; option routers 192.168.1.1; option subnet-mask 255.255.255.0; option domain-name-servers 8.8.8.8, 8.8.4.4; }
default-lease-time 600;
- Что делает: задаёт время аренды IP-адреса по умолчанию (в секундах).
- Значение: 600 секунд = 10 минут.
- Пояснение: если клиент не запрашивает конкретную продолжительность аренды, сервер даст IP на 10 минут.
max-lease-time 7200;
- Что делает: определяет максимальное время аренды, которое сервер может выдать.
- Значение: 7200 секунд = 2 часа.
- Пояснение: клиент может запросить аренду на меньшее время, но не больше этого лимита.
authoritative;
- Что делает: сообщает, что этот DHCP-сервер является "авторитетным" для данной сети.
- Зачем нужно: если клиент пытается получить IP, а у него уже есть устаревший лизинг от другого сервера —
authoritative
заставит клиента сбросить старый адрес и запросить новый. - Важно: обязательно указывай эту директиву, если ты уверен, что это единственный DHCP-сервер в сети.
subnet 192.168.1.0 netmask 255.255.255.0 { ... }
- Что делает: определяет сеть, для которой выдаются IP-адреса.
192.168.1.0
— адрес подсети.255.255.255.0
— маска подсети, означает, что сеть содержит адреса от192.168.1.1
до192.168.1.254
.- Всё, что находится внутри фигурных скобок, относится к этой конкретной подсети.
range 192.168.1.100 192.168.1.200;
- Что делает: задаёт диапазон IP-адресов, которые DHCP-сервер может раздавать клиентам.
- В этом случае — от
192.168.1.100
до192.168.1.200
. - Это динамический пул, сервер не раздаст IP за пределами этого диапазона.
option routers 192.168.1.1;
- Что делает: сообщает клиентам IP-адрес шлюза по умолчанию (Default Gateway).
- Это IP-адрес твоего маршрутизатора, через который идёт выход в интернет.
- Обычно это адрес твоего роутера, например
192.168.1.1
.
option subnet-mask 255.255.255.0;
- Что делает: сообщает клиентам маску подсети.
- В этом случае —
/24
, то есть 256 адресов в подсети. - Маска позволяет клиентам понять, какие IP находятся в той же локальной сети.
option domain-name-servers 8.8.8.8, 8.8.4.4;
- Что делает: сообщает клиентам, какие DNS-серверы использовать.
- Здесь указаны публичные DNS от Google.
- Ты можешь указать локальные DNS, например IP своего DNS-сервера или адрес роутера.
Шаг 3: Указание сетевого интерфейса
- Ubuntu / Debian
sudo nano /etc/default/isc-dhcp-server
INTERFACESv4="ens37" INTERFACESv6="ens37"
- RedOS
sudo nano /etc/sysconfig/dhcpd
DHCPDARGS="ens37"
- Alt Linux
su sudo nano /etc/sysconfig/dhcpd
DHCPDARGS="ens37"
ens37
— замените на актуальное имя сетевого интерфейса, узнать можно черезip a
Шаг 4: Назначение статического IP интерфейсу
Для работы DHCP нам нужен статическии IP у интерфейса.
- Ubuntu / Debian
sudo nano /etc/netplan/01-netcfg.yaml
Вместо
01-netcfg.yaml
название файла может быть другим.
Применяем:network: ethernets: ens33: dhcp4: true ens37: # Тут название интерфейса к которму указываем IP dhcp4: no # Запрещаем получение IP по DHCP addresses: - 192.168.2.1/24 # Указываем статическии IP version: 2
sudo netplan apply
- RedOS
sudo nano "/etc/NetworkManager/system-connections/ens37.nmconnection"
Выдаем права:[connection] id=ens37 # Наш интерфейс type=ethernet interface-name=ens37 # Название интерфейса autoconnect=true [ipv4] method=manual # Укзаваем что IP будет статическии address1=192.168.2.1/24 # Указываем наш IP dns-search= ignore-auto-dns=true [ipv6] method=ignore
Применяем:sudo chmod 600 /etc/NetworkManager/system-connections/ens37.nmconnection
sudo nmcli connection up "ens37"
- Alt Linux
su -c "mkdir /etc/net/ifaces/ens37" root su -c "nano /etc/net/ifaces/ens37/options" root
Указываем IP:BOOTPROTO=static TYPE=eth NM_CONTROLLED=no ONBOOT=yes SYSTEMD_CONTROLLED=yes CONFIG_IPV4=yes
su -c "nano /etc/net/ifaces/ens37/ipv4address" root
192.168.1.1/24
Шаг 5: Запуск и автозапуск DHCP-сервера
- Ubuntu / Debian
sudo systemctl enable --now isc-dhcp-server
- RedOS
sudo systemctl enable --now dhcpd
- Alt Linux
su -c "systemctl enable --now dhcpd" root
Заключение
Теперь у вас развернут полноценный DHCP-сервер под Linux. Это идеальное решение для автоматизации IP-адресации в изолированных или локальных сетях. Поддерживается всеми основными дистрибутивами и может быть расширен до корпоративного уровня с функциями PXE, статической выдачи и управления из LDAP.