nomes de interface de rede previsíveis no systemd

15

Versão recente do Ubuntu e Debian (stretch) trazem um novo esquema de nomeação de interfaces de rede.

Agora, ao atualizar de um sistema que usa nomes de estilo antigo como "eth0", eu gostaria de saber antes de inicializar qual será o novo nome.

Como posso fazer isso? Existe uma invocação mágica do "systemd" que posso usar para editar o / etc / network / interface antes da inicialização (e subsequentemente perdendo a conectividade da rede)?

Ralf Hildebrandt
fonte
1
Eu Tropecei este, e é a melhor explicação de como ele funciona eu encontrei até agora: lists.debian.org/debian-user/2017/07/msg01453.html
Neil

Respostas:

7

Existem dois esquemas diferentes disponíveis: biosdevname vs nome previsível da interface de rede.

biosdevname

Biosdevname parece ser o padrão no ubuntu. É ativado instalando o pacote biosdevname.

O nome do biosdev de uma interface pode ser encontrado com:

biosdevname -i eth0

Nomes previsíveis da interface de rede

Eu acredito que este é o padrão no trecho Debian, mas precisa ser explicitamente ativado na atualização de versões anteriores.

O nome previsível para eth0 pode ser encontrado com:

udevadm test-builtin net_id /sys/class/net/eth0 | grep '^ID_NET_NAME_'
GnP
fonte
Embora a resposta real sobre como prever "antes de inicializar qual será o novo nome" (de acordo com o link fornecido pelo @Neil), o novo nome será o mesmo do nome antigo , porque ainda existem regras do udev que configuram os nomes antigos em /etc/udev/rules.d/70-persistent-net.rules. O link fornecerá um guia de migração, se você desejar mudar para o novo esquema de nomenclatura.
Tuomas
2

Aparentemente, o novo esquema é chamado de "nomes previsíveis da interface de rede", mas não estou encontrando muita documentação sobre como realmente prever o nome. Tudo o que eu encontrei sobre ele basicamente aponta para esse comentário do código-fonte (que por sua vez aponta para o primeiro link). A partir do comentário, não está claro como saber qual esquema de endereçamento o udev usará para o nome do dispositivo de rede.

Pelo primeiro link, você pode desativá-lo e usar os nomes tradicionais adicionando net.ifnames=0na linha de comando do kernel no Grub. De acordo com este comentário , pode ser necessário se você planeja criar uma interface marcada para VLAN, pois a extensão adicionada tornará o nome da interface muito longo.

Caso contrário, talvez seja melhor refazer a pergunta para explicar o que você está tentando fazer com o nome (por exemplo, configure a interface através de um arquivo ansible ou algo semelhante)

DerfK
fonte
2

Não tenho certeza se esse ainda é o caso das versões atualizadas, mas em meus sistemas antigos consegui criar um arquivo vazio /etc/udev/rules.d/80-net-name-slot.rulese desabilitaria o recurso de nomenclatura "previsível". Você também pode criar sua própria regra e nomear as interfaces sozinho, com base no endereço mac ou nas conexões PCI / USB.

user143311
fonte
0

Esta documentação pode ajudar um pouco. Consulte a seção "O que exatamente mudou na v197?". Sim, eu sei que isso tem um valor um pouco limitado, mas pode dar a você um caminho para mais pesquisas.

Charles Burge
fonte