Ім'я мережевого інтерфейсу змінюється після оновлення до 15.10 - змін удев


55

Я оновив віртуальну машину під управлінням сервера Ubuntu 15.04 до щойно випущеного нового стабільного 15.10.

Явних проблем не було, але після перезавантаження машина втратила мережеве з'єднання. lspciпоказав правильну карту і lsmodдовів, що водій був завантажений.

Підказки щодо редагування чи видалення /etc/udev/rules.d/70-persistent-net.rulesне вдалися (досі немає мережі, немає нового файлу), відомого /lib/udev/write_net_rulesнавіть не існувало.

Я не маю особливих уявлень щодо udev та systemd, тому мені знадобилося певний час, щоб знайти в / sys / class / net, що ім'я мережевого інтерфейсу змінилося. Це стало ens32, з якого було перейменовано eth0. Після зміни /etc/network/interfacesмережевого зв’язку знову було ввімкнено.

Але - чому це взагалі відбувається? І якщо це станеться, чи не повинен файл інтерфейсів оновлюватися автоматично?

Тепер, коли я видалив віртуальну мережеву карту і створив ще одну, eth0стає eno16777728, що не так, ум, приємно.

Чи слід повідомляти про таку поведінку (принаймні, процедуру оновлення) як помилку?

Крім того, /etc/udev/rules.d/70-persistent-net.rulesзастаріла зараз? І (хоча це лише частково пов’язано), що /etc/udev/rules.d/70-persistent-cd.rules?

Редагувати - додаткове запитання (після прийнятої відповіді) Занепокоєння залежності від власного /etc/network/interfacesімені інтерфейсу. Я спробував нову установку * ubuntu на іншій віртуальній машині. На мій подив, /etc/network/interfacesмістила посилання лише на пристрій петлі. Однак, з моїм оригінальним VM ця зміна завадила мережі з’являтися. То що ще мені потрібно змінити?

Редагувати Добре, з іншого тестування я виявив, що новий сервер Ubuntu має мережеву карту інтерфейсу /etc/network/interfaces, а XUbuntu - ні. Можливо, це використовується network-managerабо щось інше.


Цей же клоп з’являється знову в 17.04. Сподіваюсь лише на етапі перед випуском.
автомат

Відповіді:


56

У Ubuntu 15.10 (Wily Werewolf) починаючи з systemd / udev автоматично призначає передбачувані, стабільні імена мережевого інтерфейсу для всіх локальних інтерфейсів Ethernet, Wlan та Wwan ( джерело ).

Наступні різні схеми іменування мережевих інтерфейсів тепер підтримуються udev вперше:

  1. Імена, що містять вбудовані мікропрограми / BIOS індекси для бортових пристроїв (приклад eno1:)
  2. Імена , що включають прошивки / BIOS передбачено PCI Express індексних номерів слот автовизначення (приклад: ens1)
  3. Назви, що містять фізичне / географічне розташування роз'єму апаратного забезпечення (приклад enp2s0:)
  4. Імена, що містять MAC-адресу інтерфейсів (приклад enx78e7d1ea46da:)
  5. Класичне, непередбачуване іменування etX ethX (наприклад:) eth0- застаріле

За замовчуванням systemd тепер буде називати інтерфейси відповідно до політики:

  1. якщо ця інформація з вбудованого програмного забезпечення застосовна та доступна, повертається до
  2. якщо ця інформація з вбудованого програмного забезпечення застосовна та доступна, повертається до
  3. якщо можливо, повертаючись до
  4. не використовується за замовчуванням, але доступна, якщо користувач вибере це.
  5. у всіх інших випадках.

Як відключити це?

У вас є такі варіанти:

  • Створіть власну схему іменування вручну, наприклад, назвавши свої інтерфейси internet0 або lan0. Для цього створіть власний файл правил udev та встановіть властивості імені для пристроїв. Не забудьте замовити його перед файлом політики за замовчуванням, наприклад, назвавши його/etc/udev/rules.d/70-my-net-names.rules
  • Змініть файл політики за замовчуванням для вибору іншої схеми іменування, наприклад для іменування всіх імен інтерфейсу за їх MAC-адресою за замовчуванням:, cp /lib/udev/rules.d/80-net-setup-link.rules /etc/udev/rules.d/80-net-setup-link.rulesпісля цього відредагуйте файл та змініть рядки за потребою.
  • Передайте net.ifnames=0командний рядок ядра.

6
Є чи це джерело? Чи можете ви додати посилання на офіційну сторінку примітки до випуску для Ubuntu (я впевнений, що вона десь, не можу її знайти!)
Rmano

2
Так, це джерело.
кіодаке

4
Що зовсім не має сенсу в тому, що він зробив оновлення, а не свіжу установку. Це звучить як фактична помилка Ubuntu, оскільки оновлення повинно залишати систему в робочому стані.
Буде

1
@kyodake в ubuntu 15.10 немає папки / usr / lib / udev, є / lib / udev
EdiD

1
@EdiD: добре, помилка виправлена.
кіодаке

39

Існує простіший спосіб, про який розповів ArchWiki Beginnersguide .

Спочатку отримайте MAC-адресу своїх пристроїв за допомогою

$ ip link

Результат показує подібним чином

3: wlan0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP mode DORMANT group default qlen 1000     
          link/ether 20:68:9d:xx:xx:xx brd ff:ff:ff:ff:ff:ff

MAC-адреса ваших пристроїв - це

20:68:9d:xx:xx:xx

Просто створіть файл (просто відкрийте з правами sudo в текстовому редакторі)

$ nano /etc/udev/rules.d/10-network.rules    

Додайте наступний рядок

SUBSYSTEM=="net", ACTION=="add", ATTR{address}=="aa:bb:cc:dd:ee:ff", NAME="net1"

Замініть ім'я на потрібне ім'я та aa: bb: cc: dd: ee: ff MAC-адресою пристроїв.

Тепер просто перезавантажте комп'ютер, і ім'я пристрою повинно було змінитися.


Найбільш пряме і просте рішення! Велике спасибі!
3bdalla

1
Щоб переконатися, що правило НЕ застосовується до інтерфейсів Vlan та Bridge, додайте DRIVERS=="?*",після ACTION=="add",. Дивіться також askubuntu.com/questions/767786/…
Донн Лі

16

Спробуйте це: Відредагуйте своє /etc/default/grub. Змінити рядок на

GRUB_CMDLINE_LINUX=""

до

GRUB_CMDLINE_LINUX="net.ifnames=0 biosdevname=0"

і, нарешті, запустіть:

# update-grub

як root та перезавантажте систему.


Це також працює для netboot. Мені вдалося додати наступне до заяви про додавання до мого файлу syslinux.cfg: append (...) net.ifnames=0 (...)
carestad

Це рішення чудово працює і в Ubuntu 16.04!
Nullldata

Мені довелося додати вище параметри GRUB (net.ifnames = 0) та видалити правила перейменування udev, щоб власники працювали, але зараз усе нормально. Дякую за рішення.
Альберт Велі

СПАСИБІ. Я встановлюю Ubuntu Server 16.04 на безголовий сервер і не маю уявлення, яке ім'я дає мережевий інтерфейс, і, як результат, сервер не був у мережі. Я зробив це і переконався, що / etc / network / інтерфейси мали "eth0" як ім'я інтерфейсу і повернули диск на сервер. Зараз онлайн. Інструкції по встановленню Ubuntu на Acer Aspire H340 застаріли, наскільки це стосується, тому я буду щось писати, сподіваючись, що інші, хто спробує те саме, не витратять стільки часу, скільки я.
MetalMikester

5

Я знаю, що це може бути трохи пізно, і додавання 10-мережних рублів, мабуть, допомогло, але не повністю. Мені довелося додати ім’я ядра пристрою для перейменування. Ось як я змусив /etc/udev/rules.d/10-network.rules працювати ...

SUBSYSTEM=="net", ACTION=="add", ATTR{address}=="MAC:ADDRESS",KERNEL=="enp4s8", NAME="eth0"

і змініть KERNEL == "" на те, що ваше ядро ​​називає пристрій під час завантаження.

HTH

КС


3

Якщо у вас свіжа установка

apt-get remove biosdevname

Тоді

update-initramfs -u

Перевірте, чи є у вас файл neto net ruels. Якщо так, видаліть його.

rm /etc/udev/rules.d/70-persistent-net.rules

Тепер редагуйте / etc / network / interfaces, перейменуйте інтерфейси на eth0, eth1, ... і т.д.

Перезавантажте


2

Я працював над цим, створюючи файл:

root@odroid:~# cat /etc/udev/rules.d/70-persistent-net.rules
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{dev_id}=="0x0", ATTR{type}=="1", KERNEL=="eth0", NAME="eth0"
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.