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

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

Постер статьи

Содержание

Введение

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-сервера

  1. Откройте файл настроек:
    sudo nano /etc/dhcp/dhcpd.conf
    
  2. Удалите всё содержимое и вставьте этот пример базовой конфигурации:
    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 
    
    BOOTPROTO=static
    TYPE=eth
    NM_CONTROLLED=no
    ONBOOT=yes
    SYSTEMD_CONTROLLED=yes
    CONFIG_IPV4=yes
    
    Указываем IP:
    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.