renomeando interface de rede com systemd

renomeando interface de rede com systemd

Quero renomear no Fedora 22 uma interface de rede gerenciada por systemd-networkd (versão 219) do nome atribuído pelo sistema enp2s0para wan. Para isso 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 é enp2s0. Vejo udevadmque 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 wanem nenhum log, mesmo após a ativação da saída de depuração do udev. O que estou fazendo errado?

Responder1

Pelo menos no trecho Debian, parece que você precisa que update-initramfs -u && rebootos *.linkarquivos /etc/systemd/network/entrem em vigor nas interfaces existentes.

Parece que as interfaces de rede foram renomeadas muito cedo durante a inicialização do initramfs, antes que os *.linkarquivos /etc/systemd/networkestivessem disponíveis ... e uma vez que a interface foi renomeada uma vez ( /sys/class/net/*/name_assign_type=4), então oudev-builtin-net_setup_linknão vai maisemitirID_NET_NAME porque should_renameretornafalse.

Responder2

Você está usando systemd-networkd? Acho que os .linkarquivos só são relevantes se você for (em vez do NetworkManager padrão ou dos initscripts legados). (Admito que ainda não investiguei profundamente isso.)

Eu acho que o que você quer é um .rulesarquivo /etc/udev/rules.d, algo como

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

(onde mac-addressestá o seu endereço MAC hexadecimal real, é claro).

Este arquivo precisa ser ordenadoantes /usr/lib/udev/rules.d/80-net-setup-link.rules, então odocumentos originaissugerir /etc/udev/rules.d/70-my-net-names.rules.

Responder3

Por alguns motivos ruins, parece que o networkmanager tem prioridade sobre o 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 /etc/systemd/network/*.link são respeitadas

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

informação relacionada