renomeando a interface de rede com o systemd

5

Eu quero renomear no Fedora 22 uma interface de rede gerenciada por systemd-networkd (versão 219) do nome atribuído pelo sistema enp2s0 into wan . Para isso eu criei o seguinte arquivo /etc/systemd/network/80-wan.link :

[Match]
MACAddress=mac-address
[Link]
Name=wan

No entanto, isso não tem efeito no sistema. Após a reinicialização, o nome ainda será enp2s0 . Eu vejo com udevadm que o udev pegou o arquivo para configuração mas ignorou o nome fornecido:

~> udevadm info /sys/class/net/enp2s0 
P: /devices/pci0000:00/0000:00:1c.1/0000:02:00.0/net/enp2s0
E: DEVPATH=/devices/pci0000:00/0000:00:1c.1/0000:02:00.0/net/enp2s0
E: ID_BUS=pci
E: ID_MM_CANDIDATE=1
E: ID_MODEL_FROM_DATABASE=RTL8111/8168/8411 PCI Express Gigabit Ethernet Controller
E: ID_MODEL_ID=0x8168
E: ID_NET_DRIVER=r8169
E: ID_NET_LINK_FILE=/etc/systemd/network/80-wan.link
E: ID_NET_NAME_MAC=enxMacAddress
E: ID_NET_NAME_PATH=enp2s0
E: ID_OUI_FROM_DATABASE=Shuttle Inc.
E: ID_PATH=pci-0000:02:00.0
E: ID_PATH_TAG=pci-0000_02_00_0
E: ID_PCI_CLASS_FROM_DATABASE=Network controller
E: ID_PCI_SUBCLASS_FROM_DATABASE=Ethernet controller
E: ID_VENDOR_FROM_DATABASE=Realtek Semiconductor Co., Ltd.
E: ID_VENDOR_ID=0x10ec
E: IFINDEX=2
E: INTERFACE=enp2s0
E: SUBSYSTEM=net
E: SYSTEMD_ALIAS=/sys/subsystem/net/devices/enp2s0
E: TAGS=:systemd:
E: USEC_INITIALIZED=24183

Além disso, não há menção ao novo nome wan em nenhum registro, mesmo depois de ativar a saída de depuração do udev. O que estou fazendo errado?

    
por Igor Bukanov 14.05.2015 / 11:12

4 respostas

3

Pelo menos no Debian stretch, parece que você precisa update-initramfs -u && reboot para *.link arquivos em /etc/systemd/network/ para entrar em vigor para interfaces existentes.

Parece que as interfaces de rede são renomeadas muito cedo durante a inicialização a partir do initramfs, antes que os arquivos *.link em /etc/systemd/network estejam disponíveis ... e assim que a interface seja renomeada uma vez ( /sys/class/net/*/name_assign_type=4 ), o udev-builtin-net_setup_link não será mais emit ID_NET_NAME porque should_rename retorna false .

    
por 26.05.2018 / 22:38
3

Você está usando systemd-networkd ? Eu acho que os arquivos .link só são relevantes se você estiver (em vez do padrão NetworkManager ou legado initscripts). (Eu admito que ainda não olhei profundamente para isso ainda.)

Acho que o que você quer é um arquivo .rules em /etc/udev/rules.d , algo como

SUBSYSTEM=="net", ACTION=="add", ATTR{address}=="mac-address", NAME="wan"

(onde mac-address é seu endereço MAC hexadecimal, é claro).

Esse arquivo precisa ser solicitado antes /usr/lib/udev/rules.d/80-net-setup-link.rules , portanto, os documentos upstream sugerir /etc/udev/rules.d/70-my-net-names.rules .

    
por 16.05.2015 / 05:40
2

Por algumas razões ruins, parece que o networkmanager tem prioridade sobre networkd (quem poderia imaginar isso?). Você pode testar isso da seguinte maneira:

  • systemctl stop NetworkManager
  • desconecte a interface de rede
  • ip addr

Resultado: as regras do /etc/systemd/network/*.link são honradas

Se você iniciar o NetworkManager e repetir o teste, o /etc/systemd/network/*.link não será mais aceito. Eu testei isso com a diretiva MACAddressPolicy=random

    
por 01.08.2015 / 19:22
0

O comentário com a solução 'update-initramfs' funcionou bem aqui, obrigado!

o método UDEV (primeiro comentário) é um método diferente (e mais antigo) para alterar nomes de dispositivos (mas provavelmente ainda deve funcionar).

Você também pode definir algumas opções de inicialização para desabilitar a renomeação do dispositivo de rede: (GRUB_CMDLINE_LINUX="net.ifnames = 0 biosdevname = 0" e, em seguida, emitindo o comando correto para regenerar a configuração do grub). Isso só fará você voltar para 'eth0', e a numeração pode ficar confusa quando você adiciona um segundo dispositivo de ethernet ...

    
por 20.06.2018 / 18:45