Changer les interfaces réseau nomme Ubuntu 16.04

55

J'ai essayé de changer le nom des interfaces réseau sur cette nouvelle version Ubuntu 16.04 LTS mais je n'ai pas le /etc/udev/rules.d/70-persistent-net.rules.

Alors, j'ai essayé d'utiliser /lib/udev/write_net_rulesmais ça n'existe pas.

Pourquoi ai-je besoin de cette modification? Parce que j'utilise un outil pour simuler des plateformes virtuelles qui utilisent des licences flex et que l'authentification doit être dans le eth0nom de l'interface.

Toute suggestion?

La commande ip linkretourne:

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  

(Certaines informations ont été ignorées et supprimées)

J'ai déjà essayé des liens:

Geancarlo Abich
la source

Réponses:

74

Il y a beaucoup d'informations trompeuses sur la façon de changer les noms de réseau dans les versions récentes d'Ubuntu. Certaines informations pointent vers systemd.link, ce qui est tout simplement faux car Ubuntu (à partir de 16.04) n'utilise pas cette partie de systemd.

En fait, le changement de nom d'interface fonctionne presque comme avant, à deux petites différences près: tout d'abord, le fichier /etc/udev/rules.d/70-persistent-net.rulesdoit maintenant être créé manuellement. Cela présente l'avantage que vous n'avez pas à craindre qu'un script remplace ce fichier et que vous puissiez simplement ajouter les lignes dont vous avez besoin (vous n'avez pas besoin de commentaires non plus). Deuxièmement - et c'est le changement qui m'a pris beaucoup de temps à comprendre - le format a légèrement changé par rapport à Ubuntu 14.04 LTS:

La ligne permettant de définir le nom d'interface du NIC avec l'adresse MAC "02: 01: 02: 03: 04: 05" sur "eth0" est la suivante:

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

Cette ligne a presque la même apparence que dans Ubuntu 14.04 LTS avec une légère différence: dans Ubuntu 14.04, il y avait la condition supplémentaire KERNEL=="eth*". Pour une raison quelconque, cela ne fonctionne pas dans Ubuntu 16.04 LTS. Si cette condition supplémentaire est présente, toute la ligne est ignorée et vous revenez au comportement par défaut (comme spécifié dans 80-net-setup-link.rules).

Sebastian Marsching
la source
2
Bingo! J'ai maintenant enusb01 pour la carte réseau de ma station d'accueil USB. Merci! # Station d'affichage USB Display Link SOUS-SYSTEME == "net", ACTION == "add", DRIVERS == "? *", ATTR {adresse} == "8c: ae: 4c: fa: 92: bf", ATTR { dev_id} == "0x0", ATTR {type} == "1", NOM = "enusb1"
papillotement
Comment puis-je définir le nom à enp0s1partir de enp0s17? Est-ce le même processus? De plus, que dois-je faire pour les interfaces réseau virtuelles telles que enp0s1:1ou enp0s2etc.?
soufrk
2
Vous n'avez pas vraiment besoin de spécifier tout cela dans 16.04. J'ai réussi à m'en sortirSUBSYSTEM=="net", ACTION=="add", ATTR{address}=="xx:xx:xx:xx:xx:xx", NAME="eth0"
kbuilds
4
@kbuilds, pour Linux From Scratch : DRIVERS == "? *" - Cela existe pour qu'Udev ignore les sous-interfaces VLAN ou les ponts (car ces sous-interfaces ne disposent pas de pilotes). Ces sous-interfaces sont ignorées car le nom attribué serait en conflit avec leurs périphériques parents.
John Doe
1
Important: vous devez éditer / etc / network / interfaces pour vous assurer que l'interface renommée est automatiquement lancée. Sinon, si vous êtes sur SSH - vous perdrez l'accès à cette machine, sans parler du temps perdu à essayer de comprendre pourquoi cela ne fonctionne pas.
user4551
66

Sur Ubuntu 16.04.1 LTS, Linux plaptop 4.4.0-31-genericx86_64 MATE. La première étape de @Geancarlo Abich a répondu et cela a fonctionné . Ubuntu a créé un nouveau nom directement après le redémarrage:

Editez votre / etc / default / grub en changeant la ligne de

GRUB_CMDLINE_LINUX=""

à

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

et enfin:

$ sudo update-grub

et redémarrez votre système:

$ 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)
étage
la source
1
ne fonctionne pas pour moi, après la mise à jour de ces étapes. ifcofig montre seulement la carte "lo", elle ne montre pas eth et ens :(
vimal prakash
2
Cela a fonctionné pour moi. @vimalprakash J'avais également seulement 'lo' apparaissant dans la sortie ifconfig après ce changement. Cependant, c'est parce que d'autres interfaces étaient en panne (faites ifconfig -a pour voir toutes les interfaces) car les configs dans mon / etc / network / interfaces étaient dans des noms plus anciens.
Chitti
Cela a fonctionné pour moi.
Paulo le
que font les commandes "net.ifnames = 0" && "biosdevname = 0" ??? Le message ici est de toute façon de l'or pur .... travaillé le 16.04 xubuntu
2
J'ai également travaillé sur Ubuntu le 18.04
Simon Warta.
12

Ubuntu-16.04-server-amd64

Dans /etc/default/grub, changer

GRUB_CMDLINE_LINUX=""

à

GRUB_CMDLINE_LINUX="net.ifnames=0"

Ensuite, tapez:

sudo update-grub

et redémarrez votre système

sudo reboot
Syed-anwar Syed-bueraheng Al-I
la source
3
Mieux vautGRUB_CMDLINE_LINUX="net.ifnames=0 biosdevname=0"
Musbach
8

J'ai essayé de mélanger quelques suggestions et j'avais trouvé la solution!

Étape 1 : désactivez les noms hérités du micrologiciel par défaut.

Modifier votre /etc/default/grubmodification de la ligne de

GRUB_CMDLINE_LINUX=""

à

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

et, enfin, lancez en tant que root:

$ sudo update-grub

et redémarrez votre système.

$ sudo reboot

Étape 2 : Créez le fichier persistant en/etc/udev/rules.d/70-persistent-net.rulestant que racine et remplissez-le.

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

Exemple:

# 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"

(Utilisez l'adresse MAC de l'interface pour faire référence à l'interface que vous souhaitez renommer et modifiez les valeurs du nom d'interface 'X' comme vous le souhaitez.)

Enregistrez les modifications et redémarrez.

$ sudo reboot

Cela fonctionne pour moi.

Geancarlo Abich
la source
5
La deuxième étape n'est pas nécessaire.
Musbach
1
Oui. Peut confirmer ce que @musbach a dit le 16.04
menixator