attribution de numéros WLAN

12

Comment ou où Linux détermine-t-il l'affectation d'un périphérique réseau? Spécifiquement, wlan0ou wlan1pour les périphériques USB sans fil.

J'ai branché un TP USB sans fil il y a quelque temps, et il a été attribué wlan0. Je l'ai enlevé. Cette semaine, j'ai branché un périphérique sans fil USB Edimax et il apparaît comme wlan1. Je l'ai retiré aujourd'hui pour essayer un deuxième périphérique sans fil USB Edimax (j'en ai acheté deux) et maintenant il arrive wlan2.

Je connais assez d'Unix / Linux pour savoir que cela est en train d'être configuré quelque part, et si je supprime le fichier de configuration inutilisé, je peux faire devenir le dernier Edimax wlan0. Mais comment / où?

Huntrods
la source

Réponses:

15

Udev est le composant système qui détermine les noms des périphériques sous Linux - principalement les noms de fichiers sous /dev, mais aussi les noms des interfaces réseau.

Les versions d'udev de 099 à 196 sont livrées avec des règles pour enregistrer les noms des interfaces réseau et utilisent toujours le même numéro pour le même périphérique. Ces règles sont désactivées par défaut à partir d'udev 174, mais peuvent néanmoins être activées par votre distribution (par exemple Ubuntu les conserve). Certaines distributions fournissent différents ensembles de règles.

Le script qui enregistre et réserve les noms d'interface pour une utilisation future est /lib/udev/rules.d/75-persistent-net-generator.rules. Il écrit des règles /etc/udev/rules.d/70-persistent-net.rules. Donc , supprimer les existants wlan0et les wlan1entrées de votre /etc/udev/rules.d/70-persistent-net.rules, et le changement wlan2à wlan0. Exécutez udevadm --trigger --attr-match=vendor='Edimax'(ou le --attr-matchparamètre que vous trouvez correspond à votre appareil) pour réappliquer les règles à l'appareil déjà branché.

Gilles 'SO- arrête d'être méchant'
la source
Merci beaucoup. C'est Debian sur le Raspberry Pi (Raspbian) donc le stockage persistant est juste un peu différent.
Huntrods
Le fichier dans lequel les affectations WLAN spécifiques sont stockées sur cette (dernière, je pense) version de raspbian est: /etc/udev/rules.d/70-persistent-net.rules. J'ai découvert cela en utilisant vos informations ci-dessus, puis en tapant "man udev" pour voir pourquoi je ne pouvais pas trouver 'wlan' dans le répertoire /lib/udev/rules.d.
Huntrods
Pour Raspbian, le numéro WLAN est défini en fonction de l'adresse MAC du périphérique sans fil (dans ce cas, celle qui est branchée sur le port USB). Il attribue des numéros (wlan0, wlan1, etc.) en fonction de l'ordre dans lequel il voit d'abord une nouvelle adresse mac lorsqu'il reconnaît et configure le périphérique sans fil. La modification de ce fichier comme vous le suggérez vous permet de définir n'importe quel appareil sur n'importe quel wlan # par son IP statique. - Merci.
Huntrods
quelques éclaircissements à apporter: 1) Gilles est sur place dans sa réponse, aimerait voir un exemple d'attribution d'ID par hwaddr, 2) les interfaces sont attribuées sur commande vu - par exemple, j'ai deux NIC USB edimax, placement dans les quatre emplacements USB disponibles est très pertinent pour l'ordre de numérisation. 3) vous pouvez réorganiser les interfaces en les débranchant et en les insérant manuellement dans l'ordre que vous souhaitez qu'elles soient identifiées.
CJ Steele
4

Ce problème a été résolu à partir de la systemdv197 avec l'introduction d'une dénomination persistante pour les périphériques réseau.

Selon la page Freedesktop Predictable Network Interface Names , le noyau a simplement attribué des noms en fonction de l'ordre dans lequel ils ont été sondés par les pilotes concernés:

Le schéma de dénomination classique des interfaces réseau appliqué par le noyau consiste à attribuer simplement des noms commençant par "eth0", "eth1", ... à toutes les interfaces telles qu'elles sont sondées par les pilotes. Comme le sondage du pilote n'est généralement pas prévisible pour la technologie moderne, cela signifie que dès que plusieurs interfaces réseau sont disponibles, l'attribution des noms "eth0", "eth1" et ainsi de suite n'est généralement plus fixe et il peut très bien arriver que " eth0 "sur un démarrage finit par être" eth1 "sur le suivant.

Si votre distribution utilise systemd, vous pouvez soit utiliser les noms attribués de manière prévisible mais peut-être compliqués comme wlp0s11ou vous pouvez écrire une udevrègle pour leur donner un nom avec lequel vous êtes plus à l'aise, comme wifi1, basé sur l'adresse mac ...

Incluez un fichier dans /etc/udev/rules.d/appelé 10-network-device.rules:

SUBSYSTEM=="net", ACTION=="add", ATTR{address}=="22:bb:cc:33:44:dd", NAME="wifi1"
jasonwryan
la source
1
Vous manquez une étape ici. Huntrods n'a évidemment pas d'udev post-197 avec le nouveau schéma de nommage, et a également évidemment un schéma de nommage persistant. C'est ce schéma de nommage persistant qu'il doit modifier.
Gilles 'SO- arrête d'être méchant'
Que puis-je dire; J'ai pris un botté de dégagement ...
jasonwryan