DHCP (Dynamic Host Configuration Protocol) — сетевой протокол клиент-сервер, автоматизирующий назначение IP-параметров устройствам в сети. Когда устройство подключается к сети, оно отправляет широковещательный запрос, и DHCP-сервер автоматически предоставляет IP-адрес, маску подсети, шлюз по умолчанию и DNS-серверы. Без DHCP каждое устройство нужно настраивать вручную.
Процесс DORA (DHCP handshake)
- D — Discover: клиент отправляет broadcast (255.255.255.255) с поиском DHCP-сервера
- O — Offer: сервер отвечает с предложением IP, маски, шлюза, DNS и lease time
- R — Request: клиент запрашивает предложенные параметры (также broadcast — уведомляет другие серверы)
- A — Acknowledge: сервер подтверждает аренду (lease) на указанное время
Что DHCP назначает клиенту
Основные параметры (RFC 2132): IP-адрес из пула, маска подсети, шлюз по умолчанию (Default Gateway), DNS-серверы (опция 6), время аренды (lease time, типично 24–168 часов), имя домена (Domain Name, опция 15). Дополнительно: WINS-серверы, NTP-серверы (опция 42), PXE boot server (опции 60, 66, 67 для сетевой загрузки ОС).
DHCP в хостинге
Для VPS IP-адрес обычно назначается через DHCP при первом запуске, затем фиксируется через DHCP Reservation (привязка MAC→IP) или статический IP. В облачных инфраструктурах (OpenStack, VMware vSphere) DHCP-сервер управляется оркестратором и назначает IP виртуальным машинам автоматически при создании. Cloud-init использует DHCP для первоначальной настройки сети при старте cloud-инстанса.
DHCPv6 и SLAAC
Для IPv6 существуют два механизма: DHCPv6 (аналог DHCPv4, stateful) и SLAAC (Stateless Address Autoconfiguration, RFC 4862): устройство само генерирует IPv6-адрес на основе prefix из Router Advertisement и своего MAC-адреса. SLAAC не требует DHCP-сервера, но не передаёт DNS-серверы (в базовом варианте).
История
DHCP разработан Ральфом Дрэмсом (Ralph Droms) и опубликован как RFC 1531 в октябре 1993 года — заменил более ранний BOOTP (RFC 951, 1985). RFC 2131 (1997) — актуальная спецификация DHCPv4. DHCPv6 (RFC 3315) вышел в 2003 году. ISC DHCP — самая распространённая open-source реализация, с 1996 года. Dnsmasq — лёгкий DNS/DHCP-сервер для небольших сетей, широко используется в роутерах (DD-WRT, OpenWrt).
DHCP Snooping и безопасность
DHCP Snooping — функция безопасности коммутатора: только «доверенные» (trusted) порты могут рассылать DHCP Offer-пакеты. Без snooping любое устройство в сети может поднять мошеннический DHCP-сервер и раздать клиентам неверные IP, шлюз или DNS — атака DHCP spoofing. Коммутаторы с DHCP Snooping фильтруют DHCP-ответы с untrusted-портов. Функция Dynamic ARP Inspection (DAI) работает поверх snooping: проверяет соответствие IP-MAC на основе базы DHCP-привязок, защищая от ARP spoofing атак. Для VPS-хостинга эти функции настраиваются на гипервизорном уровне — физическая сеть между хостами защищена.
DHCP и автоматизация облачных сред
В OpenStack DHCP-сервис предоставляется Neutron через dnsmasq-демон. При создании VM Neutron автоматически: создаёт DHCP reservation для MAC-адреса виртуального NIC, настраивает dnsmasq на выдачу нужного IP, добавляет DNS-имя VM. В cloud-init: первый boot VM получает IP через DHCP, затем cloud-init читает metadata с DHCP Option 121 (static routes) или через link-local адрес метаданных (169.254.169.254). Kubernetes использует DHCP для node-IP, а pod-IP назначаются через CNI (Calico, Flannel) отдельно от DHCP.
DHCP lease time: короткое время (1 час) быстро освобождает адреса при динамической инфраструктуре (cloud, kubernetes nodes). Длинное (7 дней) подходит для статичных офисных сетей. Для серверов: статический IP через DHCP reservation (MAC→IP binding) — лучше чем ручная статическая настройка, так как централизованно управляется DHCP-сервером.