Установка и настройка DHCP-сервера и клиентов на Ubuntu 20.04

Кратко: установите пакет isc-dhcp-server на сервере Ubuntu 20.04, укажите сетевой интерфейс и диапазон адресов в /etc/dhcp/dhcpd.conf, перезапустите службу. Клиенты можно настроить для получения статического IP по MAC или динамического адреса. В статье есть примеры конфигураций, проверка статуса и рекомендации по безопасности.
Важно: Ubuntu 20.04 по умолчанию использует netplan для настройки сети. В статье приведены примеры и для /etc/network/interfaces, и для netplan.
Введение
DHCP (Dynamic Host Configuration Protocol) автоматически назначает клиентам сетевые параметры: IP-адрес, шлюз, DNS и доменное имя. Это экономит время при администрировании большой сети и снижает ошибки ручного ввода.
Цель этой инструкции — показать, как установить и настроить isc-dhcp-server на Ubuntu 20.04 и как настроить клиентов для получения статического или динамического IP.
Требования
- Два устройства с Ubuntu 20.04 (сервер и клиент).
- Пароль root или доступ через sudo на сервере.
- Понимание базовой сетевой схемы (сеть, шлюз, DNS).
Установка DHCP-сервера
Пакет isc-dhcp-server есть в стандартном репозитории. На сервере выполните:
sudo apt-get update
sudo apt-get install isc-dhcp-server -yПосле установки запустите и включите службу при загрузке:
sudo systemctl start isc-dhcp-server
sudo systemctl enable isc-dhcp-serverПроверьте статус:
sudo systemctl status isc-dhcp-serverЕсли служба не запустилась, посмотрите журналы:
sudo journalctl -u isc-dhcp-server --no-pager | tail -n 100Настройка DHCP-сервера
Основной файл конфигурации DHCP: /etc/dhcp/dhcpd.conf. По умолчанию интерфейс указывается в /etc/default/isc-dhcp-server.
Откройте файл определения интерфейса:
sudo nano /etc/default/isc-dhcp-serverУкажите используемый интерфейс, например:
INTERFACESv4="eth0"Сохраните и закройте файл.
Далее отредактируйте /etc/dhcp/dhcpd.conf:
sudo nano /etc/dhcp/dhcpd.confВключите строку авторитетности и задайте общие параметры аренды и диапазон адресов для подсети. Пример конфигурации:
authoritative;
default-lease-time 660;
max-lease-time 6300;
subnet 192.168.0.0 netmask 255.255.255.0 {
range 192.168.0.2 192.168.0.20;
option routers 192.168.0.1;
option domain-name-servers 8.8.8.8, 8.8.4.4;
option domain-name "example.local";
}Сохраните файл и перезапустите службу:
sudo systemctl restart isc-dhcp-serverПрисвоение статического IP по MAC-адресу
По умолчанию DHCP выдает динамические адреса из указанного диапазона. Чтобы закрепить конкретный IP за клиентом, добавьте хост-блок в dhcpd.conf.
Например, назначим 192.168.0.5 клиенту с MAC 4c:bb:58:9c:f5:55:
host client1 {
hardware ethernet 4c:bb:58:9c:f5:55;
fixed-address 192.168.0.5;
}Сохраните и перезапустите сервер:
sudo systemctl restart isc-dhcp-serverПроверьте логи и статус для обнаружения ошибок.
Настройка клиента для получения статического IP от DHCP
На клиенте, чтобы получить закреплённый адрес по MAC, обычно не требуется ничего менять в настройках DHCP. Клиент должен просто запросить адрес у сервера. Однако способы настройки сетевого стека зависят от того, как настроена система: через ifupdown (/etc/network/interfaces) или netplan (рекомендуемый способ для Ubuntu 20.04).
Пример для ifupdown (если установлен пакет ifupdown):
sudo nano /etc/network/interfacesЗамените содержимое на:
auto eth0
iface eth0 inet dhcpПерезапустите менеджер сети (или ifup/ifdown):
sudo systemctl restart network-manager
# или
sudo ifdown eth0 && sudo ifup eth0Если клиент использует netplan (по умолчанию в Ubuntu 20.04), настройте YAML, например /etc/netplan/01-netcfg.yaml:
network:
version: 2
renderer: networkd
ethernets:
ens33:
dhcp4: trueПримените конфигурацию:
sudo netplan applyПроверьте адрес:
ip addr show dev eth0
# или
ifconfigПример вывода клиента, закреплённого по MAC:
eth0 Link encap:Ethernet HWaddr 4c:bb:58:9c:f5:55
inet addr:192.168.0.5 Bcast:192.168.0.255 Mask:255.255.255.0Если IP не получен, освободите и обновите аренду:
sudo dhclient -r -v
sudo dhclient -vОбратите внимание, что в некоторых статьях встречается ошибочная длинная тире перед -r; используйте обычный дефис.
Настройка клиента для получения динамического IP
Чтобы клиент получал IP автоматически, настройте интерфейс на DHCP.
ifupdown:
auto eth0
iface eth0 inet dhcpnetplan:
network:
version: 2
renderer: networkd
ethernets:
ens33:
dhcp4: trueПримените изменения и проверьте ip:
sudo netplan apply
ip addr show dev eth0Пример ожидаемого вывода для динамического клиента:
eth0 Link encap:Ethernet HWaddr 56:84:7a:fe:97:99
inet addr:192.168.0.11 Bcast:192.168.0.255 Mask:255.255.255.0Отладка и частые проблемы
- Служба не стартует: проверьте /etc/default/isc-dhcp-server — правильно ли указан интерфейс.
- Ошибки в dhcpd.conf: синтаксис критичен. Проверьте журнал systemd: sudo journalctl -u isc-dhcp-server.
- Клиент не получает адрес: проверьте, виден ли клиент серверу (ping, ARP).
- Конфликт диапазона и статических адресов: убедитесь, что fixed-address лежит вне динамического range или исключён из него.
- Фаервол блокирует трафик: DHCP использует UDP порты 67 (сервер) и 68 (клиент). Разрешите их.
Команды для диагностики:
sudo tail -f /var/log/syslog | grep dhcpd
sudo netstat -anu | grep :67
sudo journalctl -u isc-dhcp-server -n 200Рекомендации по безопасности
- Ограничьте выдачу адресов по MAC или используйте списки разрешённых клиентов.
- Включите DHCP snooping на коммутаторах уровня L2 (если поддерживается).
- Логируйте и мониторьте аномалии: множество запросов от одного MAC может означать проблему.
- Обновляйте пакет isc-dhcp-server и следите за патчами безопасности.
Альтернативные подходы
- systemd-networkd + systemd-networkd-wait-online: используйте вместо isc-dhcp-server для простых случаев.
- Использовать dnsmasq как легковесный DHCP/DNS сервер для малых сетей с простой конфигурацией.
- Решения на уровне контроллера (сеть под управлением SDN) для крупных сред.
Чек-лист администратора
Перед вводом в эксплуатацию проверьте:
- Указан правильный интерфейс в /etc/default/isc-dhcp-server.
- subnet и netmask соответствуют схеме сети.
- Диапазон range не пересекается с вручную назначаемыми адресами.
- Указаны корректные option routers и option domain-name-servers.
- Перезапуск службы не возвращает ошибок.
- Проведено тестирование на клиенте: dhclient и проверка ip.
Факты и числа
- Порты: UDP 67 (сервер), UDP 68 (клиент).
- Рекомендуемые значения аренды зависят от сети: для динамичных сетей — минуты, для серверов — часы.
- Netmask и range должны соответствовать одной подсети.
Критерии приёмки
Система считается корректно настроенной, если:
- DHCP-сервер запущен без ошибок и отвечает на запросы.
- Клиенты получают ожидаемые IP-адреса (фиксированные и динамические).
- Журналы не содержат критических ошибок в течение контролируемого периода тестирования.
Глоссарий
- DHCP: протокол автоматической выдачи сетевых параметров.
- ISC DHCP: реализация DHCP-службы от Internet Systems Consortium.
- Lease: временная аренда IP-адреса клиенту.
Заключение
Вы успешно установили и настроили isc-dhcp-server на Ubuntu 20.04 и настроили клиентов как для статической, так и для динамической выдачи адресов. Если сеть использует netplan, применяйте netplan для клиентской конфигурации. При возникновении проблем используйте журналы systemd и файлы логов для диагностики.
Если нужно, могу прислать готовые файлы конфигураций под вашу сеть или помочь с миграцией на dnsmasq или systemd-networkd.
Похожие материалы
Несколько аккаунтов Skype: Multi Skype Launcher
Журнал для работы: повысить продуктивность
Персональные звуки уведомлений на Android
Скачивание шоу Hulu для офлайн‑просмотра
Microsoft Start: персонализированная новостная лента