Cambiar el nombre de las interfaces de red Ubuntu 16.04


55

Traté de cambiar el nombre de las interfaces de red en esta nueva versión Ubuntu 16.04 LTS pero no tengo el /etc/udev/rules.d/70-persistent-net.rules.

Entonces, traté de usar /lib/udev/write_net_rulespero no existe.

¿Por qué necesito esta modificación? Porque estoy usando una herramienta para simular plataformas virtuales que usan licencias flexibles y la autenticación debe estar en el eth0nombre de la interfaz.

¿Cualquier sugerencia?

El comando ip linkdevuelve:

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  

(Alguna información fue ignorada y suprimida)

Ya probé algunos enlaces:

Respuestas:


74

Hay mucha información engañosa sobre cómo cambiar los nombres de red en versiones recientes de Ubuntu. Parte de la información apunta a systemd.link, lo cual es incorrecto porque Ubuntu (a partir del 16.04) no usa esta parte de systemd.

En realidad, cambiar el nombre de la interfaz funciona casi como solía hacerlo, con dos pequeñas diferencias: Primero, el archivo /etc/udev/rules.d/70-persistent-net.rulesahora debe crearse manualmente. Esto tiene la ventaja de que no tiene que preocuparse de que ningún script sobrescriba este archivo y simplemente puede agregar las líneas que necesita (tampoco necesita comentarios). Segundo, y este es el cambio que me costó mucho tiempo resolverlo, el formato cambió ligeramente en comparación con Ubuntu 14.04 LTS:

La línea para fijar el nombre de interfaz de la NIC con la dirección MAC "02: 01: 02: 03: 04: 05" a "eth0" es ahora:

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

Esta línea se ve casi igual que en Ubuntu 14.04 LTS con una ligera diferencia: en Ubuntu 14.04, existía la condición adicional KERNEL=="eth*". Por alguna razón, esto no funciona en Ubuntu 16.04 LTS. Si esta condición adicional está presente, se ignora toda la línea y vuelve al comportamiento predeterminado (como se especifica en 80-net-setup-link.rules).


2
¡Bingo! Ahora tengo enusb01 para la NIC de mi USB Docking Station. ¡Gracias! # USB Display Link Docking Station SUBSISTEMA == "net", ACTION == "add", DRIVERS == "? *", ATTR {address} == "8c: ae: 4c: fa: 92: bf", ATTR { dev_id} == "0x0", ATTR {type} == "1", NAME = "enusb1"
flickerfly

¿Cómo puedo configurar el nombre enp0s1de enp0s17? ¿Es el mismo proceso? Además, ¿qué debo hacer para interfaces de red virtuales como enp0s1:1o enp0s2etc.?
soufrk

2
Realmente no necesita especificar todo eso en 16.04. Pude SUBSYSTEM=="net", ACTION=="add", ATTR{address}=="xx:xx:xx:xx:xx:xx", NAME="eth0"
escaparme

44
@kbuilds, por Linux From Scratch : DRIVERS == "? *": esto existe para que Udev ignore las interfaces VLAN o puente (porque estas interfaces no tienen controladores). Estas subinterfaces se omiten porque el nombre que se asignaría colisionaría con sus dispositivos principales.
John Doe

1
Importante: debe editar / etc / network / interfaces para asegurarse de que la interfaz renombrada se inicie automáticamente. De lo contrario, si está en SSH, perderá el acceso a esa máquina, sin mencionar el desperdicio de tiempo tratando de descubrir por qué no funciona.
user4551

66

En Ubuntu 16.04.1 LTS, Linux plaptop 4.4.0-31-genericx86_64 MATE. el primer paso de @Geancarlo Abich respondió y funcionó . Ubuntu creó nuevos nombres directamente después del reinicio:

Edite su / etc / default / grub cambiando la línea de

GRUB_CMDLINE_LINUX=""

a

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

y finalmente:

$ sudo update-grub

y reinicie su 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
No funciona para mí, después de la actualización de estos pasos. ifcofig muestra solo la tarjeta "lo", no muestra eth y ens :(
vimal prakash

2
Esto funcionó para mí. @vimalprakash También solo aparecía 'lo' en la salida de ifconfig después de este cambio. Sin embargo, eso se debe a que otras interfaces estaban inactivas (haga ifconfig -a para ver todas las interfaces) ya que las configuraciones en mi / etc / network / interfaces estaban en los nombres más antiguos.
chitti

A mi me funciono.
Paulo

¿Qué hacen los comandos "net.ifnames = 0" && "biosdevname = 0" ??? La publicación aquí es oro puro de todos modos ... trabajó en 16.04 xubuntu

2
También funcionó en Ubuntu 18.04
Simon Warta

12

Ubuntu-16.04-server-amd64

En /etc/default/grubcambio

GRUB_CMDLINE_LINUX=""

a

GRUB_CMDLINE_LINUX="net.ifnames=0"

Luego, escriba:

sudo update-grub

y reinicie su sistema

sudo reboot

3
Mejor esGRUB_CMDLINE_LINUX="net.ifnames=0 biosdevname=0"
musbach

8

Traté de mezclar algunas sugerencias y ¡encontré la solución!

Paso 1 : deshabilite los nombres heredados predeterminados del firmware.

Edite su /etc/default/grubcambio de línea de

GRUB_CMDLINE_LINUX=""

a

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

y, finalmente, ejecutar como root:

$ sudo update-grub

y reinicie su sistema.

$ sudo reboot

Paso 2 : Cree el archivo persistente/etc/udev/rules.d/70-persistent-net.rulescomo root y complételo.

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

Ejemplo:

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

(Utilice la dirección MAC de las interfaces para referirse a la interfaz que desea cambiar de nombre y cambie los valores de nombre de la interfaz 'X' como desee)

Guardar cambios y reiniciar.

$ sudo reboot

Esto funciona para mi.


55
El paso dos no es necesario.
musbach

1
Sí. Puede confirmar lo que dijo @musbach el 16.04
menixator
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.