Modifica del nome delle interfacce di rete Ubuntu 16.04


55

Ho provato a cambiare il nome delle interfacce di rete su questa nuova versione di Ubuntu 16.04 LTS ma non ne ho /etc/udev/rules.d/70-persistent-net.rules.

Quindi, ho provato a usare /lib/udev/write_net_rulesma non esiste.

Perché ho bisogno di questa modifica? Perché sto usando uno strumento per simulare piattaforme virtuali che usano licenze flessibili e l'autenticazione deve essere nel eth0nome dell'interfaccia.

Qualche suggerimento?

Il comando ip linkrestituisce:

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  

(Alcune informazioni sono state ignorate e soppresse)

Ho già provato alcuni link:

Risposte:


74

Ci sono molte informazioni fuorvianti su come cambiare i nomi di rete nelle ultime versioni di Ubuntu. Alcune informazioni rimandano a systemd.link, che è semplicemente sbagliato perché Ubuntu (a partire dal 16.04) non utilizza questa parte di systemd.

In realtà, la modifica del nome dell'interfaccia funziona quasi come una volta, con due piccole differenze: in primo luogo, il file /etc/udev/rules.d/70-persistent-net.rulesora deve essere creato manualmente. Questo ha il vantaggio di non doverti preoccupare di alcuno script che sovrascrive questo file e può semplicemente aggiungere le righe che ti servono (non hai bisogno di commenti). Secondo - e questo è il cambiamento che mi è costato molto tempo per capirlo - il formato è leggermente cambiato rispetto a Ubuntu 14.04 LTS:

La riga per fissare il nome dell'interfaccia della scheda NIC con l'indirizzo MAC "02: 01: 02: 03: 04: 05" su "eth0" è ora:

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

Questa linea sembra quasi uguale a quella di Ubuntu 14.04 LTS con una leggera differenza: in Ubuntu 14.04 c'erano le condizioni aggiuntive KERNEL=="eth*". Per qualche motivo, questo non funziona in Ubuntu 16.04 LTS. Se questa condizione aggiuntiva è presente, l'intera riga viene ignorata e si ritorna al comportamento predefinito (come specificato in 80-net-setup-link.rules).


2
Bingo! Ora ho enusb01 per la scheda NIC della mia docking station USB. Grazie! # Docking station USB Display Link SUBSYSTEM == "net", ACTION == "add", DRIVERS == "? *", ATTR {address} == "8c: ae: 4c: fa: 92: bf", ATTR { dev_id} == "0x0", ATTR {type} == "1", NAME = "enusb1"
flickerfly

Come posso impostare il nome enp0s1da enp0s17? È lo stesso processo? Inoltre, cosa devo fare per interfacce di rete virtuali come enp0s1:1o enp0s2ecc.?
soufrk,

2
Non è necessario specificarlo tutto nel 16.04. Sono stato in grado di SUBSYSTEM=="net", ACTION=="add", ATTR{address}=="xx:xx:xx:xx:xx:xx", NAME="eth0"
cavarmela

4
@kbuilds, per Linux From Scratch : DRIVERS == "? *" - Questo esiste in modo che Udev ignori le interfacce secondarie VLAN o bridge (poiché queste interfacce secondarie non hanno driver). Queste interfacce secondarie vengono ignorate perché il nome che verrebbe assegnato si scontrerebbe con i loro dispositivi genitori.
John Doe,

1
Importante: è necessario modificare / etc / network / interfaces per assicurarsi che l'interfaccia rinominata venga avviata automaticamente. Altrimenti, se sei su SSH, perderai l'accesso a quella macchina, per non parlare del tempo perso cercando di capire perché non funziona.
user4551

66

Su Ubuntu 16.04.1 LTS, Linux plaptop 4.4.0-31-genericx86_64 MATE. passo uno della risposta @Geancarlo Abich e ha funzionato . Ubuntu ha creato un nuovo nome direttamente dopo il riavvio:

Modifica il tuo / etc / default / grub cambiando la linea da

GRUB_CMDLINE_LINUX=""

per

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

e infine:

$ sudo update-grub

e riavvia il tuo sistema:

$ 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)

1
non funziona per me, dopo l'aggiornamento di questi passaggi. ifcofig mostra solo la carta "lo", non mostra eth e ens :(
vimal prakash

2
Questo ha funzionato per me. @vimalprakash Ho anche mostrato 'lo' solo nell'output di ifconfig dopo questa modifica. Tuttavia, questo perché altre interfacce erano inattive (fare ifconfig -a per vedere tutte le interfacce) poiché le configurazioni nella mia / etc / network / interfaces erano nei nomi più vecchi.
Chitti,

Ha funzionato per me.
Paulo,

cosa fanno i comandi "net.ifnames = 0" && "biosdevname = 0" ??? Il post qui è oro puro comunque .... ha funzionato su 16.04 xubuntu

2
Ha funzionato anche su Ubuntu 18.04
Simon Warta,

12

Ubuntu-16.04-server-amd64

In /etc/default/grub, cambia

GRUB_CMDLINE_LINUX=""

per

GRUB_CMDLINE_LINUX="net.ifnames=0"

Quindi digitare:

sudo update-grub

e riavviare il sistema

sudo reboot

3
Meglio èGRUB_CMDLINE_LINUX="net.ifnames=0 biosdevname=0"
musbach,

8

Ho provato a mescolare alcuni suggerimenti e avevo trovato la soluzione!

Passaggio 1 : disabilitare i nomi ereditati dal firmware predefinito.

Modifica la tua /etc/default/grubmodifica della linea da

GRUB_CMDLINE_LINUX=""

per

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

e, infine, esegui come root:

$ sudo update-grub

e riavviare il sistema.

$ sudo reboot

Passaggio 2 : creare il file persistente/etc/udev/rules.d/70-persistent-net.rulescome root e riempirli.

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

Esempio:

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

(Utilizzare l'indirizzo MAC delle interfacce per fare riferimento all'interfaccia che si desidera rinominare e modificare i valori del nome dell'interfaccia "X" come desiderato)

Salva le modifiche e riavvia.

$ sudo reboot

Questo funziona per me.


5
Il secondo passaggio non è necessario.
musbach,

1
Sì. Posso confermare ciò che ha detto @musbach il 16.04
menixator,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.