Alterando o nome de interfaces de rede Ubuntu 16.04

55

Tentei alterar o nome das interfaces de rede nesta nova versão do Ubuntu 16.04 LTS, mas não possui o /etc/udev/rules.d/70-persistent-net.rules.

Então, eu tentei usar, /lib/udev/write_net_rulesmas ele não existe.

Por que preciso dessa modificação? Porque estou usando uma ferramenta para simular plataformas virtuais que usam o licenciamento flexível e a autenticação precisa estar no eth0nome da interface.

Alguma sugestão?

O comando ip linkretorna:

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  

(Algumas informações foram ignoradas e suprimidas)

Eu já tentei alguns links:

Geancarlo Abich
fonte

Respostas:

74

Há muitas informações enganosas sobre como alterar os nomes de rede nas versões recentes do Ubuntu. Algumas informações apontam para systemd.link, o que está errado porque o Ubuntu (a partir do 16.04) não usa essa parte do systemd.

Na verdade, alterar o nome da interface funciona quase como antes, com duas pequenas diferenças: Primeiro, o arquivo /etc/udev/rules.d/70-persistent-net.rulesagora precisa ser criado manualmente. Isso tem a vantagem de que você não precisa se preocupar com nenhum script que substitua esse arquivo e pode simplesmente adicionar as linhas necessárias (você também não precisa de comentários). Segundo - e essa é a mudança que me custou muito tempo para descobrir - o formato mudou um pouco em comparação ao Ubuntu 14.04 LTS:

A linha para corrigir o nome da interface da NIC com o endereço MAC "02: 01: 02: 03: 04: 05" para "eth0" agora é:

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

Essa linha parece quase a mesma do Ubuntu 14.04 LTS, com uma pequena diferença: no Ubuntu 14.04, havia uma condição adicional KERNEL=="eth*". Por alguma razão, isso não funciona no Ubuntu 16.04 LTS. Se essa condição adicional estiver presente, a linha inteira será ignorada e você voltará ao comportamento padrão (conforme especificado em 80-net-setup-link.rules).

Sebastian Marsching
fonte
2
Bingo! Agora tenho enusb01 para a placa de rede da minha estação de acoplamento USB. Obrigado! # Estação de acoplamento de link de exibição USB SUBSISTEMA == "net", AÇÃO == "add", DRIVERS == "? *", ATTR {endereço} == "8c: ae: 4c: fa: 92: bf", ATTR { dev_id} == "0x0", ATTR {type} == "1", NAME = "enusb1"
flickerfly
Como posso definir o nome enp0s1de enp0s17? É o mesmo processo? Além disso, o que devo fazer para interfaces de rede virtuais como enp0s1:1ou enp0s2etc.?
Soufrk # 5/16
2
Você realmente não precisa especificar tudo isso no 16.04. Eu era capaz de me safar comSUBSYSTEM=="net", ACTION=="add", ATTR{address}=="xx:xx:xx:xx:xx:xx", NAME="eth0"
kbuilds
4
@kbuilds, por Linux From Scratch : DRIVERS == "? *" - Isso existe para que o Udev ignore as sub-interfaces de VLAN ou de ponte (porque essas sub-interfaces não possuem drivers). Essas subinterfaces são ignoradas porque o nome que seria atribuído colidiria com os dispositivos pai.
John Doe
11
Importante: você precisa editar o arquivo / etc / network / interfaces para garantir que a interface renomeada seja iniciada automaticamente. Caso contrário, se você estiver no SSH - perderá o acesso a essa máquina, sem mencionar a perda de tempo tentando descobrir por que ela não funciona.
user4551 29/01
66

No Ubuntu 16.04.1 LTS, Linux plaptop 4.4.0-31-genericx86_64 MATE. passo um da resposta de @Geancarlo Abich e funcionou . O Ubuntu criou um novo nome diretamente após a reinicialização:

Edite seu / etc / default / grub alterando a linha de

GRUB_CMDLINE_LINUX=""

para

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

e finalmente:

$ sudo update-grub

e reinicie o seu 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)
floorripper
fonte
11
não está funcionando para mim, após a atualização dessas etapas. O ifcofig mostra apenas o cartão "lo", ele não mostra eth e ens :(
vimal prakash 26/11/16
2
Isso funcionou para mim. @vimalprakash Eu também tinha apenas 'lo' aparecendo na saída ifconfig após essa alteração. No entanto, isso ocorre porque outras interfaces estavam inativas (faça ifconfig -a para ver todas as interfaces), pois as configurações em minhas / etc / network / interfaces estavam nos nomes mais antigos.
Chitti
Funcionou para mim.
Paulo
o que os comandos "net.ifnames = 0" && "biosdevname = 0" fazem ??? O post aqui é ouro puro de qualquer maneira .... trabalhou em 16,04 xubuntu
2
Também funcionou no Ubuntu 18.04
Simon Warta 28/03
12

Ubuntu-16.04-server-amd64

Em /etc/default/grub, a mudança

GRUB_CMDLINE_LINUX=""

para

GRUB_CMDLINE_LINUX="net.ifnames=0"

Em seguida, digite:

sudo update-grub

e reinicie o seu sistema

sudo reboot
Syed-Anwar Syed-Bueraheng Al-I
fonte
3
Melhor éGRUB_CMDLINE_LINUX="net.ifnames=0 biosdevname=0"
Musbach
8

Tentei misturar algumas sugestões e encontrei a solução!

Etapa 1 : desative os nomes herdados do firmware padrão.

Edite a /etc/default/grubalteração da linha de

GRUB_CMDLINE_LINUX=""

para

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

e, finalmente, execute como root:

$ sudo update-grub

e reinicie o seu sistema.

$ sudo reboot

Etapa 2 : Crie o arquivo persistente/etc/udev/rules.d/70-persistent-net.rulescomo raiz e preencha-o.

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

Exemplo:

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

(Use o endereço MAC da interface para se referir à interface que você deseja renomear e altere os valores do nome da interface 'X' conforme desejar)

Salve as alterações e reinicie.

$ sudo reboot

Isso funciona para mim.

Geancarlo Abich
fonte
5
O passo dois não é necessário.
Musbach
11
Sim. Pode confirmar o que @musbach disse em 16.04
menixator 20/02