/etc/network/interfaces – разница между auto и allow-hotplug

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

Я использую Debian 9.13. Я пытался выяснить, в чем разница между auto eth1 и allow-hotplug eth1 в /etc/network/interfaces. У меня есть сетевая интерфейса eth1, подключенная через USB. Я пробовал перезагрузку, выполнение systemctl restart networking, а также подключение и отключение, и кажется, что основная разница между allow-hotplug и auto заключается в том, что если интерфейс помечен как auto, команда systemctl restart networking не выполняется, когда eth1 не подключен. Это приводит к выводу, что allow-hotplug на самом деле предпочтительнее во всех случаях, возможно, за исключением ситуации, когда я знаю, что интерфейс не исчезнет (lo, встроенные интерфейсы).

Это правильно? Есть ли какая-то другая разница?

Я дополню ответ еще одной очень важной заметкой. Если вы используете специальные интерфейсы, такие как bonding (транк) или сетевой мост, избегайте добавления allow-hotplug в их конфигурацию в файле /etc/networking, всегда используйте auto.

auto подключает их при загрузке, но allow-hotplug может начать создавать проблемы во время работы ОС (после первоначальной конфигурации), например, удалить статическую IP-конфигурацию, сбросить интерфейс, настроить автоконфигурацию IP, что может привести к назначению IP, как 169.254.240.1/16.

  • allow-hotplug в основном означает для ОС: этот интерфейс динамичен, управляйте им при изменении различных условий (подключение / отключение USB-ключа, подключение / отключение Wi-Fi/VPN).

  • auto в основном говорит ОС: активируйте этот интерфейс с предоставленной конфигурацией во время загрузки или при событии поднятия соединения интерфейса.

auto

Интерфейс, помеченный auto, будет активирован во время загрузки.

allow-hotplug

Интерфейс подождет, пока udev и ядро его обнаружат, после чего будет активирован.

man interfaces:

Интерфейсы, помеченные "allow-hotplug", активируются, когда udev их обнаруживает. 
Это может произойти как во время загрузки, если интерфейс уже присутствует, так и позже, например, при подключении USB-сетевой карты.

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

Вопрос о различии между auto и allow-hotplug в файле конфигурации сети /etc/network/interfaces является важным для настройки сетевых интерфейсов в Debian, особенно когда речь идет о динамических интерфейсах, таких как USB-адаптеры.

Основные различия

  1. Обозначение интерфейса:

    • auto: Интерфейс, отмеченный как auto, будет активирован автоматически во время загрузки системы. Например, если в конфигурации указано auto eth1, то интерфейс eth1 будет поднят при старте системы, независимо от его состояния (оптическое подключение).
    • allow-hotplug: В отличие от этого, при использовании allow-hotplug, интерфейс будет активирован только в том случае, если система обнаружит его наличие через механизмы udev и ядра. Это может произойти как во время загрузки, если интерфейс уже подключен, так и в процессе работы системы, например, при подключении USB-адаптера.
  2. Поведение при перезапуске сети:

    • Использование auto может привести к ошибке при попытке перезапуска сетевого стека (например, через systemctl restart networking), если интерфейс не подключен. Это происходит, потому что система ожидает, что интерфейс будет доступен при старте, и не может выполнить команду.
    • В случае allow-hotplug, интерфейс будет ждать, пока не появится событие подключения, и, соответственно, не вызовет ошибок, если интерфейс отсутствует.

Рекомендации

  • Для встроенных и всегда доступных интерфейсов (таких как lo или встроенные сетевые карты) оптимально использовать auto, так как эти интерфейсы всегда должны быть активированы при загрузке.
  • Для динамических интерфейсов (например, USB-сетевые адаптеры) более предпочтительным является использование allow-hotplug. Это позволяет избежать проблем с отсутствующими интерфейсами на этапе загрузки.

Особые случаи

Важно отметить, что для специальных интерфейсов, таких как сетевые мосты (bridges) или интерфейсы с объединением (bonding), рекомендуется использовать только auto. Использование allow-hotplug для таких интерфейсов может привести к неожиданным последствиям, таким как сброс конфигурации IP-адреса или возникновение конфликта с другими сетевыми настройками.

Заключение

Ваша интерпретация различий между auto и allow-hotplug абсолютно верна. Для управления статичными и всегда доступными интерфейсами предпочтительнее использовать auto, тогда как для динамически меняющихся интерфейсов, таких как USB, более разумным будет использование allow-hotplug. Важно также помнить о возможных рисках при использовании allow-hotplug для сложных сетевых конфигураций.

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

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