Ändern der Namen von Netzwerkschnittstellen, Debian Wheezy

14

Ich versuche, einen Namen für eine Schnittstelle festzulegen, "ethLan" anstelle von eth0. Dadurch wird auch sichergestellt, dass der if-Name bei jedem Neustart und Kernel konsistent bleibt.

Ich habe einige Artikel in dem Thema gefunden, aber sie sind alle ein paar Jahre alt:
http://www.debian-administration.org/articles/463
http://www.linuxfromscratch.org/hints/downloads/files/ nameif.txt

Ich tat , wie sie sagten , und den zusätzlichen ethLan mac zu / etc / mactabs / . Zu diesem Zeitpunkt habe ich zwei Probleme:
1) Das if [...] && /sbin/nameifSkript, das ich unter /etc/network/if-pre-up.d/ abgelegt habe, wird nicht ausgeführt. Ich habe dies gelöst, indem ich dies zu /etc/init.d/networking hinzugefügt habe , aber warum funktioniert if-pre-up.d nicht ?
2) Die Schnittstelle wird erst geladen, wenn ich ifconfig ethLan up manuell durchführe , obwohl ich sie zu / etc / network / interfaces hinzugefügt habe . Was mache ich falsch?

Benutzer
quelle

Antworten:

17

Die Artikel, die Sie gefunden haben, sind etwas veraltet. Es gibt jetzt eine einfache Methode, Netzwerkschnittstellen über Udev Namen zuzuweisen .

Suchen Sie unter Debian und Derivaten (einschließlich Ubuntu) nach einer Datei namens /etc/udev/rules.d/70-persistent-net.rules. Diese Datei wird /lib/udev/rules.d/75-persistent-net-generator.rulesmit Hilfe des Skripts erstellt /lib/udev/write_net_rules. Jedes Mal, wenn udev ein neues Netzwerkgerät sieht, wird ihm eine neue Nummer zugewiesen und an diese Nummer angehängt /etc/udev/rules.d/70-persistent-net.rules. Auf diese Weise bleiben die Schnittstellennummern auch nach einem Neustart erhalten und bleiben auch nach einer Neuinstallation erhalten, wenn Sie eine Wiederherstellung durchführen /etc.

(Wenn Ihre Distribution diese Dateien nicht liefert, suchen Sie sie im Debian-Paket .)

Wenn Sie einen aussagekräftigen Namen an eine Schnittstelle geben wollen , und Sie haben /etc/udev/rules.d/70-persistent-net.rulesalles, was Sie tun müssen , um zu bearbeiten , dass Datei und ändern "eth0"zu "ethLan". Führen udevadm trigger --sysname eth0Sie " Ausführen" aus , um das vorhandene Gerät umzubenennen, nachdem Sie die Datei bearbeitet haben (ich denke, dies erfordert das Herunterfahren der Benutzeroberfläche). Wenn Sie diese Datei nicht haben, können Sie die einzeilige Entsprechung selbst schreiben (die komplizierten Skripte, die Debian hinzufügt, tun dies nur automatisch):

SUBSYSTEM=="net", DRIVERS=="?*", ATTR{address}=="01:23:45:67:89:ab", NAME="ethLan"
Gilles 'SO - hör auf böse zu sein'
quelle
1
Wenn Sie eine handliche Liste von Attributen benötigen, die in udev-Regeln verwendet werden können, können Sie Folgendes ausprobieren udevadm info -a /sys/class/net/eth0. (siehe udevadm(8)für Details)
Austin Adams
1
Die Frage besagt eindeutig, dass sie für Wheezy bestimmt ist, es ist jedoch erwähnenswert, dass diese Antwort für neuere Debian- und Ubuntu-Versionen nicht mehr gültig ist. Beginnend mit systemd 220-7 muss die Benennung der Schnittstelle auf andere Weise erfolgen.
Sampi
@sampi Meine Antwort gilt immer noch für Debian Jessie (die aktuelle stabile Version). Scheitert es beim Strecken oder empfiehlt es nur eine veraltete Methode? Weißt du, welches Release von Ubuntu das Ende ist?
Gilles 'SO - hör auf böse zu sein'
@Gilles Ich habe nicht tief genug in die Details gegraben, um zu wissen, ob es tatsächlich versagt oder nur eine empfohlene Abwertung ist. Es scheint, dass Ubuntu Wily und neuere Systeme eine höhere Version als 220-7 verwenden .
Sampi
6

Für Leute, die über eine Suchmaschine auf diesen Beitrag stoßen, wie ich:

In Debian stretch und neueren Versionen können Sie systemd.link-Dateien verwenden, um udev die Geräte umbenennen zu lassen. Die Manpage finden Sie unter https://manpages.debian.org/stretch/udev/systemd.link.5.de.html .

Ein Beispiel:

cat /etc/systemd/network/10-uplink0.link 
[Match]
MACAddress=00:0d:b9:49:8a:18

[Link]
Name=uplink0

Vergiss nicht, danach zu starten update-initramfs -u, um diese aktualisierten Konfigurationsdateien in dein initramfs einzubetten, wo sie angewendet werden.

Michael
quelle
Wenn die Linkdateien in einem System mit udev.rules.d vorhanden sind, welche haben Vorrang?
Vfclists
1

Es gibt einen etwas einfacheren Weg, dies mit einem Paket namens zu tun ifrename. Es hat eine separate udevKonfigurationsdatei und Sie können MAC-Adressen verwenden, um Schnittstellen zu identifizieren.

Es widerspricht wireless-toolsjedoch.

Mischa Arefiev
quelle
2
Es ist zu beachten, dass ifrenameein Konflikt auftritt, udevwenn beide verwendet werden, um den Schnittstellen dauerhafte Namen zu geben.
Mischa Arefiev