atribuição de número wlan

11

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

Liguei um TP USB wireless há um tempo atrás, e foi atribuído wlan0 . Eu removi isso. Esta semana, conectei um dispositivo sem fio USB Edimax e ele aparece como wlan1 . Eu removi hoje para tentar um segundo dispositivo sem fio USB Edimax (eu comprei dois) e agora ele vem em 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 fazer com que o último Edimax se torne wlan0 . Mas como / onde?

    
por Huntrods 24.04.2013 / 23:59

2 respostas

14

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

Versões do udev de 099 a 196 vêm com regras para gravar os nomes das interfaces de rede e sempre usam o mesmo número para o mesmo dispositivo. Essas regras são desabilitadas por padrão a partir do udev 174, mas podem, no entanto, 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 é %código%. Escreve regras em %código%. Portanto, remova as entradas /lib/udev/rules.d/75-persistent-net-generator.rules e /etc/udev/rules.d/70-persistent-net.rules existentes de seu wlan0 e altere wlan1 para /etc/udev/rules.d/70-persistent-net.rules . Execute wlan2 (ou qualquer parâmetro wlan0 correspondente ao seu dispositivo) para reaplicar as regras ao dispositivo já conectado.

    
por 25.04.2013 / 02:43
4

Este problema foi resolvido a partir de systemd v197 com a introdução de nomes persistentes para dispositivos de rede.

De acordo com a página Nomes previsíveis de interface de rede do freedesktop, o kernel simplesmente atribuiu nomes com base no pedido eles foram sondados pelos drivers relevantes:

The classic naming scheme for network interfaces applied by the kernel is to simply assign names beginning with "eth0", "eth1", ... to all interfaces as they are probed by the drivers. As the driver probing is generally not predictable for modern technology this means that as soon as multiple network interfaces are available the assignment of the names "eth0", "eth1" and so on is generally not fixed anymore and it might very well happen that "eth0" on one boot ends up being "eth1" on the next.

Se a sua distro usar o systemd, você poderá usar os nomes previstos, mas talvez de difícil controle, como wlp0s11 , ou poderá escrever uma regra udev para dar a eles um nome mais confortável, como wifi1 no endereço mac ...

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

SUBSYSTEM=="net", ACTION=="add", ATTR{address}=="22:bb:cc:33:44:dd", NAME="wifi1"
    
por 25.04.2013 / 00:58