Namen von Netzwerk-Interfaces

classic Classic list List threaded Threaded
5 messages Options
Reply | Threaded
Open this post in threaded view
|

Namen von Netzwerk-Interfaces

Christoph Pleger-4
Hallo,

Ich habe auf einem NFS-Server mehrere Chroot-Umgebungen, mit mehreren
Versionen von Debian und Ubuntu, die von Clients als NFSROOTs verwendet
werden können. Nachdem ich die Umgebung für Ubuntu 16.04 eingerichtet
hatte, hieß zum ersten Mal das Netzwerk-Interface auf dem Client nicht
mehr eth0, sondern irgendwas mit en am Anfang, den genauen Namen weiß ich
nicht mehr. Gut, von dieser Änderung, wie Netzwerk-Interfaces benannt
werden, war ja schon längere Zeit zu lesen.

Nun habe ich aber gestern innerhalb der chroot-Umgebung für Ubuntu 16.04
ein Kernel-Upgrade durchgeführt, aktuelle Version ist 4.4.0-47-generic,
und plötzlich heißt das Interface doch wieder eth0.

Hat noch jemand beobachtet, dass nach einem Upgrade auf 4.4.0-47-generic
Netzwerk-Devices wieder nach dem alten Schema benannt werden? Oder handelt
es um ein Problem in meiner Umgebung - was ich aber für unwahrscheinlich
halte, da ich sicher bin, keine andere Änderung gemacht zu haben, die das
verursachen könnte?

Und falls es am Kernel liegt - weiß jemand, ob bei den folgenden
xenial-Kerneln die Benennung nun so bleibt oder sich wieder öndert?

Viele Grüße
  Christoph


--
ubuntu-de mailing list
[hidden email]
https://lists.ubuntu.com/mailman/listinfo/ubuntu-de
Reply | Threaded
Open this post in threaded view
|

Re: Namen von Netzwerk-Interfaces

Christoph Pleger-4
Hallo,

ich schrieb:

> Ich habe auf einem NFS-Server mehrere Chroot-Umgebungen, mit mehreren
> Versionen von Debian und Ubuntu, die von Clients als NFSROOTs verwendet
> werden können. Nachdem ich die Umgebung für Ubuntu 16.04 eingerichtet
> hatte, hieß zum ersten Mal das Netzwerk-Interface auf dem Client nicht
> mehr eth0, sondern irgendwas mit en am Anfang, den genauen Namen weiß ich
> nicht mehr. Gut, von dieser Änderung, wie Netzwerk-Interfaces benannt
> werden, war ja schon längere Zeit zu lesen.
>
> Nun habe ich aber gestern innerhalb der chroot-Umgebung für Ubuntu 16.04
> ein Kernel-Upgrade durchgeführt, aktuelle Version ist 4.4.0-47-generic,
> und plötzlich heißt das Interface doch wieder eth0.
> [...]

Jetzt wird es richtig kompliziert.

Ich habe nämlich festgestellt, dass ich - was mir bis gerade nicht bewusst
war - neben dem Boot mit einem anderen Kernel noch was anderes anders
gemacht habe als vorher: Es waren nämlich die ersten Boots per Netzwerk,
bei denen ich auf den Namen des Interfaces geachtet habe; zwischendurch
habe ich dasselbe System immer per CD gebootet. Und mit dem CD-Boot habe
ich den neuen Namen enp0s25, mit dem Netzwerk-Boot den alten Namen eth0.

Standard soll der Boot per Netzwerk sein, nicht der per CD. Weil das
Verfahren dazu dienen soll, ein Grundsystem auf Festplatte zu
installieren, wozu auch gehört, die Netzwerk-Konfiguration zu erstellen,
habe ich nun offensichtlich folgendes Problem: Wie soll die
Netzwerk-Konfiguration erstellt werden, wenn unbekannt ist, wie das
Netzwerk-Interface nach dem ersten Boot von Festplatte heißen wird?

Daher meine Frage: Kann man auch bei einem Netzwerk-Boot die Verwendung
des neuen Schemas zur Benennung von Netzwerk-Interfaces zu erzwingen? Oder
gibt es eine Möglichkeit, den Namen, den das Interface nach dem Boot von
Festplatte haben wird, vorher zu ermitteln?

Viele Grüße
  Christoph


--
ubuntu-de mailing list
[hidden email]
https://lists.ubuntu.com/mailman/listinfo/ubuntu-de
Reply | Threaded
Open this post in threaded view
|

Re: Namen von Netzwerk-Interfaces

DJ Decstasy
Moin Christoph,

> Daher meine Frage: Kann man auch bei einem Netzwerk-Boot die Verwendung
> des neuen Schemas zur Benennung von Netzwerk-Interfaces zu erzwingen?
> Oder
> gibt es eine Möglichkeit, den Namen, den das Interface nach dem Boot
> von
> Festplatte haben wird, vorher zu ermitteln?

Ich weiß nicht, wie sehr dir die Information hilft, aber du kannst in
den udev rules unter /etc/udev/rules.d/ die Datei
70-persistent-net.rules editieren und dort nach folgenden schema deine
Interfaces definieren:

# PCI device 0x14e4:0x1657 (tg3)
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*",
ATTR{address}=="ac:16:2d:74:7b:44", ATTR{type}=="1", KERNEL=="eth*",
NAME="eth0"

# PCI device 0x14e4:0x1657 (tg3)
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*",
ATTR{address}=="ac:16:2d:74:7b:47", ATTR{type}=="1", KERNEL=="eth*",
NAME="eth3"

# PCI device 0x14e4:0x1657 (tg3)
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*",
ATTR{address}=="ac:16:2d:74:7b:45", ATTR{type}=="1", KERNEL=="eth*",
NAME="eth1"

# PCI device 0x14e4:0x1657 (tg3)
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*",
ATTR{address}=="ac:16:2d:74:7b:46", ATTR{type}=="1", KERNEL=="eth*",
NAME="eth2"

Sollte die Datei nicht existieren, kannst du diese mittels "udevadm
trigger --type=devices --action=add" anlegen lassen. Danach kannst du
die Datei editieren und mit "udevadm trigger" neu einlesen, womit deine
Devices auch umbenannt werden, sofern du das entsprechende Attribut
geändert hast.

Viele Grüße,
Dennis

--
ubuntu-de mailing list
[hidden email]
https://lists.ubuntu.com/mailman/listinfo/ubuntu-de
Reply | Threaded
Open this post in threaded view
|

Re: Namen von Netzwerk-Interfaces

Nils Kassube-2
In reply to this post by Christoph Pleger-4
Christoph Pleger wrote:

> Standard soll der Boot per Netzwerk sein, nicht der per CD. Weil das
> Verfahren dazu dienen soll, ein Grundsystem auf Festplatte zu
> installieren, wozu auch gehört, die Netzwerk-Konfiguration zu
> erstellen, habe ich nun offensichtlich folgendes Problem: Wie soll
> die
> Netzwerk-Konfiguration erstellt werden, wenn unbekannt ist, wie das
> Netzwerk-Interface nach dem ersten Boot von Festplatte heißen wird?
>
> Daher meine Frage: Kann man auch bei einem Netzwerk-Boot die
> Verwendung des neuen Schemas zur Benennung von Netzwerk-Interfaces zu
> erzwingen? Oder gibt es eine Möglichkeit, den Namen, den das
> Interface nach dem Boot von Festplatte haben wird, vorher zu
> ermitteln?

Du könntest z.B. mit einem Script die MAC-Adresse des Interface
ermitteln und dann über eine udev-Regel den Namen auf z.B. eth0 setzen.
Solch eine udev-Regel wurde bisher automatisch erstellt und sieht dann
so aus in "/etc/udev/rules.d/70-persistent-net.rules":

SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*",
ATTR{address}=="xx:xx:xx:xx:xx:xx", ATTR{dev_id}=="0x0",
ATTR{type}=="1", KERNEL=="eth*", NAME="eth0"

Das alles in einer Zeile und die MAC-Adresse muss natürlich entsprechend
eingesetzt werden. Ob das 'KERNEL=="eth*"' mit der neuen Interface-
Bezeichnung kompatibel ist, weiß ich nicht 100%. Allerdings haben meine
Rechner nach dem Upgrade von 14.04 auf 16.04 diese Regel behalen und der
Name ist weiterhin eth0.


NIls


--
ubuntu-de mailing list
[hidden email]
https://lists.ubuntu.com/mailman/listinfo/ubuntu-de
Reply | Threaded
Open this post in threaded view
|

Re: Namen von Netzwerk-Interfaces

Christoph Pleger-4
In reply to this post by DJ Decstasy
Hallo,

> Ich weiß nicht, wie sehr dir die Information hilft, aber du kannst in
> den udev rules unter /etc/udev/rules.d/ die Datei
> 70-persistent-net.rules editieren und dort nach folgenden schema deine
> Interfaces definieren:

Vielen Dank für den Tipp. Aber ich habe tatsächlich gefunden, wie sich der
neue Name im Voraus ermitteln lässt:

udevadm test /sys/class/net/eth0 | grep ID_NET_NAME=

Viele Grüße
  Christoph


--
ubuntu-de mailing list
[hidden email]
https://lists.ubuntu.com/mailman/listinfo/ubuntu-de