Не удалось запустить Поднять сетевые интерфейсы после обновления до 16.04

28

Я только что обновил виртуальный сервер 14.04 до 16.04. После перезагрузки виртуальной машины я вижу следующую ошибку:

[FAILED] Failed to start Raise network interfaces.
 See 'systemctl status networking.service' for details

После входа в систему я могу выполнить указанную команду и получить следующий вывод (изображение, поскольку я не могу подключиться):

введите описание изображения здесь

Конфигурация в /etc/network/interfacesвыглядит хорошо - показывает настроенный вручную eth0 (здесь не используется dhcp)

Что меня удивляет, так это ifconfig -aсписки

  • ens160
  • вот

Где бы я ожидал

  • eth0
  • вот

Попытка поднять устройство eth0 через

sudo ifup -v eth0 

выходы:

...
Cannot find device "eth0"
Failed to bring up eth0.

Само устройство виртуальной проводной сети по-прежнему настроено в самой виртуальной машине, как и прежде.

ip linkтакже показывает loи ens160- где ens160настроен mac-адрес в vmware для одного настроенного виртуального сетевого устройства.

ОБНОВИТЬ

Я могу решить эту проблему, если я изменю все ссылки с eth0 /etc/network/interfacesна ens160.

НО - это неправильно для меня по нескольким причинам:

  1. Я хотел бы понять эту проблему
  2. Я хотел бы придерживаться eth0 вместо ens160

Поэтому, пожалуйста, кто-то может объяснить это изменение, которое не произошло с несколькими другими машинами 14.04 на том же сервере, который я также обновил до 16.04.

dufte
источник
1
Может быть дубликатом на: askubuntu.com/questions/704361/...
dufte
Аналогичное описание исправления находится здесь: askubuntu.com/a/830163/543586
theIntoy

Ответы:

15

причина

Проблема была вызвана Predictable-Network-Interface-Names из systemd / udev.

Возможное решение

Согласно этому источнику вы можете:

  • Вы отключаете назначение фиксированных имен, чтобы непредсказуемые имена ядра использовались снова. Для этого просто замаскируйте файл правил udev для политики по умолчанию: ln -s / dev / null /etc/udev/rules.d/80-net-setup-link.rules
  • Вы создаете свою собственную схему именования вручную, например, называя свои интерфейсы "internet0", "dmz0" или "lan0". Для этого создайте свои собственные файлы .link в / etc / systemd / network /, которые выбирают явное имя или лучшую схему именования для одного, нескольких или всех ваших интерфейсов. Смотрите systemd.link (5) для получения дополнительной информации.
  • Вы передаете net.ifnames = 0 в командной строке ядра

Прикладные решения

Я сделал создать новый файл 10-rename-network.rulesв /etc/udev/rules.d/и добавил следующее содержание к нему:

SUBSYSTEM=="net", ACTION=="add", ATTR{address}=="ff:ff:ff:ff:ff:ff", NAME="eth0"

где

  • eth0 = желаемое имя сетевого интерфейса, используется в /etc/network/interfaces
  • ff:ff:ff:ff:ff:ff = аппаратный mac-адрес сетевого устройства

Я бы порекомендовал перезагрузить компьютер после его завершения, чтобы убедиться, что изменения не изменились

dufte
источник
Я обнаружил, что мне нужно бежать, update-initramfs -uчтобы мои изменения вступили в силу
Аниль
В моей системе Debian это файл '/etc/udev/rules.d/70-persistent-net.rules'
Иеремия
6

Решено путем изменения файла /etc/network/interfaces.d/setup из:

auto lo
iface lo inet loopback
auto eth0
iface eth0 inet dhcp

чтобы:

auto lo
iface lo inet loopback
allow-hotplug eth0
iface eth0 inet dhcp
τασος ματσιγκας
источник
1

В моем случае эта проблема была связана с попыткой поднять мой мост br0. Я забыл сделать это:

sudo apt-get install bridge-utils

раньше и поэтому мой адаптер не мог начать.

GIGO
источник
2
Это отличается от проблемы ОП. Я не уверен, что этот ответ относится к этому вопросу!
Занна
0

Возможно, вы захотите удалить / изменить кэш udev для постоянных / согласованных имен сетевых интерфейсов, расположенных здесь: /etc/udev/rules.d/70-persistent-net.rules

Анхель Генчев
источник