Nie udało się uruchomić Podnieś interfejsy sieciowe po aktualizacji do 16.04

28

Właśnie zaktualizowałem wirtualną maszynę serwerową 14.04 do 16.04. Po ponownym uruchomieniu maszyny wirtualnej widzę następujący błąd:

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

Po zalogowaniu mogę uruchomić wspomniane polecenie i uzyskać następujące dane wyjściowe (obraz, ponieważ nie mogę się połączyć):

wprowadź opis zdjęcia tutaj

Konfiguracja /etc/network/interfaceswygląda dobrze - zawiera ręcznie skonfigurowany eth0 (tutaj nie używa się dhcp)

Zastanawiam się, czy te ifconfig -alisty

  • ens160
  • lo

Gdzie bym się spodziewał

  • eth0
  • lo

Próba podniesienia urządzenia eth0 przez

sudo ifup -v eth0 

wyjścia:

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

Wirtualne przewodowe urządzenie sieciowe jest nadal skonfigurowane w samej maszynie wirtualnej, tak jak wcześniej.

ip linkpokazuje również loi ens160- gdzie ens160skonfigurowano adres mac w vmware dla pojedynczego skonfigurowanego wirtualnego urządzenia sieciowego.

AKTUALIZACJA

Jestem w stanie rozwiązać problem, jeśli zmienię wszystkie odniesienia eth0 /etc/network/interfacesna ens160.

ALE - wydaje mi się to niewłaściwe z kilku powodów:

  1. Chciałbym zrozumieć ten problem
  2. Chciałbym trzymać się eth0 zamiast ens160

Więc proszę, czy ktoś może wyjaśnić tę zmianę, która nie przydarzyła się kilku innym maszynom 14.04 na tym samym serwerze, który również zaktualizowałem do wersji 16.04.

dufte
źródło
1
Może być duplikatem: askubuntu.com/questions/704361/…
dufte,
Podobny opis poprawki znajduje się tutaj: askubuntu.com/a/830163/543586
theINtoy

Odpowiedzi:

15

Powód

Problem został spowodowany przez Predictable-Network-Interface-Names z systemd / udev.

Możliwe rozwiązanie

Według tego źródła możesz:

  • Wyłączysz przypisywanie ustalonych nazw, aby ponownie użyć nieprzewidywalnych nazw jądra. W tym celu po prostu zamaskuj plik reguł udev dla domyślnych zasad: ln -s / dev / null /etc/udev/rules.d/80-net-setup-link.rules
  • Tworzysz swój własny schemat nazewnictwa, na przykład nazywając interfejsy „internet0”, „dmz0” lub „lan0”. W tym celu stwórz własne pliki .link w / etc / systemd / network /, które wybierają jawną nazwę lub lepszy schemat nazewnictwa dla jednego, niektórych lub wszystkich twoich interfejsów. Aby uzyskać więcej informacji, zobacz systemd.link (5).
  • Podajesz net.ifnames = 0 w wierszu poleceń jądra

Zastosowane rozwiązania

Zrobiłem utworzyć nowy plik 10-rename-network.rulesw /etc/udev/rules.d/i dodaje do niego następującą treść:

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

gdzie

  • eth0 = żądana nazwa interfejsu sieciowego, używana w /etc/network/interfaces
  • ff:ff:ff:ff:ff:ff = sprzętowy adres mac urządzenia sieciowego

Zalecam ponowne uruchomienie po zakończeniu, aby upewnić się, że zmiana jest lepka.

dufte
źródło
Odkryłem, że muszę biegać, update-initramfs -uaby zmiany zaczęły obowiązywać
Aneel
W moim systemie Debian plik to „/etc/udev/rules.d/70-persistent-net.rules”
jeremiah
6

Rozwiązany przez zmianę pliku /etc/network/interfaces.d/setup z:

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

do:

auto lo
iface lo inet loopback
allow-hotplug eth0
iface eth0 inet dhcp
τασος ματσιγκας
źródło
1

W moim przypadku problem ten związany był z próbą podniesienia mojego mostu br0. Zapomniałem to zrobić:

sudo apt-get install bridge-utils

wcześniej, więc mój adapter nie mógł się uruchomić.

gigo
źródło
2
Różni się to od problemu OP. Nie jestem pewien, czy ta odpowiedź należy do tego pytania!
Zanna,
0

Możesz usunąć / zmodyfikować pamięć podręczną udev dla trwałych / spójnych nazw interfejsów sieciowych, znajdujących się tutaj: /etc/udev/rules.d/70-persistent-net.rules

Angel Genchev
źródło