Regra do Udev para distinguir interfaces sem fio e com fio

2

Estou tentando configurar uma instalação do Arch em um pendrive USB e gostaria que meus nomes de interface de rede permanecessem iguais, independentemente de qual máquina (física ou virtual) eu conectasse meu pen drive.

Para fazer isso, eu gostaria de escrever as regras udev com base em se uma interface é com fio ou sem fio. Eu tentei as seguintes regras e eles não conseguiram renomear as interfaces:

SUBSYSTEM=="net",ACTION=="add",ATTR{ifindex}==2,NAME=eth0
SUBSYSTEM=="net",ACTION=="add",ATTR{ifindex}==3,NAME=wlan0

Isto é, obviamente, baseado na suposição ingênua de que a interface com fio será listada em segundo lugar e a terceira sem fio (após o loopback).

Minhas perguntas são:

  1. Por que as regras falharam em renomear as interfaces? Como posso depurar esta falha?
  2. Existe uma maneira mais robusta de detectar se uma interface é cabeada ou sem fio
  3. Bônus: Por uma questão de simplicidade, suponho que qualquer máquina à qual me conecto tenha no máximo uma interface de cada tipo. Existe uma maneira de lidar com várias interfaces com fio / sem fio?
por Joseph R. 04.03.2017 / 21:15

1 resposta

2

Se isso ajudar, o (agora preterido em favor se um esquema de nomenclatura diferente) /etc/udev/rules.d/70-persistent-net.rules arquivos que é usado exatamente para esse propósito corresponde ao endereço MAC, e não no índice. E eu realmente realmente não confiaria no índice, não há nenhuma garantia de que as interfaces de rede são criadas em qualquer ordem específica. Aqui está o que parece na minha máquina:

SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="00:11:22:33:44:55", ATTR{type}=="1", KERNEL=="wlan*", NAME="wlan0"

SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="11:22:33:44:55:66", ATTR{dev_id}=="0x0", ATTR{type}=="1", KERNEL=="eth*", NAME="eth0"

Esse arquivo é criado automaticamente e não tenho ideia do motivo pelo qual eles incluíram um atributo adicional para eth0 . Modifique conforme necessário para o seu sistema. Como mencionado no comentário acima, use udevadm info -p /sys/class/net/wlan0 etc. para obter a lista completa de atributos.

    
por 05.03.2017 / 11:27