Локальный адрес канала IPv4 (link-local, 169.254.0.0/16)
Компьютер или плата показывает адрес 169.254.x.x — значит, сервер DHCP не ответил, и устройство назначило себе адрес само. С таким адресом можно общаться только с соседями по тому же кабелю или коммутатору: маршрутизатор эти пакеты не пропустит.
Обновлено Редакция GAW
Локальный адрес канала (IPv4 link-local address) — адрес из блока 169.254.0.0/16, который устройство назначает себе само, без сервера и без ручной настройки, и который действует только внутри одного сегмента сети. Механизм описан в RFC 3927. Блок зарегистрирован IANA как адреса особого назначения «Link Local» (RFC 6890).
Как устройство выбирает адрес
- Выбирает адрес псевдослучайно и равномерно из диапазона 169.254.1.0–169.254.254.255. Первые и последние 256 адресов блока зарезервированы и не используются (RFC 3927, разд. 2.1).
- Проверяет, не занят ли адрес: после случайной задержки до 1 с посылает три ARP-пробы с интервалом 1–2 с (разд. 2.2, 9).
- Если никто не ответил — объявляет адрес двумя ARP-сообщениями с интервалом 2 с и пользуется им (разд. 2.4, 9).
- При конфликте защищает адрес или выбирает новый; после 10 конфликтов попытки ограничивают одной в 60 с (разд. 9).
Генератор случайных чисел должен давать разные последовательности на разных устройствах, иначе они будут выбирать одинаковые адреса (разд. 2.1).
Только внутри сегмента
Пакет с адресом 169.254.x.x в качестве источника или получателя нельзя отправлять маршрутизатору и пересылать, даже если это групповая рассылка (RFC 3927, разд. 2.7). Поэтому с таким адресом устройство видно только соседям по кабелю или коммутатору, у которых тоже link-local адрес или адрес в том же сегменте.
Что значит 169.254 на практике
Чаще всего — что DHCP не ответил: нет связи с роутером, неисправен кабель или сервер выключен. При прямом соединении платы с компьютером без роутера оба могут получить link-local адреса и увидеть друг друга. Надёжнее задать обоим статические адреса из одной частной подсети — например, 192.168.50.1/24 и 192.168.50.2/24. Тип адреса и его подсеть покажет калькулятор подсетей IPv4.
RFC 3927 не рекомендует держать на одном интерфейсе одновременно рабочий маршрутизируемый адрес и link-local: оба допустимы только на время перехода от одного к другому (разд. 1.9).
Частые вопросы
Почему у устройства адрес 169.254.x.x?
Обычно потому, что оно не получило адрес от сервера DHCP и назначило себе адрес само по RFC 3927. Проверьте кабель, коммутатор и сервер DHCP (роутер) или задайте статический адрес из подсети роутера.
Можно ли подключиться к устройству с адресом 169.254.x.x?
Только из того же сегмента сети — по кабелю напрямую или через коммутатор. Компьютеру не обязательно иметь адрес из 169.254.0.0/16: RFC 3927 допускает обмен link-local-устройства с узлом, у которого маршрутизируемый адрес на том же канале (разд. 1.8, правила разд. 2.6). Через маршрутизатор такие пакеты не проходят (разд. 2.7 и 7).
Как устройство выбирает link-local адрес?
Случайно, равномерно из диапазона 169.254.1.0–169.254.254.255, затем проверяет ARP-запросами, не занят ли он: три пробы с интервалом 1–2 с, после случайной задержки до 1 с. Если адрес свободен, устройство дважды объявляет его (RFC 3927, разд. 2.1–2.4 и 9).
Источники
- IETF. RFC 3927: Dynamic Configuration of IPv4 Link-Local Addresses (2005) — разд. 1.9: узлу не следует держать одновременно рабочий маршрутизируемый адрес и link-local на одном интерфейсе; назначение link-local зависит только от состояния интерфейса и не меняет поведения DHCP; разд. 2.1: адрес выбирается псевдослучайно равномерно от 169.254.1.0 до 169.254.254.255, префикс 169.254/16 зарегистрирован IANA, первые и последние 256 адресов зарезервированы; генератор не должен давать одинаковых последовательностей на разных узлах; разд. 2.2: занятость проверяют ARP-пробами; разд. 2.7: пакеты с таким адресом источника или получателя нельзя отправлять маршрутизатору и пересылать, даже групповые; разд. 7: маршрутизатор не пересылает такие пакеты; разд. 9: PROBE_WAIT 1 с, PROBE_NUM 3, PROBE_MIN 1 с, PROBE_MAX 2 с, ANNOUNCE_WAIT 2 с, ANNOUNCE_NUM 2, ANNOUNCE_INTERVAL 2 с, MAX_CONFLICTS 10, RATE_LIMIT_INTERVAL 60 с, DEFEND_INTERVAL 10 с
- IETF. RFC 6890: Special-Purpose IP Address Registries (2013) — разд. 2.2.2: 169.254.0.0/16 — блок особого назначения «Link Local»
Нашли ошибку?
Смотрите также
- Калькулятор подсетей IPv4Маска и CIDR, сеть, broadcast, узлы, частные диапазоны, деление на подсети
- DHCPПротокол выдачи IP-адреса, маски и шлюза; аренда, DISCOVER–OFFER–REQUEST–ACK
- Частные IP-адреса10/8, 172.16/12, 192.168/16: адреса локальных сетей, не маршрутизируемые в интернет
- Маска подсети32 бита: единицы — номер сети, нули — номер узла; 255.255.255.0 = /24
- Ethernet для микроконтроллераW5500, ENC28J60, MAC + PHY по RMII, LAN8720, DP83848, трансформатор и разводка
- Широковещательный адресАдрес «всем узлам»: 255.255.255.255 или все единицы в части узла