Handbook:Parts/Networking/Advanced/ru

Расширенная настройка
Переменная config_eth0 это основа в конфигурации интерфейса. Это список инструкций высокого уровня для настройки интерфейса (eth0 в данном случае). Каждая команда в списке инструкций выполняется последовательно. Интерфейс считается работоспособным, если хотя бы одна команда работает.

Вот список встроенных инструкций:

Если команда не выполняется, укажите значение для fallback. fallback вариант должен строго соответствовать структуре конфигурации.

Можно соединить эти значения вместе. Вот несколько практических примеров:

Сетевые зависимости
Init-скрипты в могут зависеть от конкретного сетевого интерфейса или просто от "net". Все сетевые интерфейсы в системе инициализации Gentoo обеспечивают то, что называется "net".

Если в переменная rc_depend_strict установлена в , тогда все сетевые интерфейсы "net" "должны" быть удачно запущены перед тем как зависимости от "net" смогут запуститься. Другими словами, если в системе есть net.eth0 и net.eth1, то они должны быть оба запущены перед тем, как сможет запустится init-скрипт, зависящий от "net".

С другой стороны, если установлено, тогда "net" зависимость считается разрешенной, в том случае, если хотя бы один сетевой интерфейс удачно поднялся.

Но что по поводу зависимости net.br0 от net.eth0 и net.eth1? от net.eth1, возможно, нужно настроить беспроводное или PPP устройство перед добавлением их в сетевой мост. Это нельзя сделать в, так как это символьная ссылка на net.lo.

Ответ в определении настройки rc_net_{interface}_need в :

Этого, однако, не достаточно, как такового. Сетевые init-скрипты в Gentoo используют виртуальную зависимость, которая называется "net", которая информирует систему о том, что сеть доступна. Очевидно, что и в предыдущем случае, сеть должна быть помечена как доступной, только тогда, когда поднят интерфейс net.br0, а не другие. Таким образом, мы должны написать в так:

За подробной информацией о зависимостях обратитесь к разделу о написании init-скриптов в Gentoo Handbook. Больше информации о доступно в виде комментариев в самом файле.

Имена переменных и значения
Имена переменных динамичны. Как правило, они следуют следующей структуре. Например, переменная dhcpcd_eth0 содержит значение для опций dhcpcd на интерфейсе eth0, а dhcpcd_essid содержит опции для dhcpcd при подключении любой из интерфейсов к ESSID "essid".

Тем не менее, нет жестких правил, которые бы говорили, что имена сетевых интерфейсов должны называться ethx. Многие беспроводные интерфейсы называются как wlanx или rax на ряду с ethx. Кроме того, некоторым пользовательским интерфейсам, таким как сетевые мосты, можно назначать любое имя. Для того, чтобы сделать жизнь более прекрасной, беспроводным точкам доступа могут быть назначены имена без цифро-буквенных символов - это важно, так как пользователи могут настраивать сеть для конкретной ESSID.

Недостаток в этом всем то, что Gentoo использует переменные баш для работы с сетью, а баш не может ничего использовать за пределами английского алфавита и цифр. Чтобы обойти это ограничение, мы заменяем любой не английский буквенно-цифровой символ на символ _ (подчеркивание).

Другой недостаток баш проявляется в содержании переменных; некоторые символы должны быть экранированы. Это можно сделать путем добавления \ (обратного слэша) перед символами, которые должны быть экранированы. Ниже приведен список символов, которые должны быть экранированы таким образом:, и.

В это примере мы использовали беспроводной ESSID, поскольку они могут содержать большое количество символов. Мы будем использовать идентификатор ESSID My "\ NET:

Настройка выше устанавливает DNS домен в My "\ NET, когда беспроводная карта подключена к точке доступа у которой ESSID My "\ NET.

Как это работает
Имена сетевых интерфейсов не выбираются произвольно: ядро Linux и менеджер устройств (в большинстве систем используется Udev в качестве менеджера устройства, хотя могут быть другие варианты) выбирают имя сетевого интерфейса через фиксированный набор правил.

В случае обнаружения сетевой карты в системе, ядро Linux собирает необходимые данные об этой карте. В которые входят:


 * Для встроенных (работающие на основной шине (не PCI, актуально для SoC)) регистрируется имя сетевой карты; позже будет видно в ID_NET_NAME_ONBOARD.
 * Слот в который подключена сетевая карта; позже будет виден в ID_NET_NAME_SLOT.
 * Путь по которому можно получить доступ к сетевой карте; позже будет виден в ID_NET_NAME_PATH.
 * MAC-адрес (предоставляемый поставщиком) сетевой карты; позже будет виден в ID_NET_NAME_MAC.

Основываясь на этой информации менеджер устройств определяет как назвать устройство. По умолчанию, он назначает первое значение из первых трех переменных выше ( ID_NET_NAME_ONBOARD, _SLOT или _PATH ). Например, если ID_NET_NAME_ONBOARD найден и задан как, тогда интерфейс будет называться как eno1.

Значения переменных для интерфейса можно получить следующей командой :

Поскольку (а это так и есть), первое значение из трех главных переменных это переменная ID_NET_NAME_PATH, ее значение используется в качестве имени интерфейса. Если ни одна из переменных не содержит значение, то система возвращается к предоставляемой ядром схеме именования (eth0, eth1 и так далее)

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

Использование пользовательских имен
Основная идея пользовательских имен предназначена не для запутывания людей, а сделать изменения имен сетевых интерфейсов проще. Предположим, что в системе имеется два интерфейса, которые обычно называются eth0 и eth1. Один подразумевает доступ к сети через провода, другой подразумевает под собой беспроводной доступ. Если использовать поддержку именования интерфейса, пользователи могли бы называть интерфейсы lan0 (проводной) и wifi0 (беспроводной); что поможет избежать от использования хорошо известных имен eth* и wlan*, так как их именование остается не точным.

Уточните параметры карты и используйте эту информацию для создания правил, чтобы назвать карту как нужно:

Поскольку эти правила запускаются до любого правила, которые обычно идут по умолчанию (правила запускаются в алфавитном порядке, поэтому 70 сработает до 80), имена, приведенные в файле правил выше, будут использоваться вместо обычно используемых по умолчанию. Номер в имени файла должен быть между 76 и 79 (переменное окружение определяется правилами, которые начинаются с 75, а запасной вариант присвоения имен делается в правиле 80).