DHCP
Dynamic Host Configuration Protocol — протокол, который автоматически выдаёт устройству IP-адрес, маску, шлюз и адреса DNS-серверов.
Что такое DHCP
DHCP расшифровывается как Dynamic Host Configuration Protocol — протокол динамической настройки узла. Он автоматически выдаёт устройству сетевые параметры в момент подключения к сети. Без него IP-адрес, маску подсети, шлюз и адрес DNS-резолвера пришлось бы вбивать руками на каждой машине — и следить, чтобы адреса не пересеклись.
DHCP-сервер — сторона, которая раздаёт адреса и ведёт учёт выданного. В офисной сети это обычно роутер, в облаке — сервис самой платформы, на Linux — отдельный демон: dnsmasq, isc-dhcp-server, kea. Клиент — любое устройство: ноутбук, телефон, виртуальная машина.
Как это работает: DORA
Обмен занимает четыре пакета, их называют по первым буквам — DORA:
| Шаг | Пакет | Кто шлёт | Смысл |
|---|---|---|---|
| D | DISCOVER | клиент, broadcast | «Есть тут DHCP-сервер?» |
| O | OFFER | сервер | «Предлагаю 192.168.1.50» |
| R | REQUEST | клиент, broadcast | «Беру именно этот адрес» |
| A | ACK | сервер | «Закрепил за тобой на 12 часов» |
Первый DISCOVER уходит широковещательно на 255.255.255.255 — своего адреса у клиента ещё нет, отвечать некуда. Протокол работает поверх UDP: сервер слушает порт 67, клиент — 68.
Адрес выдаётся не навсегда, а в аренду (lease). На половине срока клиент шлёт REQUEST напрямую серверу и продлевает её, поэтому «динамический» адрес на практике не меняется месяцами. Если DHCP-сервера в сети нет, Windows и Linux берут APIPA-адрес из 169.254.0.0/16 — увидели такой в ip addr, значит аренда не получена и искать надо DHCP, а не приложение.
Что выдаётся, кроме адреса
Параметры передаются опциями, пронумерованными по RFC 2132:
- 1 — маска подсети
- 3 — шлюз по умолчанию
- 6 — DNS-серверы
- 15 — доменный суффикс
- 42 — NTP-серверы
- 51 — срок аренды
- 66/67 — TFTP-сервер и имя загрузочного файла для PXE-загрузки
Опции 66/67 — то, на чём держится сетевая установка ОС в дата-центре: голая машина без диска получает по DHCP не только адрес, но и адрес загрузчика.
Конфиг и диагностика
# dnsmasq: пул, срок аренды, резервация адреса за MAC
dhcp-range=192.168.1.100,192.168.1.200,12h
dhcp-option=6,1.1.1.1,8.8.8.8
dhcp-host=52:54:00:ab:cd:ef,192.168.1.10
$ ip -4 addr show eth0 | grep inet
inet 192.168.1.50/24 brd 192.168.1.255 scope global dynamic eth0
$ sudo dhclient -v eth0 # перезапросить аренду
$ cat /var/lib/dhcp/dhclient.leases
Слово dynamic в выводе ip addr — прямое указание, что адрес приехал по DHCP, а не прописан статикой.
DHCP на серверах и в облаке
В облаке DHCP работает внутри VPC: при создании инстанса платформа резервирует адрес в подсети и отдаёт его гостевой ОС. Благодаря этому один и тот же образ разворачивается в любой сети без правки конфигов. Прописать себе чужой адрес вручную не выйдет — платформа фильтрует трафик с неучтённых адресов.
Для сервера, на который смотрят снаружи, адрес должен быть предсказуемым. Правильный способ — не статика в конфиге гостя, а резервация по MAC на DHCP-сервере: настройки лежат в одном месте, а переустановка ОС не ломает адресацию.
Связанные термины
- IP-адрес — то, что DHCP выдаёт
- Маска подсети и CIDR — задаёт границы пула адресов
- DNS — резолверы приезжают клиенту опцией 6
- Сетевой адаптер — его MAC-адрес используют для резервации
- Роутеры / OpenWrt — типичный DHCP-сервер в локальной сети
- VPC — облачная сеть со своим DHCP
Готовы запустить GPU-задачу?
Запустить GPU-сервер