opção driver (-D) em wpa_supplicant

11

Antes de wpa_supplicantpoder fazer seu trabalho, a interface de rede deve estar disponível e o driver do dispositivo deve ser carregado. wpa_supplicantpermite especificar um driver com o sinalizador "-D". Eu tentei isso em alguns sistemas, mas wpa_supplicantnunca parece aceitar o driver especificado. Por exemplo:

T42 ~ # lspci -v -s 02:02.0
02:02.0 Network controller: Intel Corporation PRO/Wireless 2915ABG [Calexico2] Network Connection (rev 05)
    Subsystem: Intel Corporation Device 1011
    Flags: bus master, medium devsel, latency 64, IRQ 11
    Memory at c0214000 (32-bit, non-prefetchable) [size=4K]
    Capabilities: [dc] Power Management version 2
    Kernel driver in use: ipw2200
    Kernel modules: ipw2200
T42 ~ # wpa_supplicant -D ipw2200 -i eth1 -c /root/wpafile 
Unsupported driver 'ipw2200'.
T42 ~ # 

No entanto, se eu começar wpa_supplicantsem especificar o driver como wpa_supplicant -i eth1 -c /root/wpafile, então ele funcionará perfeitamente. Porque isto é assim? Além disso, nesse caso, é necessário especificar o driver wpa_supplicant?

Martin
fonte
1
A lista de drivers disponíveis inclui (consulte o manual): HostAP, Prism54, Madwifi, NDISWrapper, AMTEL, IPW (drivers 2100 e 2200), WEXT (extensões sem fio genéricas do Linux), Ethernet com fio. Entre os mais interessantes, destacam-se o WEXT (usado em dispositivos Wifi a 70%), o NDISWrapper se você estiver usando drivers do Windows, envolvido pela camada de compatibilidade do Linux e o Madwifi, se você estiver usando aircrack. No entanto, eu não entendo do ponto de vista arquitetônico, que nível esses drivers representam.
Boris Burkov 27/10/2013

Respostas:

13

Você está confundindo drivers do kernel e drivers do espaço do usuário. No seu caso, você certamente pode usar o WEXT, mas também o nl80211 (eu acho).

WEXT (ou WE = Wireless Extensions) é a modificação introduzida no kernel Linux em 1997 por Jean Tourrhiles. De acordo com esta página da Web escrita pelo próprio Tourrhiles,

O Wireless Extension (WE) é uma API genérica que permite ao driver expor ao espaço do usuário, configuração e estatísticas específicas de LANs sem fio comuns. A vantagem disso é que um único conjunto de ferramentas pode suportar todas as variações de LANs sem fio, independentemente do seu tipo (desde que o driver suporte o Wireless Extension). Outra vantagem é que esses parâmetros podem ser alterados rapidamente sem reiniciar o driver (ou Linux).

Em outras palavras, o WEXT fica em cima do seu driver e permite que o wpa_supplicant interaja com ele. Observe que wpa_supplicant e o driver pertencem a diferentes regiões do kernel (a primeira no espaço do usuário, a segunda no espaço do kernel), portanto, é necessária uma API capaz de atuar como intermediária. Este é o papel desempenhado pelos chamados drivers mencionados por Bob.

No entanto, esta página da Web Linux-Wireless declara explicitamente que

O WE está sendo desenvolvido?

Não não é. Somente correções de bugs estão sendo aceitas para WE.

e

O que é a substituição das extensões sem fio?

O novo desenvolvimento deve se concentrar em cfg80211 e nl80211.

De fato, se uma consulta meu wpa_supplicant for bem (ou seja, não a página de manual, mas o comando

 wpa_supplicant -h

Recebo (em parte) esta resposta:

drivers:
  wext = Linux wireless extensions (generic)
  nl80211 = Linux nl80211/cfg80211
  wired = Wired Ethernet driver
  none = no driver (RADIUS server/WPS ER)
options:....

Em outras palavras, fiel às palavras do Linux Wireless, o suporte a todos os outros drivers, exceto o Wext e o nl80211, foi retirado e o suporte ao Wext foi mantido porque ...

Ainda usamos WE?

Sim, cfg80211 e nl80211 ainda estão sendo trabalhados, portanto os WEs ainda estão sendo usados. Todos os drivers mac80211 suportam o WEs, conforme o mac80211 o utiliza. A idéia é começar lentamente a mover as coisas para cfg80211 e nl80211 que ainda não estão lá e adicionar novos recursos a elas também.

Isso se aplica ao Linux Kernel 3.11.1-031101-generic.

Aqueles de vocês que usaram o hostapd já estão, de certa forma, informados de tudo isso, porque o driver padrão para o hostapd é exatamente nl80211.

MariusMatutiae
fonte