asignación de número de wlan

12

¿Cómo o dónde determina Linux la asignación de un dispositivo de red? Específicamente, wlan0o wlan1para dispositivos USB inalámbricos.

Conecté un TP USB inalámbrico hace un tiempo, y fue asignado wlan0. Lo quité. Esta semana conecté un dispositivo inalámbrico USB Edimax y aparece como wlan1. Lo eliminé hoy para probar un segundo dispositivo inalámbrico USB Edimax (compré dos) y ahora aparece wlan2.

Sé lo suficiente de Unix / Linux para saber que esto se está configurando en algún lugar, y si elimino el archivo de configuración no utilizado, puedo hacer que se convierta en el último Edimax wlan0. ¿Pero cómo / dónde?

Huntrods
fuente

Respuestas:

15

Udev es el componente del sistema que determina los nombres de los dispositivos en Linux, principalmente los nombres de los archivos /dev, pero también los nombres de las interfaces de red.

Las versiones de udev de 099 a 196 vienen con reglas para registrar los nombres de las interfaces de red y siempre usan el mismo número para el mismo dispositivo. Estas reglas están deshabilitadas de manera predeterminada a partir de udev 174, pero su distribución puede habilitarlas (por ejemplo, Ubuntu las mantiene). Algunas distribuciones proporcionan diferentes conjuntos de reglas.

El script que registra y reserva los nombres de interfaz para uso futuro es /lib/udev/rules.d/75-persistent-net-generator.rules. Escribe reglas en /etc/udev/rules.d/70-persistent-net.rules. Así que elimine las entradas existentes wlan0y wlan1su /etc/udev/rules.d/70-persistent-net.rules, y cambie wlan2a wlan0. Ejecute udevadm --trigger --attr-match=vendor='Edimax'(o el --attr-matchparámetro que encuentre que coincida con su dispositivo) para volver a aplicar las reglas al dispositivo ya enchufado.

Gilles 'SO- deja de ser malvado'
fuente
Muchas gracias. Esto es debian en la frambuesa pi (raspbian), por lo que el almacenamiento persistente es un poco diferente.
Huntrods
El archivo donde se almacenan asignaciones específicas de wlan en esta versión (más reciente, creo) de raspbian es: /etc/udev/rules.d/70-persistent-net.rules. Descubrí esto usando su información anterior y luego escribiendo "man udev" para ver por qué no pude encontrar 'wlan' en el directorio /lib/udev/rules.d.
Huntrods
Para raspbian, el número de wlan se establece en función de la dirección mac del dispositivo inalámbrico (en este caso, cualquiera que esté conectado al puerto USB). Asigna números (wlan0, wlan1, etc.) según el orden en que ve por primera vez una nueva dirección mac cuando reconoce y configura el dispositivo inalámbrico. Editar este archivo como usted sugiere le permite configurar cualquier dispositivo a cualquier wlan # por su IP estática. - Gracias.
Huntrods
un par de puntos de aclaración para ofrecer: 1) Gilles es acertado en su respuesta, me encantaría ver un ejemplo de asignación de ID por hwaddr, 2) las interfaces se asignan en el orden en que se ven, por ejemplo, tengo dos NIC USB edimax, ubicación en las cuatro ranuras USB disponibles es muy relevante para el orden en que se escanean. 3) puede reordenar las interfaces desenchufándolas e insertándolas manualmente en el orden en que desea identificarlas.
CJ Steele
4

Este problema se resolvió a partir de systemdv197 con la introducción de nombres persistentes para dispositivos de red.

De acuerdo con la página de nombres de interfaz de red predecibles de freedesktop , el núcleo simplemente asignó nombres en función del orden en que los controladores relevantes los probaron:

El esquema de nomenclatura clásico para las interfaces de red aplicadas por el núcleo es simplemente asignar nombres que comiencen con "eth0", "eth1", ... a todas las interfaces tal como las prueban los controladores. Como la prueba del controlador generalmente no es predecible para la tecnología moderna, esto significa que tan pronto como estén disponibles múltiples interfaces de red, la asignación de los nombres "eth0", "eth1", etc., ya no se arregla y podría suceder que " eth0 "en un arranque termina siendo" eth1 "en el siguiente.

Si su distribución usa systemd, puede usar los nombres predeciblemente asignados pero quizás difíciles de manejar wlp0s11o puede escribir una udevregla para darles un nombre con el que se sienta más cómodo, como wifi1, basado en la dirección mac ...

Incluya un archivo en /etc/udev/rules.d/llamado 10-network-device.rules:

SUBSYSTEM=="net", ACTION=="add", ATTR{address}=="22:bb:cc:33:44:dd", NAME="wifi1"
jasonwryan
fuente
1
Te estás perdiendo un paso aquí. Huntrods evidentemente no tiene un udev posterior a 197 con el nuevo esquema de nombres, y evidentemente también tiene un esquema de nombres persistente. Es este esquema de nombres persistente lo que necesita modificar.
Gilles 'SO- deja de ser malvado'
Qué puedo decir; Tomé un despeje ...
jasonwryan