Каково поведение IPv4LL по умолчанию в системах Linux?

Вопрос или проблема

Я ищу хороший источник и подтверждение касательно Динамической конфигурации IPv4 адресов Link-Local.

RFC Динамическая конфигурация IPv4 адресов Link-Local не совсем помогла мне ответить на мой вопрос (или я упустил это).

Итак, давайте рассмотрим, чтобы убедиться, что я прав:

Когда устройство подключается к интернету и не получает IP адрес ни от DHCP, ни статически, оно получает IP в диапазоне 169.254/16. Этот процесс называется APIPA (=Автоматическое частное адресация IP) в операционных системах Microsoft и является стандартным поведением. В варианте Linux это, судя по всему, zeroconf/Avahi.

Мой вопрос:

Получение IP в этом диапазоне является стандартным поведением на любой системе (то есть на любой системе Linux)? Или это должно настраиваться операционной системой? Насколько я знаю, при загрузке на Ubuntu и отсутствии каких-либо действий, устройство не получает IP вообще (то есть нет 169.254.x.y/16).

Другими словами, когда мы говорим о том, что не получаем IP от DHCP (и не устанавливаем статически). Буду ли я получать IP 169.254/16 на каждой системе или это только для Microsoft?

ИЗМЕНЕНИЕ: а что делает OSX?

Утверждение: "Когда устройство подключается к интернету и не получает IP ни от DHCP, ни статически, тогда устройство получает IP в диапазоне 169.254/16."

Ответ: что касается Debian 12, это не работает таким образом. Сетевая карта является пассивным элементом; если вам нужно назначить ей какой-либо IP адрес, то это должен сделать какой-либо пользовательский программный продукт. Если ни одно из пользовательских программ не назначает IP адрес, то сетевой интерфейс не будет иметь НИКАКОГО IP адреса, даже LL (link local) или APIPA. В Linux назначать LL адрес может, например, systemd-networkd. Например, с помощью следующей конфигурации:

# cat /etc/systemd/network/60-static.network 
[Match]
Name=enp0s5

[Network]
LinkLocalAddressing=ipv4
IPv6LinkLocalAddressGenerationMode=none

Если вы хотите назначить LL адрес после неудачной попытки DHCP, то следующая конфигурация поможет:

# cat /etc/systemd/network/60-static.network 
[Match]
Name=enp0s5

[Network]
DHCP=ipv4
LinkLocalAddressing=ipv4
IPv6LinkLocalAddressGenerationMode=none

Также назначить LL адрес можно с помощью “avahi-autoipd”.

  # avahi-autoipd -Dw enp0s4 

Общий вывод – LL адрес, как и любой другой IP адрес, не может появиться на сетевом интерфейсе, если только какой-либо кусок пользовательского кода не сделает это явно.

Ответ или решение

IPv4LL (IPv4 Link-Local) — это механизм автоматической конфигурации сетевых адресов, определённый в RFC 3927, который позволяет устройствам успешно настраивать свои IP-адреса в случае, если они не могут получить адрес через DHCP или статическую конфигурацию. Однако его поведение зависит от операционной системы и настроек.

На системах Linux, по умолчанию, IPv4 Link-Local адреса в диапазоне 169.254.0.0/16 не назначаются автоматически, как это происходит в Microsoft Windows (где используется концепция APIPA — Automatic Private IP Addressing). В большинстве дистрибутивов Linux, таких как Ubuntu или Debian, если сетевой интерфейс не получает IP-адрес от DHCP или не имеет статически заданного IP-адреса, он, как правило, не получает никаких адресов, включая адреса Link-Local.

Для автоматического назначения Link-Local адреса на системах Linux необходимо использовать дополнительные сетевые службы или утилиты. Например:

  1. systemd-networkd: с помощью данного менеджера сетевых конфигураций можно включить поддержку автоматической настройки Link-Local адресов. Необходимо создать конфигурационный файл, который укажет, что после неудачной попытки DHCP следует назначить Link-Local адрес. Пример:

    [Match]
    Name=enp0s5
    
    [Network]
    DHCP=ipv4
    LinkLocalAddressing=ipv4
  2. avahi-autoipd: эта утилита также может быть использована для назначения Link-Local адресов. Вы можете запустить её следующим образом:
    avahi-autoipd -Dw enp0s4

Таким образом, для назначения Link-Local адреса на Linux системах, необходимо использовать дополнительные программы или настроить службы, так как сам по себе сетевой интерфейс останется без IP-адреса, если не будет активировано соответствующее программное обеспечение.

Что касается macOS (OS X), то начиная с версии 10.4, система реализует аналогичный механизм автоматического назначения IP-адресов, по сути, использует те же принципы IPv4 Link-Local, что и в RFC 3927, автоматически присваивая адреса в диапазоне 169.254.0.0/16, если адреса не были получены от DHCP.

В заключение, присвоение IPv4 Link-Local адреса — это не поведение, встроенное по умолчанию в каждую linux-систему, а функция, активируемая дополнительным программным обеспечением, таким как systemd-networkd или avahi-autoipd.

Оцените материал
Добавить комментарий

Капча загружается...