atribuição de número de wlan

12

Como ou onde o Linux determina a atribuição de um dispositivo de rede? Especificamente, wlan0ou wlan1para dispositivos USB sem fio.

Conectei um TP USB sem fio há um tempo atrás e ele foi atribuído wlan0. Eu removi isso. Nesta semana, conectei um dispositivo sem fio Edimax USB e ele aparece como wlan1. Eu o removi hoje para experimentar um segundo dispositivo sem fio Edimax USB (comprei dois) e agora ele aparece wlan2.

Eu conheço o suficiente do Unix / Linux para saber que isso está sendo configurado em algum lugar e, se eu excluir o arquivo de configuração não utilizado, posso tornar o Edimax mais recente wlan0. Mas como / onde?

Huntrods
fonte

Respostas:

15

O Udev é o componente do sistema que determina os nomes dos dispositivos no Linux - principalmente os nomes dos arquivos /dev, mas também os nomes das interfaces de rede.

As versões do udev de 099 a 196 vêm com regras para registrar os nomes das interfaces de rede e sempre usam o mesmo número para o mesmo dispositivo. Essas regras são desativadas por padrão a partir do udev 174, mas ainda assim podem ser ativadas pela sua distribuição (por exemplo, o Ubuntu as mantém). Algumas distribuições fornecem conjuntos de regras diferentes.

O script que registra e reserva nomes de interface para uso futuro é /lib/udev/rules.d/75-persistent-net-generator.rules. Ele escreve regras /etc/udev/rules.d/70-persistent-net.rules. Portanto, remova as entradas wlan0e as existentes e mude para . Execute (ou qualquer outro parâmetro que você encontrar corresponda ao seu dispositivo) para reaplicar as regras ao dispositivo já conectado.wlan1/etc/udev/rules.d/70-persistent-net.ruleswlan2wlan0udevadm --trigger --attr-match=vendor='Edimax'--attr-match

Gilles 'SO- parar de ser mau'
fonte
Muito obrigado. Este é o debian no raspberry pi (raspbian), portanto o armazenamento persistente é um pouco diferente.
Huntrods
O arquivo em que atribuições específicas da WLAN estão armazenadas nesta versão (mais recente, eu acho) do raspbian é: /etc/udev/rules.d/70-persistent-net.rules. Eu descobri isso usando suas informações acima e digitando "man udev" para ver por que não consegui encontrar 'wlan' no diretório /lib/udev/rules.d.
Huntrods
Para raspbian, o número da wlan é definido com base no endereço mac do dispositivo sem fio (nesse caso, o que estiver conectado à porta USB). Ele aloca números (wlan0, wlan1 etc.) com base na ordem em que vê um novo endereço mac pela primeira vez quando reconhece e configura o dispositivo sem fio. A edição deste arquivo, conforme sugerido, permite que você defina qualquer dispositivo para qualquer número de wlan por seu IP estático. - obrigado.
Huntrods
alguns pontos de esclarecimento a serem oferecidos: 1) Gilles está em sua resposta, adoraria ver um exemplo de atribuição de IDs por hwaddr, 2) interfaces são atribuídas na ordem vista - por exemplo, eu tenho duas NICs USB da edimax, posicionamento nos quatro slots USB disponíveis é altamente relevante para a ordem em que são digitalizados. 3) você pode reordenar as interfaces desconectando-as e inserindo-as manualmente na ordem em que deseja identificá-las.
CJ Steele
4

Esse problema foi resolvido na systemdv197 com a introdução de nomes persistentes para dispositivos de rede.

De acordo com a página Nomes de interface de rede previsível do freedesktop , o kernel simplesmente atribuiu nomes com base na ordem em que foram examinados pelos drivers relevantes:

O esquema clássico de nomenclatura para interfaces de rede aplicadas pelo kernel é simplesmente atribuir nomes começando com "eth0", "eth1", ... a todas as interfaces, conforme são testadas pelos drivers. Como a sondagem do driver geralmente não é previsível para a tecnologia moderna, isso significa que, assim que várias interfaces de rede estiverem disponíveis, a atribuição dos nomes "eth0", "eth1" etc. eth0 "em uma inicialização acaba sendo" eth1 "na próxima.

Se sua distribuição usa systemd, você pode usar nomes previsivelmente atribuídos, mas talvez difíceis de manusear, wlp0s11ou pode escrever uma udevregra para dar a eles um nome com o qual você se sinta mais confortável, com wifi1base no endereço mac ...

Inclua um arquivo /etc/udev/rules.d/chamado 10-network-device.rules:

SUBSYSTEM=="net", ACTION=="add", ATTR{address}=="22:bb:cc:33:44:dd", NAME="wifi1"
jasonwryan
fonte
1
Você está perdendo um passo aqui. Os Huntrods evidentemente não possuem um udev pós-197 com o novo esquema de nomenclatura e também evidentemente possuem um esquema de nomenclatura persistente. É esse esquema de nomenclatura persistente que ele precisa ajustar.
Gilles 'SO- stop be evil'
O que posso dizer; I levou remar ...
jasonwryan