Detectando Endereços da Rede Física de Forma Confiável

2

Estou tentando encontrar uma maneira de listar endereços físicos (também conhecidos como MAC) para todas as placas / interfaces de rede conectadas a um determinado host. O problema é que eu quero essa funcionalidade em minha imagem USB ao vivo (squeeze) do Debian, que é conectada a muitas caixas diferentes com hardware amplamente diversificado. Portanto, o driver sem fio (por exemplo) nem sempre está disponível no meu pen drive USB e, portanto, não consigo obter o endereço físico de ifconfig .

Tive a impressão de que poderia conseguir isso consultando /sys/class/net/*/address , em que * é o nome da interface em questão. Mas este não é o caso. Eu acho que deve haver uma maneira de consultar o hardware para o endereço físico, mesmo se o driver de dispositivo não estiver instalado.

Então, minhas perguntas são:

  1. É realmente possível consultar o endereço físico de um dispositivo de rede, mesmo que seu driver de dispositivo não esteja instalado?
  2. Se for possível, como?
por Joseph R. 20.05.2013 / 14:51

1 resposta

3

Isso não é possível de maneira confiável. As placas de rede precisam ser suportadas por um driver e às vezes precisam ser injetadas com um firmware para inicializar e, assim, poder responder à consulta por seu endereço físico.

Quase todas as interfaces com fio são suportadas por um kernel Debian padrão (pelo menos, eu não conheço nenhuma interface com fio que não seja, elas são bastante simples e padrão). As interfaces sem fio são muito mais complicadas e nem todas são suportadas. Eles às vezes precisam de firmware proprietário que não é empacotado dentro de uma instalação Debian por padrão.

EDITAR

Para aqueles que estão interessados nos detalhes técnicos, descobri como o kernel do Linux conhece o endereço MAC de uma interface específica. Há um campo na estrutura netdevice que cada driver de rede usa para se registrar no driver. Este campo deve ser preenchido pelo driver antes de registrar o dispositivo no kernel. Para obter mais detalhes, consulte linux/netdevice.h e Drivers de dispositivos do Linux , 3a edição, por Jonathan Corbet, Greg Kroah-Hartman e Alessandro Rubini, seção 17.3 ( link ).

    
por 20.05.2013 / 15:46