opción de controlador (-D) en wpa_supplicant

11

Antes de wpa_supplicantpoder hacer su trabajo, la interfaz de red debe estar disponible y el controlador para el dispositivo debe estar cargado. wpa_supplicantpermite especificar el controlador con el indicador "-D". He intentado esto en algunos sistemas, pero wpa_supplicantnunca parece aceptar el controlador que he especificado. Por ejemplo:

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 ~ # 

Sin embargo, si empiezo wpa_supplicantsin especificar el controlador como wpa_supplicant -i eth1 -c /root/wpafile, entonces funciona perfectamente. ¿Por qué esto es tan? Además, ¿en qué caso es necesario especificar el controlador para wpa_supplicant?

Martín
fuente
1
La lista de controladores disponibles incluye (consulte el manual): HostAP, Prism54, Madwifi, NDISWrapper, AMTEL, IPW (controladores 2100 y 2200), WEXT (extensiones inalámbricas genéricas de Linux), Ethernet con cable. De los más interesantes son WEXT (que está en uso para dispositivos Wifi al 70%), NDISWrapper si está utilizando controladores de Windows, envueltos por la capa de compatibilidad de Linux y Madwifi, si lo está utilizando aircrack. Sin embargo, no entiendo desde el punto de vista arquitectónico, qué nivel representan esos controladores.
Boris Burkov

Respuestas:

13

Está confundiendo los controladores de kernel y los controladores de espacio de usuario. En su caso, ciertamente puede usar WEXT, pero también nl80211 (creo).

WEXT (o WE = Extensiones inalámbricas) son las modificaciones introducidas al kernel de Linux en 1997 por Jean Tourrhiles. Según esta página web escrita por el propio Tourrhiles,

La extensión inalámbrica (WE) es una API genérica que permite que un controlador se exponga al espacio del usuario, la configuración y las estadísticas específicas de las LAN inalámbricas comunes. Lo bueno de esto es que un solo conjunto de herramientas puede admitir todas las variaciones de las LAN inalámbricas, independientemente de su tipo (siempre que el controlador sea compatible con la Extensión inalámbrica). Otra ventaja es que estos parámetros se pueden cambiar sobre la marcha sin reiniciar el controlador (o Linux).

En otras palabras, WEXT se encuentra encima de su controlador y permite que wpa_supplicant interactúe con él. Observe que wpa_supplicant y el controlador pertenecen a diferentes reinos del kernel (el primero al espacio del usuario, el segundo al espacio del kernel), por lo tanto, se requiere una API capaz de actuar como intermediario. Este es el papel desempeñado por los llamados controladores mencionados por Bob.

Sin embargo, esta página web inalámbrica de Linux establece explícitamente que

¿Estamos siendo desarrollados más?

No, no es. Solo se aceptan las correcciones de errores para WE.

y

¿Qué es el reemplazo de extensiones inalámbricas?

El nuevo desarrollo debe centrarse en cfg80211 y nl80211.

De hecho, si una consulta mi wpa_supplicant directamente (es decir, no la página del manual, sino el comando

 wpa_supplicant -h

Recibo (en parte) esta respuesta:

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

En otras palabras, fiel a las palabras de Linux Wireless, el soporte para todos los demás controladores excepto Wext y nl80211 se ha eliminado, y el soporte para Wext se ha mantenido porque ...

¿Todavía usamos WE?

Sí, cfg80211 y nl80211 todavía se están trabajando, por lo que todavía se están utilizando WE. Todos los controladores mac80211 son compatibles con WE, ya que mac80211 lo utiliza. La idea es comenzar lentamente a mover cosas a cfg80211 y nl80211 que aún no están allí y agregarles nuevas características también.

Esto se aplica a Linux Kernel 3.11.1-031101-generic.

Aquellos de ustedes que han usado hostapd ya están, de alguna manera, informados de todo esto, porque el controlador estándar para hostapd es exactamente nl80211.

MariusMatutiae
fuente