Как включить «Предсказуемые имена сетевых интерфейсов»?


12

Я решил проверить, как будет называться мое Ethernet-устройство, но, в отличие от других дистрибутивов , Debian, похоже, не активировал это изменение (или сдерживает его?),

  • Оставьте пока прежнюю схему именования постоянных сетевых интерфейсов и включите новую с помощью net.ifnames = 1 в командной строке ядра.

Проблема в том, что мне нужно отредактировать строки ядра grub, и это кажется излишним для чего-то, что можно отключить, изменив файл . Есть ли другой способ?


Может быть, вы хотите проверить эту ссылку: science.uva.nl/research/air/wiki/LogicalInterfaceNames Вы можете найти обходной путь, такой как nameif и обновление файла запуска ... @Braiam
user1527227

@ user1527227 это именно то, что я не хочу делать.
Брайам

На jesse вам нужно всего лишь изменить одну строку в / etc / default / grub. На wheezy действительно нет способа включить этот AFAIK. Мне действительно нравится новая схема именования, поэтому я устанавливаю свои собственные правила udev на своих серверах wheeze.
GnP

Ответы:


11

Версия 220-7 на Debian удалила патч, который сделал этот выбор:

* Switch to net.ifnames persistent network interfaces (on new
  installations/for new hardware), and deprecate the old
  75-persistent-net-generator.rules.

Это произошло из предложения в списке debian-devel . Системы, которые использовали старое наименование, не будут переименованы, пока пользователь не мигрирует. Прочтите README.Debian для руководства по миграции.

Новое имя может быть предсказано с помощью:

sudo udevadm test /sys/class/net/eth0 2>/dev/null |grep ID_NET_NAME_

где eth0текущее имя устройства.


5

Я полагаю, вы говорите о Сиде или Джесси. Для wheezy вы можете попробовать backport v204 .

Здесь могут быть некоторые заблуждения: как видно из правил udev здесь (для v208, в настоящее время в sid), разработчики udev явно выбрали cmdline ядра в качестве способа включения этой функции по умолчанию.
Я не вижу ничего , по сути своего «излишества» с использованием выбранного интерфейса для него и просто положить GRUB_CMDLINE_LINUX_DEFAULT="net.ifnames=1"в /etc/default/grub. Есть ли какой-то конкретный побочный эффект, который вас беспокоит?

Тот факт, что упомянутый вами ответ предлагает удалить файл для его отключения, является хаком (по крайней мере, в случае с Debian), который не будет работать в долгосрочной перспективе, потому что в Debian эти правила хранятся /lib/udev/rules.d, то есть: они будут перезаписаны в обновление (кроме того, отключение функциональности путем эффективного удаления описывающего его файла имеет некоторый смысл, но включение его принципиально отличается, поэтому я считаю, что это несправедливое сравнение).

OTOH, если у вас есть конкретная причина не использовать ядро ​​cmdline, вы можете сообщить об ошибке в пакете debian, и сопровождающий переместит эти правила в /etc/udev/. Тогда вы можете теоретически переключаться между текущими «постоянными» и новыми «предсказуемыми» правилами.

Но только к вашему сведению: глядя на источники для версии 209, кажется, что он полностью избавился от net.if_namesпроверки, поэтому ваш вопрос может потребовать переадресации в ближайшем будущем.


1
msgstr "явно выбрал ядро ​​cmdline в качестве способа включения этой функции по умолчанию." на самом деле это делает патч Debian, а не разработчики udev. Они включали только метод, позволяющий отключить его при загрузке, Debian изменил его на opt-in, и включить его должно быть легко, поскольку он включен по умолчанию.
Брайам

@Braiam: Хороший улов! Но я думаю, что основным аргументом остается то, что это был udev выбор использования cmdline ядра в качестве интерфейса, будь то для его включения или отключения.
Лев Антунес

Я отредактировал командную строку ядра, чтобы включить net.ifname=1параметр, но эта функция не была включена в Linux Mint. Какие дистрибутивы Linux, как известно, поддерживают эту функцию?
sherrellbc

0

В Debian / Ubuntu, начиная с udev 220, вы можете включить новые имена, переименовав этот файл:

sudo mv -T /etc/udev/rules.d/70-persistent-net.rules{,.old}

В соответствии с предложением /usr/share/doc/udev/README.Debian.gz, а затем

sudo update-initramfs -u

Затем перезагрузка (или rmmod + insmod модуля, управляющего вашей сетевой картой).


-1

В Ubuntu 15.10 не используются biosdevnameпредсказуемые имена сетевых интерфейсов. Даже если вы удалите его (apt-get remove biosdevname) и отредактируете grub ( GRUB_CMDLINE_LINUX_DEFAULT="net.ifnames=1") и постоянные правила, вы все равно не получите предсказуемые сетевые взаимодействия.

Основная причина, кажется, обратной совместимости. Я только что протестировал его с двумя мобильными широкополосными USB-устройствами, и имя сетевого интерфейса непостоянно именуется при каждой загрузке (например, первый интерфейс usb0, второй usb1 и наоборот). Основной причиной, по-видимому, является обратная совместимость.

На панели запуска открыто несколько ошибок (например, это ), но краткий ответ таков: если вы ищете предсказуемые имена сетевых интерфейсов, вам следует искать другой дистрибутив.


Понял! Я действительно обновлю ответ, поскольку я думаю, что получил.
Энтони Хант

@roalma Я обновил ответ! Извините за ранее "подобный комментарию" пост.
Энтони Хант

Debian поддерживает эту функциональность по умолчанию начиная с версии 220-7, когда они выпустили патч, описывающий поведение. Теперь новые установленные системы будут использовать предсказуемые имена по умолчанию.
Брайам
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.