¿Puede una máquina Linux actuar como un cliente inalámbrico y un punto de acceso simultáneamente usando una única interfaz WLAN física?


12

Si solo tengo 1 interfaz WLAN física, ¿hay algún hacker que se pueda hacer para que pueda ser un cliente de un punto de acceso existente y al mismo tiempo actuar como un punto de acceso para otros clientes?

Tengo un enrutador ADSL 802.11g existente, y voy a construir un HTPC que tendrá 802.11n. Mi computadora portátil también tiene 802.11n, pero por el momento solo se conecta a 54Mbps porque eso es lo que admite el AP. Me gustaría poder hacer que el HTPC sea un cliente de mi enrutador ADSL, pero que mi computadora portátil sea un cliente del HTPC, por lo que copiar archivos será más rápido.

¿Posible?

Editar: obviamente, puedo conectar el HTPC al enrutador ADSL usando Ethernet y deshabilitar wifi en el enrutador, pero simplemente ignoremos esa opción. :-)

Respuestas:


9

No he hecho esto antes personalmente, pero aquí hay información para que te dirijas en la dirección correcta.

Desde la perspectiva del protocolo, definitivamente es posible tener una sola radio funcionando como AP y como STA del cliente. Funciona mejor (o tal vez es casi obligatorio) si el AP que está creando y el que se está uniendo como cliente están en el mismo canal. Tener la tarjeta de radio tiene que seguir cambiando los canales a las solicitudes de servicio es una receta para cuadros perdidos y un rendimiento terrible.

En cuanto al software, se está volviendo posible. Varios controladores de tarjeta 802.11 en Linux admiten el concepto de VAP (AP virtuales) que permite que una sola tarjeta actúe como múltiples AP (múltiples SSID, incluso BSSID) al mismo tiempo. Contraintuitivamente, el término VAP ha llegado a significar cualquier tipo de interfaces virtuales en la misma tarjeta 802.11, independientemente de si la interfaz virtual está en modo AP o no. Entonces, en estas combinaciones de tarjeta / controlador, puede crear dos VAP: un VAP en modo STA

El controlador MadWifi para tarjetas basadas en Atheros es uno que admite VAP. Si su tarjeta 802.11 usa un chipset Atheros e instala la versión correcta del controlador MadWifi, es posible que pueda configurar su tarjeta para el modo STA + AP simultáneo de una manera similar a esta:

wlanconfig ath0 create wlandev wifi0 wlanmode sta
wlanconfig ath1 create wlandev wifi0 wlanmode ap

Tenga en cuenta que estas no son instrucciones completas para configurar todo, sino solo un intento de comenzar.

Es posible que desee buscar en Google algo como " wifi vap " para obtener más información. Copié los comandos anteriores de aquí .

Ah, y algunos mitos rompen: las tarjetas Atheros no son infrecuentes en las máquinas de consumo. Son un jugador importante en los conjuntos de chips 802.11, junto con Broadcom, Marvell, Intel y Ralink. Y solo porque utilicé el ejemplo de MadWifi / Atheros, no significa que no haya controladores de Linux para los chips de los otros jugadores principales que puedan hacer algo similar. Además, no se requiere 802.11s para esto. Decir que tiene que hacer 802.11s para hacer esto es como decir que tiene que admitir el Protocolo Spanning Tree solo para reenviar marcos de una interfaz a otra.


Parece que la placa que estoy recibiendo tiene un chipset Atheros, por lo que podría tener suerte. Estoy esperando la entrega de mis componentes, entonces puedo construir y probar.
ThatGraemeGuy

Todavía no he tenido la oportunidad de jugar con MadWifi. Acepto porque la respuesta es correcta, parece que no hay otro chipset / familia que ofrezca esta funcionalidad.
ThatGraemeGuy

Spiff, estoy trabajando con un chip Atheros y madwifi y estoy tratando de configurar VAP uno en sta y otro en ap. Puedo configurar varios VAP en modo ap, pero cuando configuro el primer VAP en sta y luego intento configurar otro VAP en ap obtengo wlanconfig: ioctl: error de entrada / salida. ¿Tienes alguna idea de cómo lidiar con esto?
sachinr

1
@sachinr Haga eso como una pregunta para que todos lo vean, no solo un comentario sobre una respuesta de tres años a la pregunta de otra persona.
Spiff

Hola, agregué mi pregunta aquí: superuser.com/questions/649742/… . ¿Puedes echar un vistazo? Gracias :)
sachinr

4

El controlador nl80211 tiene algo llamado modo de interfaz "administrado". Puede configurarlo usando la utilidad "iw" de esta manera:

iw phy phy0 interfaz agregar wlan1 tipo gestionado

Más información sobre esto está disponible en https://wireless.wiki.kernel.org/en/users/documentation/iw . Phy0 se refiere a lo que ves en / sys / class / ieee80211 /.

También he visto que el rPI3 hace algo similar, pero con un modo de interfaz "__ap" más sombrío . De esa forma, el usuario crea una segunda interfaz que solo se ejecuta en modo AP y utiliza la interfaz inicial como modo cliente.

Independientemente de cómo se dé cuenta (el controlador obviamente debe admitirlo), necesitará dos interfaces (del mismo dispositivo físico). Una interfaz puede ejecutar simplemente wpa_supplicant como modo cliente, la otra (modo AP) generalmente usa hostapd para reproducir el punto de acceso.

[EDITAR:]

El código fuente de la herramienta iw deja muy claro el modo sombreado __ap:

..
} else if (strcmp(tpstr, "__ap") == 0) {
    *type = NL80211_IFTYPE_AP;
    return 0;
} else if (strcmp(tpstr, "__ap_vlan") == 0) {
    *type = NL80211_IFTYPE_AP_VLAN;
    return 0;
} else if (strcmp(tpstr, "wds") == 0) {
    *type = NL80211_IFTYPE_WDS;
    return 0;
} else if (strcmp(tpstr, "managed") == 0 ||
       strcmp(tpstr, "mgd") == 0 ||
       strcmp(tpstr, "station") == 0) {
    *type = NL80211_IFTYPE_STATION;
    return 0;
} 
..

El modo __ap se traduce en un tipo de enlace de red NL80211_IFTYPE_AP. También probé esto, y esto funciona bien. Es extraño que el wiki de documentación del núcleo no lo mencione.


4

fuente y más información:

https://wiki.archlinux.org/index.php/Software_access_point

Respuesta corta

sudo iw dev wlan0 interface add wlan0_ap type managed
sudo create_ap wlan0_ap wlan0 createap mypassword

El dispositivo Wi-Fi debe ser compatible con el modo AP

Necesita un dispositivo inalámbrico compatible con nl80211, que admita el modo operativo AP. Esto se puede verificar ejecutando el comando iw list, en el bloque de modos de interfaz admitidos debería aparecer AP:

...
    Supported interface modes:
         * IBSS
         * managed
         * AP
         * AP/VLAN
         * WDS
         * monitor
         * mesh point
...

Cliente inalámbrico y AP de software con un solo dispositivo Wi-Fi

La creación de un AP de software es independiente de su propia conexión de red (Ethernet, inalámbrica, ...). Muchos dispositivos inalámbricos incluso admiten operaciones simultáneas como AP y como "cliente" inalámbrico al mismo tiempo. Con esa capacidad, puede crear un AP de software que actúe como un "repetidor inalámbrico" para una red existente, utilizando un único dispositivo inalámbrico. La capacidad se enumera en la siguiente sección en la salida de la lista iw:

combinaciones de interfaz válidas:

$ iw list
...
valid interface combinations:
     * #{ managed } <= 1, #{ AP, P2P-client, P2P-GO } <= 1, #{ P2P-device } <= 1,
       total <= 3, #channels <= 2
...

La restricción #channels <= 1 significa que su AP de software debe operar en el mismo canal que su conexión de cliente Wi-Fi; vea la configuración del canal en hostapd.conf a continuación.

Si desea utilizar la capacidad / característica, tal vez porque una conexión Ethernet no está disponible, necesita crear dos interfaces virtuales separadas para usarla. Las interfaces virtuales para un dispositivo físico wlan0 se pueden crear de la siguiente manera: Las interfaces virtuales con una dirección MAC única se crean para la conexión de red (wlan0_sta) y para el software AP / hostapd "repetidor inalámbrico":

# iw dev wlan0 interface add wlan0_sta type managed 
# iw dev wlan0 interface add wlan0_ap  type managed

Configuración

La configuración de un punto de acceso consta de dos partes principales:

  1. Configuración de la capa de enlace de Wi-Fi, para que los clientes inalámbricos puedan asociarse al punto de acceso de software de su computadora e intercambiar paquetes IP con él.
  2. Configurar la configuración de red en su computadora, para que transmita correctamente los paquetes IP entre su propia conexión a Internet y los clientes inalámbricos.

Herramientas

create_ap

El paquete create_ap proporciona un script que puede crear un punto de acceso en puente o NAT para compartir en Internet. Combina hostapd, dnsmasq e iptables para el buen funcionamiento del punto de acceso. La sintaxis básica para crear una red virtual NAT es la siguiente:

# create_ap wlan0 eth0 MyAccessPoint MyPassPhrase

Gran respuesta, gracias!
Iman Akbari

En segundo lugar, esta es una gran respuesta, especialmente el bit sobre la restricción de canales
crazystick hace
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.