Ändern des Namens der Netzwerkschnittstelle Ubuntu 16.04

55

Ich habe versucht, den Namen der Netzwerkschnittstelle auf dieser neuen Ubuntu 16.04 LTS-Version zu ändern, habe aber nicht die /etc/udev/rules.d/70-persistent-net.rules.

Also habe ich versucht es zu benutzen /lib/udev/write_net_rulesaber es existiert nicht.

Warum brauche ich diese Änderung? Da ich ein Tool zum Simulieren von virtuellen Plattformen verwende, bei denen die Flex-Lizenzierung verwendet wird und die Authentifizierung im eth0Schnittstellennamen erfolgen muss.

Irgendein Vorschlag?

Der Befehl ip linkgibt Folgendes zurück:

user@laptop:~$ ip link 
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
2: enp6s0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc pfifo_fast state DOWN mode DEFAULT group default qlen 1000
link/ether b8:2a:xx:yy:xx:yy brd ff:ff:ff:ff:ff:ff
3: wlp7s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP mode DORMANT group default qlen 1000
link/ether 5c:e0:xx:yy:xx:yy brd ff:ff:ff:ff:ff:ff

user@laptop:~$ ifconfig 
enp6s0    Link encap:Ethernet  HWaddr b8:2a:xx:yy:xx:yy  
lo        Link encap:Local Loopback  
wlp7s0    Link encap:Ethernet  HWaddr 5c:e0:xx:yy:xx:yy  

(Einige Informationen wurden ignoriert und unterdrückt)

Ich habe bereits einige Links ausprobiert:

Geancarlo Abich
quelle

Antworten:

74

Es gibt viele irreführende Informationen zum Ändern von Netzwerknamen in neueren Versionen von Ubuntu. Einige Informationen verweisen auf systemd.link, was einfach falsch ist, da Ubuntu (ab 16.04) diesen Teil von systemd nicht verwendet.

Tatsächlich funktioniert das Ändern des Schnittstellennamens fast wie früher, mit zwei kleinen Unterschieden: Zuerst muss die Datei /etc/udev/rules.d/70-persistent-net.rulesjetzt manuell erstellt werden. Dies hat den Vorteil, dass Sie sich keine Sorgen machen müssen, dass ein Skript diese Datei überschreibt, und einfach die Zeilen hinzufügen können, die Sie benötigen (Sie brauchen auch keine Kommentare). Zweitens - und das ist die Änderung, die mich viel Zeit gekostet hat - hat sich das Format im Vergleich zu Ubuntu 14.04 LTS leicht geändert:

Die Zeile zur Festlegung des Schnittstellennamens der Netzwerkkarte mit der MAC-Adresse "02: 01: 02: 03: 04: 05" auf "eth0" lautet nun:

SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="02:01:02:03:04:05", ATTR{dev_id}=="0x0", ATTR{type}=="1", NAME="eth0"

Diese Zeile sieht fast genauso aus wie in Ubuntu 14.04 LTS mit einem kleinen Unterschied: In Ubuntu 14.04 gab es die zusätzliche Bedingung KERNEL=="eth*". Aus irgendeinem Grund funktioniert dies in Ubuntu 16.04 LTS nicht. Wenn diese zusätzliche Bedingung vorliegt, wird die gesamte Zeile ignoriert und Sie kehren zum Standardverhalten (wie in angegeben 80-net-setup-link.rules) zurück.

Sebastian Marsching
quelle
2
Bingo! Ich habe jetzt enusb01 für die Netzwerkkarte meiner USB-Dockingstation. Vielen Dank! # USB-Display-Link-Dockingstation SUBSYSTEM == "net", ACTION == "add", DRIVERS == "? *", ATTR {address} == "8c: ae: 4c: fa: 92: bf", ATTR { dev_id} == "0x0", ATTR {type} == "1", NAME = "enusb1"
flickerfly
Wie kann ich den Namen auf enp0s1von setzen enp0s17? Ist es der gleiche Prozess? Was soll ich auch für virtuelle Netzwerkschnittstellen wie enp0s1:1oder enp0s2so machen?
Soufrk
2
Sie müssen das alles in 16.04 nicht wirklich spezifizieren. Ich konnte mitSUBSYSTEM=="net", ACTION=="add", ATTR{address}=="xx:xx:xx:xx:xx:xx", NAME="eth0"
kbuilds 18.10.16
4
@kbuilds, per Linux From Scratch : DRIVERS == "? *" - Dies ist vorhanden, damit Udev VLAN ignoriert oder Sub-Interfaces überbrückt (da diese Sub-Interfaces keine Treiber haben). Diese Unterschnittstellen werden übersprungen, da der zugewiesene Name mit den übergeordneten Geräten kollidieren würde.
John Doe
1
Wichtig: Sie müssen / etc / network / interfaces bearbeiten, um sicherzustellen, dass die umbenannte Schnittstelle automatisch gestartet wird. Andernfalls verlieren Sie bei Verwendung von SSH den Zugriff auf diesen Computer und verlieren Zeit, um herauszufinden, warum er nicht funktioniert.
user4551
65

Unter Ubuntu 16.04.1 LTS, Linux plaptop 4.4.0-31-genericx86_64 MATE. Schritt eins von @Geancarlo Abich beantwortet und es hat funktioniert . Ubuntu hat direkt nach dem Neustart einen neuen Namen erstellt:

Bearbeiten Sie Ihre / etc / default / grub, indem Sie die Zeile von ändern

GRUB_CMDLINE_LINUX=""

zu

GRUB_CMDLINE_LINUX="net.ifnames=0 biosdevname=0"

und schlussendlich:

$ sudo update-grub

und starte dein System neu:

$ sudo reboot
msa@plaptop:~$ ifconfig 
eth0      Link encap:Ethernet  HWaddr 70:5a:0f:d7:03:38  
          inet addr:10.67.10.43  Bcast:10.67.10.255  Mask:255.255.255.0
          inet6 addr: fe80::8c03:edb5:a3d1:ba21/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:63129 errors:0 dropped:0 overruns:0 frame:0
          TX packets:37788 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:51115719 (51.1 MB)  TX bytes:5006758 (5.0 MB)
          Interrupt:16 Memory:f1200000-f1220000 

lo        Link encap:Local Loopback  
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:65536  Metric:1
          RX packets:255 errors:0 dropped:0 overruns:0 frame:0
          TX packets:255 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1 
          RX bytes:21076 (21.0 KB)  TX bytes:21076 (21.0 KB)

wlan0     Link encap:Ethernet  HWaddr 44:85:00:62:c6:e5  
          inet addr:10.67.14.106  Bcast:10.67.14.255  Mask:255.255.255.0
          inet6 addr: fe80::5844:f9dd:32ff:9b45/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:25 errors:0 dropped:0 overruns:0 frame:0
          TX packets:86 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:5320 (5.3 KB)  TX bytes:14611 (14.6 KB)
floorripper
quelle
1
funktioniert bei mir nicht, nach update dieser schritte. ifcofig zeigen nur "lo" -Karte, es zeigt nicht eth und ens :(
Vimal Prakash
2
Das hat bei mir funktioniert. @ Vimalprakash Ich hatte auch nur "lo" in ifconfig Ausgabe nach dieser Änderung angezeigt. Dies liegt jedoch daran, dass andere Schnittstellen nicht verfügbar waren (führen Sie ifconfig -a aus, um alle Schnittstellen anzuzeigen), da die Konfigurationen in meiner Datei / etc / network / interfaces die älteren Namen hatten.
Chitti
Es hat bei mir funktioniert.
Paulo
Was machen die Befehle "net.ifnames = 0" && "biosdevname = 0" ??? Der Beitrag hier ist sowieso pures Gold .... arbeitete am 16.04 xubuntu
2
Arbeitete auch an Ubuntu 18.04
Simon Warta
12

Ubuntu-16.04-Server-amd64

In /etc/default/grubändern

GRUB_CMDLINE_LINUX=""

zu

GRUB_CMDLINE_LINUX="net.ifnames=0"

Dann tippe ein:

sudo update-grub

und starten Sie Ihr System neu

sudo reboot
Syed-anwar Syed-bueraheng Al-I
quelle
3
Besser istGRUB_CMDLINE_LINUX="net.ifnames=0 biosdevname=0"
musbach
8

Ich habe versucht, einige Vorschläge zu mischen und ich hatte die Lösung gefunden!

Schritt 1 : Deaktivieren Sie die geerbten Standardnamen der Firmware.

Bearbeiten Sie das /etc/default/grubÄndern der Zeile von

GRUB_CMDLINE_LINUX=""

zu

GRUB_CMDLINE_LINUX="net.ifnames=0 biosdevname=0"

und schließlich als root ausführen:

$ sudo update-grub

und starten Sie Ihr System neu.

$ sudo reboot

Schritt 2 : Erstellen Sie die persistente Datei/etc/udev/rules.d/70-persistent-net.rulesals Root und füllen Sie sie aus.

$ sudo gedit /etc/udev/rules.d/70-persistent-net.rules

Beispiel:

# This file was automatically generated by the /lib/udev/write_net_rules
# program, run by the persistent-net-generator.rules rules file.
#
# You can modify it, as long as you keep each rule on a single
# line, and change only the value of the NAME= key.

# PCI device lan Device
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="XX:yy:XX:yy:XX:yy", ATTR{dev_id}=="0x0", ATTR{type}=="1", KERNEL=="eth*", NAME="ethX"

# PCI device Wlan Device
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="XX:yy:XX:yy:XX:yy", ATTR{dev_id}=="0x0", ATTR{type}=="1", KERNEL=="eth*", NAME="wlanX"

(Verwenden Sie die MAC-Adresse der Schnittstelle, um auf die Schnittstelle zu verweisen, die Sie umbenennen möchten, und ändern Sie die Werte für den Schnittstellennamen 'X' wie gewünscht.)

Änderungen speichern und neu starten.

$ sudo reboot

Das funktioniert bei mir.

Geancarlo Abich
quelle
4
Schritt zwei ist nicht erforderlich.
musbach
1
Ja. Kann bestätigen, was @musbach am 16.04.
Sagte