
Dado este problema del kernel que espera ser solucionado y que asigna aleatoriamente una dirección mac a estos adaptadores lan usb3:Debian 12: de repente, a mi adaptador Lan USB3 se le asigna una dirección Mac aleatoria en cada reinicio
Estoy tratando de encontrar una solución aparte de la costumbre.recompilar el kernel con un parcheousar una versión antigua del kernel.
Básicamente, toda la configuración de mis interfaces se basa en nombres personalizados obtenidos mediante el uso de un archivo de configuración udev.70 reglas de red persistentes(Ciertas interfaces cambian de nombre según su dirección mac, pero dado el error anterior, esto ya no funciona).
Mirando la sintaxis de los archivos udev./etc/udev/rules.d/70-persistent-net.rules
Mi configuración tiene varias líneas como:
SUBSYSTEM="net", ACTION="add", DRIVERS="?*", ATTR{address}="00:....", ATTR{dev_id}="0x0", ATTR{type}="1", KERNEL="eth*", NAME="lan1"
Ahora lo que he descubierto al llamar al comando:
información udevadm -a -p /sys/class/net/eth1
y lo mismo con eth2, eth3, eth4, eth5...
es que existe un ATTR interesante para identificar de forma única las interfaces.
Es un atributo llamado "serial" pero no está disponible para eth1, eth2... sino para su desarrollador principal directo.
De hecho, el comando comienza diciendomirando el dispositivo...pero después dicemirando el dispositivo principal...
Entonces me pregunto si puedo hacer algo como:
SUBSYSTEM="net", ACTION="add", DRIVERS="?*", ATTR{parent>serial}="00000003", ATTR{dev_id}="0x0", ATTR{type}="1", KERNEL="eth*", NAME="lan1"
usando el número de serie principal en lugar de basar la configuración en la dirección mac para cambiar el nombre de la interfaz LAN.
¿Existe una sintaxis como esta?
Gracias
Respuesta1
Parece que encontré una respuesta a eso en esta publicación:¿Cómo se distinguen de forma única los dispositivos USB?
Leyendo esta referencia:https://www.reactivated.net/writing_udev_rules.html
Parece que puedes mezclar los de padres solteros con el nivel real usandoATRIBUTOS, entonces usandoATTRS{serie}en lugar deATR{dirección}y utilizando el serial proporcionado porinformación udevadm -a -p /sys/class/net/eth1Hacer el trabajo.
Ejemplo:
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTRS{serial}=="00000000000094", ATTR{dev_id}=="0x0", ATTR{type}=="1", KERNEL=="eth*", NAME="lan1"
Así que volví a usar el último kernel de Linux mientras esperaba que los desarrolladores de Debian colocaran el parche en el canal ascendente para que se pudiera leer la Mac en la eeprom. Una solución alternativa por ahora, pero sólida.
La única parte divertida es que si los dispositivos no tienen cables conectados, en mi caso, lan1 y eth0 estarán presentes, lan1 activa y "extrañamente" obtiene la dirección mac correcta y eth0 aún está inactivo con la dirección mac aleatoria.
EDITAR: Esto funcionó hasta que descubrí que algunos dispositivos comparten el mismo número de serie ¯_(ツ)_/¯, así que comencé a usar directamente el número de bus raíz USB y el número de dispositivo para identificar de forma única los adaptadores, dado que siempre los dejo en su lugar. sin moverlos. Compruebe esto la pregunta:Utilice la ruta USB de una dirección USB NIC en las reglas de udev para asignar un nombre de interfaz en lugar de una dirección MAC