Что такое протокол DHCP?

Ответ

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

Процесс получения адреса (DORA):

  1. Discover: Клиент отправляет широковещательный запрос DHCPDISCOVER в поисках сервера.
  2. Offer: DHCP-сервер отвечает DHCPOFFER с предложением свободного IP-адреса.
  3. Request: Клиент отправляет DHCPREQUEST, запрашивая предложенный адрес.
  4. Acknowledgment: Сервер подтверждает выделение адреса пакетом DHCPACK и указывает срок аренды (lease time).

Пример конфигурации (фрагмент файла dhcpd.conf для ISC DHCP Server):

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 domain-name-servers 8.8.8.8, 8.8.4.4;
  default-lease-time 86400; # 24 часа
  max-lease-time 172800;    # 48 часов
}

Преимущества:

  • Автоматизация: Устраняет ручное конфигурирование IP-адресов.
  • Экономия адресов: Адреса выдаются динамически и возвращаются в пул при отключении устройства.
  • Централизованное управление: Смена параметров сети (например, DNS) происходит на сервере.

Недостатки/риски:

  • Единая точка отказа: При недоступности DHCP-сервера новые устройства не смогут подключиться.
  • Атака истощения пула: Злоумышленник может зарезервировать все адреса, отправляя множество запросов.

Ответ 18+ 🔞

Вот, представляешь, сидит комп в сети, как лох неподписанный, без айпишника. И начинает орать на весь сегмент, как сука в лесу: «Люди! Кто тут главный по раздаче адресов? Мне хоть что-нибудь, а то я нихуя не подключусь!». Это и есть первый этап — Discover, он же DHCPDISCOVER. Просто крик души в пустоту.

А тут, из темноты, выползает DHCP-сервер, такой важный дядька с пачкой свободных бумажек. И такой: «На, братан, лови мой DHCPOFFER! Вот тебе свободный айпи, маска, маршрут — всё, как у людей». Кидает ему предложение, а сам думает: «Авось, возьмёт».

Клиент, получив офер, не долго думая, орёт обратно уже конкретнее: «Окей, я согласен на этот ваш 192.168.1.133! Давайте его мне, я его запомнил!». Это уже DHCPREQUEST. Не благодарность, а требование, да.

Ну а сервер, видя, что клиент не сбежал, ставит жирную печать DHCPACK и говорит: «Подтверждаю, адрес 192.168.1.133 за тобой на 24 часа. Не потеряй, не забывай продлить. DNS-сервера вот, роутер вот. Счастливо!». Всё, устройство в сети. Весь этот цирк зовётся DORA — Discover, Offer, Request, Acknowledgement. Красиво, да? А по сути — четыре пакета, чтобы не тыкать адреса руками, как последний лузер.

Вот, смотри, как это примерно в конфиге прописывается, если ты, вдруг, сам за сервер решил:

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 domain-name-servers 8.8.8.8, 8.8.4.4; # Чтоб интернет знал, куда стучаться
  default-lease-time 86400; # Сутки на аренду
  max-lease-time 172800;    # Но можешь выпросить и двое, хитрожопый
}

Чем это, блядь, хорошо? Да тем, что не нужно бегать с бумажкой и вбивать айпи вручную на каждом новом телефоне, ноутбуке и чайнике. Всё само. Адреса экономятся — отключился девайс, адрес вернулся в общий котёл. Захотел сменить DNS на всей сети — ткнул одну строчку на сервере, и все, как один, побежали на новые. Удобно, ёпта!

А чем пиздецово? А тем, что если этот самый сервер накроется медным тазом — всё, приехали. Новые устройства будут сидеть и материться, адресов не получая. Единая точка отказа, её в рот. Да ещё какой-нибудь пидарас шерстяной может устроить атаку на истощение пула: начнёт слать тысячи запросов и скупит все свободные адреса, как последний спекулянт. И потом вся сеть будет стоять, как вкопанная, потому что новым юзерам просто нихуя не достанется. Вот такие дела, друг мой. Автоматизация она, блядь, палка о двух концах.