Interface não renomeará sob systemd

4

Estou tentando renomear uma interface de rede em um VPS Ubuntu 16.04, mas não consigo fazer isso. O Systemd nomeia minha interface de rede primária enp0s3. Quero renomear essa interface para eth0.

De acordo com a documentação do systemd.link , criei um arquivo chamado /etc/systemd/network/10-eth0.link com o seguinte conteúdo:

[Match]
MACAddress=08:00:27:f7:57:e5

[Link]
Name=eth0

O endereço MAC corresponde ao fornecido na saída ip a da interface. Também renomeiei as entradas enp0s3 para eth0 no arquivo /etc/network/interfaces . Embora, quando eu reinicio a máquina, a interface ainda é chamada de enp0s3.

As seguintes entradas na saída dmesg são interessantes para mim:

e1000 0000:00:03.0 eth0: (PCI:33MHz:32-bit) 08:00:27:f7:57:e5
e1000 0000:00:03.0 eth0: Intel(R) PRO/1000 Network Connection
e1000 0000:00:03.0 enp0s3: renamed from eth0

Então, aparentemente, ele começa como eth0, mas é renomeado para enp0s3 novamente. Não tenho certeza do porquê?

Quando tento depurar o arquivo de link, recebo a seguinte saída:

$ sudo udevadm test-builtin net_setup_link /etc/systemd/network/10-eth0.link
calling: test-builtin
=== trie on-disk ===
tool version:          229
file size:         6841778 bytes
header size             80 bytes
strings            1755242 bytes
nodes              5086456 bytes
Load module index
timestamp of 'etc/systemd/network' changed
Parsed configuration file /lib/systemd/network/99-default.link
Parsed configuration file /etc/systemd/network/10-eth0.link
Created link configuration context.
unable to open device '/sys/etc/systemd/network/10-eth0.link'

Unload module index
Unloaded link configuration context.

A linha sobre a impossibilidade de abrir o dispositivo parece estranha. Eu não tenho certeza porque está tentando isso, não existe nenhum diretório etc sob / sys, devo criá-lo?

Qualquer ideia de por que o nome da minha interface não é fiel é muito bem-vindo.

    
por Oldskool 10.03.2017 / 12:16

3 respostas

6

De acordo com o link , a política de nomenclatura padrão é:

#  /usr/lib/systemd/network/99-default.link
[Link]
NamePolicy=kernel database onboard slot path
MACAddressPolicy=persistent

Então, eu suspeito que você queira adicionar a seguinte linha ao seu eth0.link:

NamePolicy=mac

Eu não testei isso, então não tenho certeza, mas suspeito que o problema é que você corresponde ao MAC, mas não há uma política de nomenclatura para fazer isso.

Each of the policies may fail, and the first successful one is used. The name is not set directly, but is exported to udev as the property "ID_NET_NAME", which is, by default, used by a udev rule to set "NAME". If the name has already been set by userspace, no renaming is performed

É apenas um palpite.

Você também pode desativar o default.link, pelo menos por link

Em alguns sistemas openSUSE que eu executo, eu tive um problema semelhante, que (além de ter que usar o 'truque' 99-default.link) foi resolvido com a criação de dois arquivos em /etc/udev/rules.d (consulte link , link e link ):

sudo touch /etc/udev/rules.d/80-net-setup-link.rules (ou apenas certifique-se de que um arquivo vazio com esse nome esteja nesse local)

AND

Eu criei /etc/udev/rules.d/10-persistent-network.rules:

ACTION=="add", SUBSYSTEM=="net", KERNEL=="eth*", ATTR{tx_queue_len}="1000"

No seu caso, você pode usar esse arquivo para definir o nome desejado:

ACTION=="add", SUBSYSTEM=="net",ATTR{address}=="08:00:27:f7:57:e5",NAME="eth0"
    
por 10.03.2017 / 12:30
2

Eu tentei todos os itens acima. Nada funciona. Eu tenho pesquisado constantemente por duas semanas.

Eu encontrei uma resposta E FUNCIONA. Aqui:

link

A postagem contém um link para as anotações de Lennart, que não ajudam em nada. leia o post e você deve ganhar.

Veja como eu consegui que funcionasse:

Etapa 1: sudo nano /etc/udev/rules.d/70-local-net-names.rules

SUBSISTEMA == "net", ACTION == "add", ATTR {endereço} == "74: da: 38: 68: 55: c1", NAME="wlan1"

Este arquivo precisa ser pedido antes de /usr/lib/udev/rules.d/80-net-setup-link.rules

Isso funciona no Debian Stretch. Deve funcionar no Ubuntu também.

    
por 23.08.2017 / 08:51
1

De acordo com os documentos do systemd, isso se deve aos novos Nomes previsíveis da interface de rede

Os documentos dizem que você tem três opções para desativar esse comportamento e, provavelmente, o terceiro é o mais fácil:

  1. Você desabilita a atribuição de nomes fixos, para que os nomes imprevisíveis do kernel sejam usados novamente. Para isso, basta mascarar o arquivo .link do udev para a política padrão: ln -s / dev / null /etc/systemd/network/99-default.link

  2. Você cria seu próprio esquema de nomeação manual, por exemplo, nomeando suas interfaces "internet0", "dmz0" ou "lan0". Para isso, crie seus próprios arquivos .link em / etc / systemd / network /, que escolham um nome explícito ou um esquema de nomenclatura melhor para uma, algumas ou todas as suas interfaces. Veja systemd.link (5) para mais informações.

  3. Você passa o net.ifnames = 0 na linha de comando do kernel

por 10.03.2017 / 12:32