Wie werden Sie zurückgesetzt, /etc/networking/interfaces
wenn Sie "vorhersehbare Netzwerkschnittstellennamen" verwenden?
Ubuntu-Versionen älter als 15.10 verwenden Netzwerkadapternamen wie:
eth0
eth1
eth2
Das Ersetzen einer Netzwerkkarte oder das Verschieben einer VM auf einen neuen Hypervisor würde dazu führen, dass Linux die Schnittstellennummer erhöht. Durch das Löschen /etc/udev/rules.d/70-peristent-net.rules
würde Linux wiederverwendet eth0
.
Ubuntu 15.10 und höher verwenden ' Vorhersagbare Netzwerkschnittstellennamen '. Der Name des Netzwerkadapters wird von der Mac-Adresse abgeleitet.
ens3
ens32
ens192
Bei der Migration einer VM wird das Netzwerk nicht gestartet, da /etc/network/interfaces
immer noch auf den alten nicht vorhandenen Netzwerkadapter verwiesen wird.
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).
source /etc/network/interfaces.d/*
# The loopback network interface
auto lo
iface lo inet loopback
# The primary network interface
auto ens32
iface ens32 inet dhcp
pre-up sleep 2
Wie kann die Datei / etc / network / interfaces am besten zurückgesetzt werden?
Ich muss diese Aktion ausführen, bevor ich die VM herunterfahre und auf einen neuen Hypervisor migriere, da ich Packer verwende , um automatisierte goldene Bilder basierend auf den goldenen Bildern des Küchenchefs / Bento zu erstellen.
Ich habe festgestellt, dass das Löschen von / etc / network / interfaces nicht funktioniert, da die Datei beim nächsten Start nach der Migration nicht automatisch neu generiert wird.
Ich habe versucht, meine Grub-Datei zu bearbeiten, um zur Namenskonvention 'eth0' zurückzukehren. Während sich / etc / network / interfaces auf den alten Namen (eth0) bezieht, erhält die VM keine IP und bei Neustarts verwendet die VM die neue Namenskonvention. Außerdem habe ich festgestellt, dass systemd immer Vorrang hat, es sei denn, ich kann garantieren, dass es biosdevname=0
dauerhaft in der grub-Konfiguration bleibt . Ich bin mir nicht sicher, wie ich das dauerhaft anwenden soll
GRUB_CMDLINE_LINUX_DEFAULT="net.ifnames=0 bios.devname=0"
Wenn möglich, würde ich lieber keine Cloud-Init oder Skripte nach dem Start verwenden, da ich die goldenen Bilder lieber so sauber wie möglich halten möchte.
Dies ist sicherlich ein Problem, das Cloud-Anbieter (Azure, AWS, RackSpace, Openstack) bereits beim Importieren von VMs gelöst haben. Ich kann unmöglich die erste Person sein, die versucht, eine VM mit vorhersehbaren Netzwerkschnittstellennamen zu migrieren.
Ich habe versucht, diese Befehle auszuführen, bevor ich die VM heruntergefahren und migriert habe
apt-get remove biosdevname -y;
ln -s /dev/null /etc/systemd/network/99-default.link;
Ich finde, wenn ich die VM migriere, das /etc/network/interfaces
und ip address
verweise immer noch aufens32