Найти тему
Кручинин.Linux

APIPA или 169.254.187.48

Вы запустили компьютер, а Интернета нет.

Смотрите сетевые настройки и видете IP-адрес, что-то вроде 169.254.187.48

А Интернета нет.

Такую же картинку можно наблюдать и в CPT

Что это означает?
Это означает, что выбрано в настройках машины получение IP-адреса, но оно не сработало. И машина назначила себе адреса сама.

Либо DHCP сервер выключен, либо ошибка в настройках.

Если это не WRT а Cisco как настроить я рассказал в отдельной статье https://dzen.ru/a/ZegoS1XGFzahibu3

Если нормально DHCP сервер отработал, то адрес не будет начинаться со 169.254.

-2

А что такое 169.254.

Это механизм самоназначения IP-адреса. Технология имеет названия APIPA либо Zeroconf.

Посыл был благородный.

Два компьютера не могут выйти в интернет, но могут работать между собой.

-3

Казалось бы, дальше подкрутить протокол, чтобы они могли связаться с сервером, получить префикс сети и т.д.

Но так сделано в IPv6. Там из MAC-адреса формируется Link-Local IPv6 адрес, далее происходит связь по multicast с роутером и получение от него анонса IPv6 сети.

А в IPv4 зачем такие сложности, ведь можно отправить широковещательный ARP запрос, которому не нужна никакая APIPA.

Так что несмотря на потенциал использования, по факту в IPv4 он не нужен, и все что он нам дает - знание, что DHCP не отработал.

Ну и, чтобы потом легче было IPv6 разбирать, давайте посмотрим, а как назначает IPv4 адрес по APIPA.

Сеть берется 169.254.0.0/16. Она именно для этого предназначена, ни для чего более.

А две другие цифры?

Посмотрим.

-4

Смотрим на два последних значения MAC-адреса.

Это A0 7B

-5

A0 это 160 в десятичной системе счисления.

Все идет неплохо. Никак два последних разряда IP-адреса, полученного по APIPA, это два октета MACа? Как будто бы да.

А что такое 7B?

-6

А это 123.

Облом.

Наш адрес 169.254.160.125

Может к 123 прибавляется 2?

Или нет?

Идем на чистоту эксперимента.

Добавляем в сеть новый ноутбук.

И сразу же ставим в настройках DHCP

-7

Итак, 32.140

Смотрим MAC-адрес

-8

Проверяем

20 это 32

-9

8C это 140

-10

Итак, действительно, это наш IP 169.254.32.140

Только уже не наш.

Пока мы смотрели на MAC, IP-поменялся.

-11

А что такое 141? Инкрементированное 140.

Зайдем в настройки IP Configuration

-12

Уже 142.

Почему так? Дело в том, что два октета хотя и дает 65536 значений, но все равно шанс совпадения есть. Система запомнила, что кто-то уже использовал 140, 141 (возможно это были мы).

Потому, чтобы избежать совпадений с каждым новым получением октет увеличивается на единичку.

Итак, алгоритм APIPA.

Сначала пытаемся получить настройки по DHCP.

Если не удается, сами себе назначем IP-адрес по APIPA.

Берем сеть 169.254.0.0/16

Соответственно первые два октета 169.254

Берем два последних октета MAC-адреса и записываем их в десятичной системе счисления. Например, для 20:8C это будет 32.140

Получаем адрес 169.254.32.140.

Проверяем, использовался ли этот адрес в недавнее время?

Если да, увеличиваем последний октет на единичку.

169.254.32.141.

Использовался?

Снова да. Еще на единичку.

169.254.32.142

Использовался? Пока нет.

Значит будем использовать его.

Что нам дает это знание:

1) Общий кругозор и интуитивное понимание, как работают сети

2) Легче будет понять, как присваиваются Link Local адреса в IPv6

3) Будет понятно, что если мы видим адрес из 169.254.0.0/16 значит DHCP не настроен или настроен не правильно.

Подписывайтесь на мой канал в дзен https://dzen.ru/olinux и будете в курсе новых моих статей по компьютерным сетям и ОС GNU/Linux.

Всегда с вами, Сергей Кручинин преподаватель GNU/Linux и компьютерных сетей

-13