Por motivos de hardware, precisamos renomear nossas interfaces de rede. Como temos que fazer isso em todas as nossas placas, para as quais não sabemos o endereço mac, temos que fazer isso usando o id-path ou driver. Estamos fazendo isso atualmente com arquivos systemd .link, que se parecem com isto:
[Match]
Path=<path-name>
[Link]
Description=<driver-name>,mainboard
NamePolicy=keep
Name=eth0
Por razões legais e de software, temos que nos livrar do systemd. Então, como podemos formular esses arquivos em regras simples do udev?
Acabei com isso:
SUBSYSTEM=="net", ACTION=="add", ENV{ID_PATH}=="<path-name>", NAME="eth0"
chamei 10-rename-eth0.rules
e coloquei em /etc/udev/rules.d/
, mas não funcionou. Também tentei adicionar as seguintes declarações à regra:
ATTR{dev_id}=="0x0",
ATTR{type}=="1",
KERNEL=="end0"
mas ainda não funcionou.
Eu juntei essas regras a partir destes links:
[resolvido] Renomear interface de rede sem usar texto de endereço MAC
Configurando nome persistente para dispositivo serial USB com regra udev sem link simbólico
Udev: renomeando minha interface de rede
e alguns outros e, claro, li a página de manual do udev .
O que estou fazendo de errado?
eth# já é o formato de nome atribuído pelo kernel padrão. Normalmente você não precisa renomear interfaces para eth0 – você obterá o mesmo resultado desativando totalmente a renomeação.
Além disso, por causa disso, se você quiser renomear explicitamente uma interface para eth0, tenha em mente que o udev não evita colisões – se já existir outra interface chamada eth0, a renomeação falhará.
Isso acontece muito cedo. Os arquivos de regras do Udev são classificados em ordem alfabética por nome de arquivo (em ordem ASCII), e a regra que produz
ENV{ID_PATH}
está em50-udev-default.rules
:Portanto, suas regras personalizadas devem ser posteriores
50-*
para que ID_PATH e propriedades relacionadas estejam disponíveis. Uma posição comum para regras de renomeação de interface de rede é70-*
ou80-*
.(Por exemplo, as regras de "nome de interface persistente" do RHEL costumavam ser
70-persistent-net.rules
, enquanto o processamento do arquivo .link do systemd é na verdade feito em80-net-setup-link.rules
.)