7

когда вы помещаете свой жесткий диск на другой компьютер, и Linux распознает новый сетевой адаптер, к eth будет добавлен новый номер, например eth0 -> eth1

Это ломает некоторые мои личные сценарии, например, получение IP-адреса системы.

Есть ли способ сбросить номер каждый раз, когда перезагружается ИЛИ новый сетевой адаптер?

3 ответа3

12

Проверьте правила udev в /etc/udev/rules.d .

В моем дистрибутиве Fedora есть автоматически написанное правило в 70-persistent-net.rules

SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="00:0c:f1:cc:2f:1a", ATTR{type}=="1", KERNEL=="eth*", NAME="eth0"

который четко связывает адрес Ethernet с именем устройства. Комментарии в верхней части файла дают хорошие подсказки, как настроить это поведение.

2

Добавьте это к вашему сценарию. Может потребоваться запуск от имени пользователя root в зависимости от вашей системы.

ethX=`ifconfig -s | awk 'NR==2 {print $1}'`

Затем вы можете использовать $ethX в качестве переменной для вашей сетевой карты .
Это просто берет выходные данные ifconfig -s и анализирует все, кроме текста в строке 2 и столбце 1.

1

Из того, что я понимаю, Linux использует нумерацию шин для определения порядка интерфейсов и их нумерации на данном компьютере. Это может быть шина PCI, mini-PCI или что-то еще. В последнее время, из-за сценариев параллельного запуска всех видов и типов, вещи стали совершенно случайными, иногда от одной загрузки к другой (фактически, сетевые адаптеры были более или менее названы одинаково на той же машине, но другие устройства не так уж и много).

Очевидно, что порядок устройств в шине меняется от машины к машине. Что не меняется, так это MAC-адрес.

Мое решение:

Если вы используете udev, вы можете использовать правила конфигурации udev, похожие на те, что описаны здесь (для Debin, ubuntu похож), чтобы принудительно связать конкретный интерфейс с MAC-адресом сетевой карты.

Предостережение Emptor: некоторые сетевые карты позволяют редактировать свои MAC. В этом случае это не сработает.

Внеклассная информация: более сложной для реализации альтернативой было бы использование нового механизма, предложенного Мэттом Домшом /Dell для Fedora, рассмотренного здесь

Что касается Ubuntu, то есть предложение интегрировать и эту схему. Согласно пункту 1 выше: хотя Fedora сначала поставляет biosdevname, ожидается, что другие дистрибутивы Linux также примут его.Сообщается, что уже есть план для интеграции этого в Ubuntu 11.04 и запрос функции для включения в OpenSUSE.

Надеюсь, это поможет.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .