Как настроить 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-serverINTERFACESv4="ens37" INTERFACESv6="ens37" - RedOS
sudo nano /etc/sysconfig/dhcpdDHCPDARGS="ens37" - Alt Linux
su sudo nano /etc/sysconfig/dhcpdDHCPDARGS="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: 2sudo 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.nmconnectionsudo 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=yessu -c "nano /etc/net/ifaces/ens37/ipv4address" root192.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.