February 10th, 2020

Cat-light

Быдлайн networks™

Немного голой теории. Как работает протокол DHCPv4. Если совсем "на пальцах".


  1. Изначально какой-нибудь свежеподключившийся к какой-нибудь сети хост (клиент) не имеет никакого IP-адреса.

  2. Он посывает широковещательный UDP-пакет на IP "255.255.255.255" с просьбой "эй, сконфигурите меня кто-нибудь пожалуйста". Это называется "DHCP Discover".

  3. Кто-нибудь добрый ему отвечает "ну вот можешь взять себе IP-адрес 1.2.3.4, ежели хочешь". Это называется "DHCP Offer".

  4. Клиент на всякий случай ещё раз спрашивает "чо, внатуре я могу себе присвоить адрес 1.2.3.4"? Это называется "DHCP Request".

  5. И тот же самый добрый дядюшка Эх из пункта 3 ему талдычит "да бери, бери уже". Это называется "DHCP Ack".

  6. Клиент наконец-то назначает себе на интерфейс адрес "1.2.3.4", долго радуется, а попутно запоминает также IP-адрес доброго дядюшки Эха (он же DHCP-сервер), который столь любезно отсыпал от своих щедрот (то есть из DHCP Pool) целый настоящий адрес.

Всё вышеописанное безобразие осуществляется Broadcast-запросами и такими же Broadcast-ответами. Чтоб, значит, слышали все вокруг. Примерно как молодожёны на свадьбе гудят из всех автомобилей: "Эй, смотрите все, мы трахаться едем!"

Потом начинаются серые трудовыЕбудни. А добрый Эх выдал адрес не навсегда, а на какое-то время. И по прошествии половины этого срока клиент должен обязательно снова поинтересоваться, а в силе ли ещё оное щедрое предложение, то есть аренда адреса (Lease). Не протухла ли. Но в этот раз он делает это уже тихонько, "на ушко" дядюшке Эху. То есть обычным unicast-пакетом. Адресно, прицельно "от Юстаса Алексу" повторяются пункты 4 и 5. И если DHCP-сервер одобряет, то аренда IP-адреса продлевается на новый срок. Вся эта процедура подробно описана в RFC.

Это было лирическое введение. Теперь продолжение.

Update. Дальше написан бред. В смысле, неправда. Вынужден это признать.

Есть такой провайдер: домашний интернет от "Билайн". У него есть тяжкое наследие в виде давно почившего в бозе L2TP (помните такой протокол?). Только вот выкорчевали они его не до конца. Во всяком случае, ничем другим объяснить наблюдаемый феномен я не могу. Тем более, что он прекрасно известен и тянется ажно с 2011-го года. Суть в следующем.

Не знаю как ведёт себя винда, проверить не могу. А вот ISC DHCP клиент, который строго следует букве RFC, просто не может продлить аренду. Никогда. От слова "совсем". То есть изначально Offer он получает, видит в его составе dhcp-server-identifier = "85.249.40.1". Честно пытается потом на этот адрес слать DHCP Request-ы на тему продления аренды. И неизменное молчание остаётся ему ответом.

Что происходит дальше? Аренда, естественно, через Nное время "протухает". Клиент снова запрашивает на этот раз уже "DHCP Discovery" при помощи широковещательного запроса (broadcast-ом), заново получает IP-адрес и даже благополучно работает себе дальше. Но... на короткий промежуток времени IP-адрес с интерфейса всё-таки "слетает". А вместе с ним "слетают" и все записи в таблицах маршрутизации, в которых так или иначе оный фигурировал. Последствия... ну, самые разные. От "пользователь ничего не заметил" до "какого хрена я не могу достучаться до своего компа", в зависимости от конфигурации в каждом конкретном случае.

Самое противное, что на профильных форумах провайдера этот вопрос обсасывается уже чёрти сколько. С момента обнаружения этого бага прошло уже минимум восемь (!) лет, а хрен и ныне там. И таки знаете как народ выкручивается из ситуации? А вот так.

Кобздец, блин. XXI век на дворе...

Нет, Билайн — это не провайдер. Это презерватив: никакого удовольствия, но всё равно пользуешься. У кого тоже домашний интернет от Быдлайн™, имейте в виду.

Update. Выше написан бред. В смысле, неправда. На самом деле такой проблемы нет.