Найти в Дзене
Евгений Лощаков

Установка и настройка DHCP сервера на базе Debian

DHCP (Dynamic Host Configuration Protocol) — это сетевой протокол, который автоматически назначает IP-адреса и другие сетевые параметры устройствам в сети. Область (Scope) — диапазон IP-адресов для раздачи
Аренда (Lease) — время, на которое выдается IP-адрес
Резервирование — постоянное назначение IP конкретному устройству Аппаратные требования: Сетевые требования: Проверка текущих настроек в терминале введите ip a: На данном скрине можно увидеть следующие сетевые: 1. Интерфейс lo (Loopback) 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000 link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 inet 127.0.0.1/8 scope host lo valid_lft forever preferred_lft forever inet6 ::1/128 scope host valid_lft forever preferred_lft forever Назначение: Используется для сетевых служб, работающих на самом сервере, чтобы обращаться самим к себе (например, база данных на localhost). 2. Интерфейс enp0s3 (Первый сетевой адаптер) 2: enp0s3: <BROADCAST,MULTICAST,UP,L
Оглавление

🔹 Введение: Что такое DHCP и зачем он нужен?

DHCP (Dynamic Host Configuration Protocol) — это сетевой протокол, который автоматически назначает IP-адреса и другие сетевые параметры устройствам в сети.

Проблема, которую решает DHCP:

  • Ручное назначение IP-адресов — трудоемко и подвержено ошибкам
  • Конфликты IP-адресов — когда два устройства имеют одинаковый IP
  • Изменение сетевых параметров — сложно обновлять на всех устройствах

Преимущества использования DHCP:

  • Автоматизация — устройства получают настройки автоматически
  • Централизованное управление — все настройки в одном месте
  • Минимизация ошибок — исключены конфликты IP-адресов
  • Гибкость — легко изменить параметры сети
  • Экономия времени — быстрое подключение новых устройств

Сценарии применения:

  • Корпоративные сети — офисы, предприятия
  • Образовательные учреждения — школы, университеты
  • Гостевые сети Wi-Fi — кафе, отели, аэропорты
  • Домашние сети — роутеры с DHCP
  • Виртуальные среды — VMware, VirtualBox сети

🔹 1. Принцип работы DHCP

1.1. Процесс получения IP-адреса (DORA)

  1. DISCOVER — клиент ищет DHCP-сервер
  2. OFFER — сервер предлагает IP-адрес
  3. REQUEST — клиент принимает предложение
  4. ACKNOWLEDGE — сервер подтверждает назначение

1.2. Основные понятия

Область (Scope) — диапазон IP-адресов для раздачи
Аренда (Lease) — время, на которое выдается IP-адрес
Резервирование — постоянное назначение IP конкретному устройству

🔹 2. Подготовка к установке

2.1. Предварительные требования

Аппаратные требования:

  • Любой компьютер с Debian
  • Минимум 512 МБ ОЗУ
  • 1 ГБ свободного места
  • Сетевой интерфейс

Сетевые требования:

  • Статический IP-адрес на сервере
  • Подключение к целевой сети
  • Отсутствие других DHCP-серверов

2.2. Настройка статического IP-адреса

Проверка текущих настроек в терминале введите ip a:

На данном скрине можно увидеть следующие сетевые:

1. Интерфейс lo (Loopback)

1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000

link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00

inet 127.0.0.1/8 scope host lo

valid_lft forever preferred_lft forever

inet6 ::1/128 scope host

valid_lft forever preferred_lft forever

  • lo: Имя интерфейса. Это виртуальный loopback-интерфейс.
  • <LOOPBACK,UP,LOWER_UP>: Флаги состояния интерфейса.
    LOOPBACK - это зарезервированный интерфейс для коммуникации внутри самого хоста.
    UP - интерфейс включен и работает.
  • mtu 65536: Maximum Transmission Unit — максимальный размер блока данных (в байтах), который можно передать за один раз. Для loopback он большой, так как нет реального оборудования.
  • state UNKNOWN: Специфическое состояние для loopback-интерфейса.
  • link/loopback ...: Тип ссылки и MAC-адрес. Для loopback он всегда нулевой.
  • inet 127.0.0.1/8: Назначенный IPv4-адрес. Адрес 127.0.0.1 и вся сеть 127.0.0.0/8 используются для обратной связи (localhost).
    scope host: Означает, что адрес действителен только внутри этого хоста и не может быть использован для внешней связи.
  • inet6 ::1/128: IPv6-адрес loopback-интерфейса (аналог 127.0.0.1 для IPv6).
  • valid_lft forever preferred_lft forever: Время жизни адреса. "forever" означает, что адрес статический и не имеет срока действия.

Назначение: Используется для сетевых служб, работающих на самом сервере, чтобы обращаться самим к себе (например, база данных на localhost).

2. Интерфейс enp0s3 (Первый сетевой адаптер)

2: enp0s3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000

link/ether 08:00:27:75:87:a1 brd ff:ff:ff:ff:ff:ff

altname enx0800277587a1

inet 10.0.2.15/24 brd 10.0.2.255 scope global dynamic noprefixroute eng0s3

valid_lft 86092sec preferred_lft 75292sec

inet6 fe80::a00:27ff:fe75:87a1/64 scope link

valid_lft forever preferred_lft forever

  • enp0s3: Имя интерфейса.
  • <BROADCAST,MULTICAST,UP,LOWER_UP>:
    BROADCAST - интерфейс поддерживает широковещательную передачу.
    MULTICAST - интерфейс поддерживает многоадресную передачу.
    UP - интерфейс включен.
    LOWER_UP - на физическом уровне есть соединение (кабель "вставлен").
  • mtu 1500: Стандартный MTU для Ethernet-сетей.
  • qdisc fq_codel: Алгоритм управления очередью пакетов (Queueing Discipline). fq_codel — современный алгоритм для борьбы с буферизацией и улучшения отзывчивости.
  • state UP: Интерфейс активен.
  • link/ether 08:00:27:75:87:a1: Аппаратный (MAC) адрес интерфейса.
  • inet 10.0.2.15/24: Назначенный IPv4-адрес.
    /24: Маска сети (255.255.255.0). Это означает, что сеть — 10.0.2.0, в которой доступно 254 хоста.
    brd 10.0.2.255: Широковещательный (broadcast) адрес для этой сети.
    scope global: Адрес является глобальным и может использоваться для связи с другими сетями.
    dynamic: Ключевой параметр! Адрес был получен автоматически от DHCP-сервера.
    valid_lft ... preferred_lft ...: Время жизни DHCP-аренды. Адрес будет действителен еще 86092 секунд, но предпочтительное время истекает через 75292 секунды (после этого клиент попытается обновить аренду).
  • inet6 fe80::a00:27ff:fe75:87a1/64: Это Link-Local IPv6-адрес.
    scope link: Адрес действителен только в пределах непосредственного сетевого сегмента (линка) и не маршрутизируется. Используется для служебных целей и соседнего обнаружения.

Назначение: Основной интерфейс для выхода во внешнюю сеть Интернет. Он используется для подключения к роутеру, и через него будет подключение к интернету.

3. Интерфейс enp0s8 (Второй сетевой адаптер)

3: enp0s8: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000

link/ether 08:00:27:70:79:49 brd ff:ff:ff:ff:ff:ff

altname enx080027707949

  • Этот интерфейс имеет те же базовые настройки, что и eng0s3 (включен, есть канал, тот же MTU и т.д.).
  • Ему назначен MAC-адрес 08:00:27:70:79:49.
  • Ключевое отличие: У этого интерфейса не назначен ни IPv4, ни IPv6 адрес (кроме автоматического link-local IPv6, который не отображается, пока он не используется). Это "голый" L2-интерфейс.

Итог

  • lo: Работает корректно, стандартная конфигурация.
  • enp0s3: Основной работающий интерфейс. Получил настройки по DHCP в сети 10.0.2.0/24. Это стандартная сеть NAT по умолчанию, которая будет использоваться для выхода в интернет.
  • enp0s8: Второй сетевой интерфейс, физически активен, но не имеет IP-конфигурации. Требует дополнительной настройки для использования. Этот интерфейс и будет использоваться в локальной сети, и ему необходимо выдать соответствующий IP-адрес.

Наиболее простой способ назначить IP-адрес — это воспользоваться утилитой nmtui. Для начала установим её следующей командой командой

sudo apt install -y network-manager

Запускаем утилиту nmtui

-2

Выбираем редактировать подключение

-3

Выбираем изменить сетевое подключение. В нем сверяем mac адреса, чтобы убедиться, что настраиваем нужную сетевую.

-4
-5

Далее ставим Конфигурацию IPv4 вручную и нажимаем на показать

-6

Далее, так как данный интерфейс направлен на внутреннюю локальную сеть, то добавляем IP-адрес с маской, остальные параметры тут пока не понадобятся.

-7

Нажимаем «ОК» и возвращаемся в первоначальное меню, в нем выбираем «Активировать подключение».

-8

В нем сначала необходимо деактивировать, а потом активировать нужную сетевую, чтобы настройки вступили в силу.

-9

После этого выходим из программы и проверяем полученные настройки через команду ip a.

-10

2.3. Обновление системы

Перед установкой программ рекомендуется сначала провести обновление репозиториев и программ.

sudo apt update

-11

sudo apt upgrade -y

-12

🔹 3. Установка DHCP-сервера

В качестве DHCP-сервера на Debian рекомендуется использовать пакет isc-dhcp-server.

Что это?
isc-dhcp-server - это DHCP-сервер от Internet Systems Consortium, который автоматически раздает IP-адреса и сетевые настройки клиентам в локальной сети.

Что делает:

  • Автоматически назначает IP-адреса устройствам в сети
  • Указывает клиентам шлюз по умолчанию, DNS-серверы и другие параметры
  • Поддерживает статические (фиксированные) IP-адреса для определенных устройств по MAC-адресу

Почему рекомендуют на Debian:

  1. Стандарт де-факто - самый распространенный и проверенный временем DHCP-сервер
  2. Стабильность - надежно работает годами без сбоев
  3. Простота настройки - один конфигурационный файл (/etc/dhcp/dhcpd.conf)
  4. Полная документация - отличная man-страница и много примеров
  5. Поддержка сообщества - легко найти помощь и готовые конфиги
  6. В репозиториях Debian - устанавливается одной командой:bashsudo apt install isc-dhcp-server

Типичное использование:

  • Роутеры и шлюзы
  • Виртуальные сети и лаборатории
  • Корпоративные сети
  • Домашние сети с продвинутой настройкой

Минусы:

  • Только консольное управление (нет веб-интерфейса)
  • Требует редактирования конфиг-файлов вручную

3.1. Установка пакета isc-dhcp-server

# Установка DHCP-сервера

sudo apt install -y isc-dhcp-server

# Проверка установки

dpkg -l | grep dhcp

-13

3.2. Структура конфигурационных файлов

Основные файлы:

  • /etc/dhcp/dhcpd.conf — основной файл конфигурации
  • /etc/default/isc-dhcp-server — настройки службы
  • /var/lib/dhcp/dhcpd.leases — база данных аренд

🔹 4. Настройка DHCP-сервера

4.1. Настройка сетевого интерфейса

Редактируем файл настроек службы:

sudo nano /etc/default/isc-dhcp-server

# Укажите интерфейс, на котором будет работать DHCP

INTERFACESv4="enp0s8"

INTERFACESv6=""

4.2. Основная конфигурация DHCP

Редактируем основной конфигурационный файл:

sudo nano /etc/dhcp/dhcpd.conf

Базовая конфигурация:

# Глобальные настройки

option domain-name "company.local";

option domain-name-servers 8.8.8.8, 1.1.1.1;

default-lease-time 600;

max-lease-time 7200;

authoritative;

# Логгирование

log-facility local7;

# Основная подсеть

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 broadcast-address 192.168.1.255;

option domain-name-servers 8.8.8.8, 1.1.1.1;

default-lease-time 600;

max-lease-time 7200;

}

4.3. Пояснение параметров конфигурации

Глобальные параметры:

-14

4.4. Расширенная конфигурация

Конфигурация с исключениями и резервированиями:

# Основная подсеть с исключениями

subnet 192.168.1.0 netmask 255.255.255.0 {

# Диапазон для динамической раздачи

range 192.168.1.100 192.168.1.200;

# Исключения (адреса, которые НЕ будут раздаваться)

# Сетевое оборудование

range 192.168.1.1 192.168.1.10;

# Резерв для серверов

range 192.168.1.50 192.168.1.60;

# Основной шлюз

option routers 192.168.1.1;

# Маска подсети

option subnet-mask 255.255.255.0;

# DNS-серверы

option domain-name-servers 192.168.1.10, 8.8.8.8;

# Доменное имя

option domain-name "company.local";

# Время аренды

default-lease-time 86400; # 24 часа

max-lease-time 172800; # 48 часов

# Статическое резервирование для принтера

host printer {

hardware ethernet 00:1A:2B:3C:4D:5E;

fixed-address 192.168.1.30;

}

# Резервирование для сетевого хранилища

host nas {

hardware ethernet 00:1B:2C:3D:4E:5F;

fixed-address 192.168.1.31;

option host-name "nas";

}

}

4.5. Резервирование адресов по MAC-адресу

Чтобы найти MAC-адрес устройства необходимо в терминале ввести следующие команды:

# На Linux-клиенте, чтобы запустить терминал нажмите комбинацию клавиш ctrl+alt+t()

ip link show

-15

# На Windows-клиенте, чтобы зайти в командную строку, нажмите комбинацию клавиш Win+R и в окне «Выполнить» наберите cmd.

ipconfig /all

Добавление резервирования в dhcpd.conf на сервере:

# Резервирование для сервера

host server-backup {

hardware ethernet 08:00:27:aa:bb:cc; # MAC-адрес

fixed-address 192.168.1.40; # Постоянный IP

option host-name "backup-server"; # Имя хоста

}

# Резервирование для IP-камеры

host camera-01 {

hardware ethernet 08:00:27:dd:ee:ff;

fixed-address 192.168.1.41;

}

🔹 5. Запуск и управление службой

5.1. Проверка конфигурации

# Проверка синтаксиса конфигурации

sudo dhcpd -t

-16

# Проверка конфигурации для конкретного интерфейса

sudo dhcpd -4 -cf /etc/dhcp/dhcpd.conf enp0s8

-17

5.2. Запуск и включение службы

# Остановка службы

sudo systemctl stop isc-dhcp-server

# Перезапуск службы

sudo systemctl restart isc-dhcp-server

# Перезагрузка конфигурации

sudo systemctl reload isc-dhcp-server

🔹 6. Мониторинг и диагностика

6.1. Просмотр арендованных адресов

# Просмотр базы данных аренд

sudo cat /var/lib/dhcp/dhcpd.leases

-18

# Поиск активных аренд

sudo dhcp-lease-list

-19

# Просмотр в реальном времени

sudo tail -f /var/lib/dhcp/dhcpd.leases

-20

6.2. Анализ логов

# Просмотр системных логов

sudo tail -f /var/log/syslog | grep dhcp

# Специфичные логи DHCP

sudo journalctl -u isc-dhcp-server -n 50

6.3. Диагностика сети

На клиенте (для тестирования):

# Освобождение текущего IP

sudo dhclient -r

# Запрос нового IP

sudo dhclient

# Просмотр полученных настроек

ip addr show

-21

🔹 7. Расширенные настройки

7.1. Настройка для нескольких подсетей

# Подсеть 1 - Основная сеть

subnet 192.168.1.0 netmask 255.255.255.0 {

range 192.168.1.100 192.168.1.150;

option routers 192.168.1.1;

option domain-name-servers 8.8.8.8;

}

# Подсеть 2 - Гостевая сеть

subnet 192.168.2.0 netmask 255.255.255.0 {

range 192.168.2.100 192.168.2.200;

option routers 192.168.2.1;

option domain-name-servers 1.1.1.1;

default-lease-time 3600; # 1 час для гостей

max-lease-time 7200; # 2 часа максимум

}

7.2. Настройка разных классов клиентов

# Класс для VoIP телефонов

class "voip-phones" {

match if substring (option vendor-class-identifier, 0, 4) = "AVAY";

}

subnet 192.168.1.0 netmask 255.255.255.0 {

# Общий диапазон

range 192.168.1.100 192.168.1.200;

# Специальные настройки для VoIP

pool {

range 192.168.1.201 192.168.1.220;

allow members of "voip-phones";

option routers 192.168.1.1;

option domain-name-servers 192.168.1.10;

}

}

7.3. Резервный DHCP-сервер

На основном сервере:

# Включаем поддержку отказоустойчивости

failover peer "dhcp-failover" {

primary; # этот сервер - основной

address 192.168.1.10;

port 647;

peer address 192.168.1.11;

peer port 647;

max-response-delay 60;

max-unacked-updates 10;

load balance max seconds 3;

mclt 3600;

split 128;

}

🔹 8. Безопасность DHCP

8.1. Защита от несанкционированных серверов

# Включение проверки ARP

sudo nano /etc/dhcp/dhcpd.conf

# Добавляем в глобальную секцию

deny unknown-clients;

ignore unknown-clients;

8.2. Ограничение по MAC-адресам

# Белый список MAC-адресов

host allowed-client-1 {

hardware ethernet 00:11:22:33:44:55;

fixed-address 192.168.1.50;

}

host allowed-client-2 {

hardware ethernet 00:11:22:33:44:56;

fixed-address 192.168.1.51;

}

# Запрещаем всех остальных

subnet 192.168.1.0 netmask 255.255.255.0 {

pool {

range 192.168.1.100 192.168.1.200;

deny unknown-clients;

}

}

🔹 9. Устранение неисправностей

9.1. Типичные проблемы и решения

-22

9.2. Команды диагностики

# Проверка работы службы

sudo systemctl status isc-dhcp-server

# Проверка сетевых интерфейсов

ip addr show

# Проверка прослушиваемых портов

sudo netstat -tulpn | grep :67

# Тестирование с клиента

sudo dhclient -v

🔹 10. Автоматизация и скрипты

10.1. Скрипт для быстрой настройки

#!/bin/bash

# quick-dhcp-setup.sh

INTERFACE=$1

SUBNET=$2

RANGE_START=$3

RANGE_END=$4

GATEWAY=$5

# Установка DHCP-сервера

apt update && apt install -y isc-dhcp-server

# Настройка интерфейса

echo "INTERFACESv4=\"$INTERFACE\"" > /etc/default/isc-dhcp-server

# Базовая конфигурация

cat > /etc/dhcp/dhcpd.conf << EOF

option domain-name-servers 8.8.8.8, 1.1.1.1;

default-lease-time 600;

max-lease-time 7200;

authoritative;

subnet $SUBNET netmask 255.255.255.0 {

range $RANGE_START $RANGE_END;

option routers $GATEWAY;

option subnet-mask 255.255.255.0;

option broadcast-address $(echo $SUBNET | cut -d. -f1-3).255;

}

EOF

# Запуск службы

systemctl enable isc-dhcp-server

systemctl start isc-dhcp-server

echo "DHCP-сервер настроен на интерфейсе $INTERFACE"

echo "Диапазон: $RANGE_START - $RANGE_END"

echo "Шлюз: $GATEWAY"

Использование скрипта:

sudo bash quick-dhcp-setup.sh enp0s8 192.168.1.0 192.168.1.100 192.168.1.200 192.168.1.1

🔹 Заключение

Чего мы достигли:

Установили и настроили полнофункциональный DHCP-сервер
Настроили автоматическую раздачу IP-адресов в сети
Реализовали резервирование для критичных устройств
Обеспечили мониторинг и диагностику работы
Добавили элементы безопасности для защиты сети

Преимущества решения на Debian:

  • Стабильность — проверенная платформа
  • Гибкость — богатые возможности настройки
  • Бесплатность — отсутствие лицензионных отчислений
  • Сообщество — отличная документация и поддержка

Рекомендации по эксплуатации:

  1. Регулярно проверяйте логи на предмет ошибок
  2. Мониторьте использование IP-адресов
  3. Обновляйте систему для получения исправлений безопасности
  4. Настройте резервное копирование конфигурации
  5. Документируйте изменения в настройках

Пример резервного копирования конфигурации:

# Резервное копирование конфигурации

sudo tar -czf /backup/dhcp-config-$(date +%Y%m%d).tar.gz /etc/dhcp/ /var/lib/dhcp/

DHCP-сервер на Debian готов к работе и обеспечивает надежную автоматизацию управления IP-адресами в вашей сети.