• Explicación de las capabilities de hostapd

    hostapd permite convertir una interfaz WiFi compatible en un punto de acceso. Además de configurar el nombre de la red, la autenticación o el canal, podemos indicar las capacidades inalámbricas que anunciará el punto de acceso mediante parámetros como ht_capab y vht_capab.

    Estas capabilities no activan mágicamente funciones que nuestra tarjeta no posee. Solamente debemos incluir capacidades admitidas por la tarjeta, el controlador y el firmware. Si anunciamos una capacidad no soportada, hostapd puede rechazar la configuración y no iniciar el punto de acceso.

    Antes de configurar hostapd deberíamos consultar las capacidades reales de la interfaz:

    iw list

    También podemos consultar un dispositivo PHY concreto:

    iw phy phy0 info

    En la salida debemos buscar las secciones correspondientes a HT Capabilities, VHT Capabilities, HE Capabilities y los modos de interfaz soportados. Para utilizar la tarjeta como punto de acceso debe aparecer el modo AP.

    Diferencias entre HT, VHT y HE

    HT significa High Throughput y corresponde principalmente a IEEE 802.11n, conocido comercialmente como WiFi 4.

    VHT significa Very High Throughput y corresponde a IEEE 802.11ac, conocido como WiFi 5.

    HE significa High Efficiency y corresponde a IEEE 802.11ax, conocido como WiFi 6 o WiFi 6E dependiendo de la banda utilizada.

    Para activar HT debemos utilizar:

    ieee80211n=1
    wmm_enabled=1

    Para activar VHT debemos habilitar también HT:

    ieee80211n=1
    ieee80211ac=1
    wmm_enabled=1

    WMM debe permanecer habilitado para disponer de toda la funcionalidad y las velocidades de 802.11n y 802.11ac.

    Capacidades HT de 802.11n

    Las capacidades HT se escriben juntas dentro del parámetro ht_capab:

    ht_capab=[HT40+][SHORT-GI-20][SHORT-GI-40]

    No tenemos que separar las opciones mediante espacios ni comas.

    [LDPC]
    Indica que la interfaz soporta codificación LDPC, Low-Density Parity-Check. Se trata de un sistema de corrección de errores que puede mejorar la robustez de la comunicación cuando la señal no es perfecta.

    Solo debemos añadirlo cuando aparezca entre las capacidades HT mostradas por el controlador.

    [HT40+]
    Permite utilizar canales de 20 o 40 MHz colocando el canal secundario por encima del canal principal.

    Por ejemplo, si utilizamos el canal principal 36 en 5 GHz, el canal secundario será el 40:

    hw_mode=a
    channel=36
    ht_capab=[HT40+]

    [HT40-]
    Permite utilizar canales de 20 o 40 MHz colocando el canal secundario por debajo del canal principal.

    Por ejemplo, si utilizamos el canal principal 40, el canal secundario puede ser el 36:

    hw_mode=a
    channel=40
    ht_capab=[HT40-]

    Si no especificamos ni [HT40+] ni [HT40-], hostapd utilizará HT con un ancho de 20 MHz.

    El signo no indica que una combinación sea mejor o más rápida que la otra. Solamente identifica la posición del canal secundario respecto al principal.

    HT40 en la banda de 2,4 GHz

    Dos canales de 20 MHz se combinan para formar un canal de aproximadamente 40 MHz. Uno actúa como canal principal y el otro como canal secundario o de extensión.

    En la banda de 2,4 GHz existe muy poco espectro disponible. Una red de 40 MHz ocupa una parte considerable de la banda y puede solaparse con muchas redes próximas. Por este motivo, normalmente es preferible utilizar 20 MHz en entornos urbanos o con varias redes cercanas.

    hostapd puede rechazar la utilización de 40 MHz o intercambiar la posición de los canales principal y secundario cuando detecta redes que podrían verse afectadas.

    El parámetro obss_interval permite configurar exploraciones periódicas de redes solapadas:

    obss_interval=300

    El valor se expresa en segundos. Un valor distinto de cero permite que un punto de acceso de 2,4 GHz compruebe periódicamente si puede utilizar 40 MHz sin causar problemas de coexistencia.

    [SMPS-STATIC]
    Activa el modo estático de ahorro energético para multiplexación espacial, denominado Spatial Multiplexing Power Save.

    Este modo limita el uso simultáneo de varias cadenas receptoras para reducir el consumo. El dispositivo permanece limitado hasta que modifica su asociación o cambia el modo SMPS.

    [SMPS-DYNAMIC]
    Activa el modo dinámico de ahorro energético para multiplexación espacial. El dispositivo puede mantener desactivadas algunas cadenas receptoras y volver a activarlas dinámicamente cuando sea necesario recibir varias secuencias espaciales.

    Si no indicamos ninguna de las dos opciones, SMPS permanece deshabilitado y se permite utilizar normalmente todas las cadenas espaciales disponibles.

    Estas capacidades no deberían añadirse únicamente con la intención de ahorrar energía. Debemos configurar el modo que realmente anuncie el controlador.

    [GF]
    Activa el formato HT Greenfield. Este formato reduce parte de la información utilizada para mantener compatibilidad con estaciones anteriores a 802.11n.

    Puede reducir ligeramente la sobrecarga en una red formada exclusivamente por dispositivos HT, pero puede generar problemas de compatibilidad con dispositivos antiguos. Normalmente debemos dejarlo desactivado.

    [SHORT-GI-20]
    Indica que podemos utilizar un intervalo de guarda corto cuando trabajamos con canales de 20 MHz.

    El intervalo de guarda separa los símbolos transmitidos para reducir los efectos de las reflexiones y de la propagación por múltiples trayectos. El modo corto reduce la separación y permite aumentar la velocidad física de transmisión.

    [SHORT-GI-40]
    Activa el intervalo de guarda corto para canales de 40 MHz.

    Podemos utilizar simultáneamente ambas capacidades cuando el hardware las soporte:

    ht_capab=[SHORT-GI-20][SHORT-GI-40]

    [TX-STBC]
    Indica que la tarjeta puede transmitir utilizando STBC, Space-Time Block Coding.

    STBC transmite información redundante mediante diferentes antenas y momentos temporales para aumentar la probabilidad de que el receptor pueda reconstruir correctamente los datos.

    [RX-STBC1]
    Indica que podemos recibir transmisiones STBC con una secuencia espacial.

    [RX-STBC12]
    Indica que podemos recibir transmisiones STBC con una o dos secuencias espaciales.

    [RX-STBC123]
    Indica que podemos recibir transmisiones STBC con una, dos o tres secuencias espaciales.

    Solo debemos especificar uno de los valores RX-STBC. Si no indicamos ninguno, hostapd no anunciará capacidad de recepción STBC.

    [DELAYED-BA]
    Activa el reconocimiento de bloques diferido, denominado Delayed Block Acknowledgement.

    Block Ack permite confirmar varias tramas mediante una única respuesta en lugar de confirmar cada trama por separado. En el modo diferido, la confirmación puede enviarse después de recibir una solicitud adicional.

    Es una capacidad poco habitual. No debemos activarla salvo que el controlador indique expresamente que la soporta.

    [MAX-AMSDU-7935]
    Indica que la interfaz admite una longitud máxima A-MSDU de 7935 octetos. Si no especificamos esta capacidad, se anuncia un máximo de 3839 octetos.

    A-MSDU permite agrupar varias unidades de datos superiores dentro de una misma trama MAC. Una agregación mayor reduce la proporción de cabeceras, aunque también aumenta la cantidad de datos que se pierde si la trama agregada resulta dañada.

    [DSSS_CCK-40]
    Permite utilizar modulaciones DSSS y CCK cuando el punto de acceso opera con un canal HT de 40 MHz.

    DSSS y CCK pertenecen principalmente a los modos heredados de la banda de 2,4 GHz. Esta capability solo debería utilizarse cuando aparezca entre las capacidades de la tarjeta.

    [40-INTOLERANT]
    Anuncia que el dispositivo es intolerante al uso de canales de 40 MHz.

    No debemos añadir esta opción a un punto de acceso que queremos hacer funcionar mediante HT40. Su finalidad es informar de que el dispositivo requiere una operación de 20 MHz para evitar problemas de coexistencia.

    [LSIG-TXOP-PROT]
    Indica que la interfaz soporta protección L-SIG TXOP.

    Este mecanismo ayuda a que los dispositivos anteriores a 802.11n reconozcan la duración durante la que el medio permanecerá ocupado por una transmisión HT y eviten transmitir simultáneamente.

    Capacidades VHT de 802.11ac

    Para habilitar VHT debemos utilizar la banda de 5 GHz y activar 802.11ac:

    hw_mode=a
    ieee80211n=1
    ieee80211ac=1
    wmm_enabled=1

    Las capacidades se indican mediante vht_capab:

    vht_capab=[MAX-MPDU-11454][RXLDPC][SHORT-GI-80]

    [MAX-MPDU-7991]
    Anuncia una longitud MPDU máxima de 7991 octetos.

    [MAX-MPDU-11454]
    Anuncia una longitud MPDU máxima de 11454 octetos.

    Si no indicamos ninguna de las dos opciones, el valor anunciado es de 3895 octetos. MPDU representa una unidad de datos del protocolo MAC y no debe confundirse con la MTU de una interfaz Ethernet o IP.

    [VHT160]
    Indica que la tarjeta soporta canales VHT continuos de 160 MHz.

    [VHT160-80PLUS80]
    Indica que la tarjeta soporta tanto canales continuos de 160 MHz como configuraciones 80+80 MHz.

    En una configuración 80+80 MHz se combinan dos segmentos de 80 MHz que no tienen por qué ser contiguos.

    Estas flags solamente anuncian la capacidad. Para seleccionar el ancho operativo debemos utilizar también vht_oper_chwidth y los índices de frecuencia central correspondientes.

    [RXLDPC]
    Indica que podemos recibir paquetes VHT codificados mediante LDPC.

    [SHORT-GI-80]
    Indica que podemos recibir transmisiones VHT de 80 MHz utilizando un intervalo de guarda corto.

    [SHORT-GI-160]
    Indica que podemos recibir transmisiones VHT de 160 MHz utilizando un intervalo de guarda corto.

    [TX-STBC-2BY1]
    Indica que la tarjeta puede transmitir utilizando, como mínimo, STBC 2×1.

    [RX-STBC-1]
    Indica recepción STBC de una secuencia espacial.

    [RX-STBC-12]
    Indica recepción STBC de una o dos secuencias espaciales.

    [RX-STBC-123]
    Indica recepción STBC de una, dos o tres secuencias espaciales.

    [RX-STBC-1234]
    Indica recepción STBC de una, dos, tres o cuatro secuencias espaciales.

    Solo debemos configurar el nivel máximo que anuncie la tarjeta.

    Beamforming en VHT

    El beamforming utiliza información sobre el canal inalámbrico para coordinar la señal transmitida desde varias antenas y concentrar mejor la energía hacia el receptor.

    [SU-BEAMFORMER]
    Indica que el punto de acceso puede actuar como beamformer para un único usuario.

    El beamformer es el dispositivo que calcula y aplica la matriz utilizada para dirigir la transmisión.

    [SU-BEAMFORMEE]
    Indica que el dispositivo puede actuar como beamformee de un único usuario.

    El beamformee recibe la transmisión, mide el canal y envía al beamformer la información necesaria para ajustar la señal.

    [BF-ANTENNA-2], [BF-ANTENNA-3] y [BF-ANTENNA-4]
    Indican el número máximo de antenas del beamformer que el beamformee puede manejar al generar información comprimida de realimentación.

    No debemos seleccionar estas flags simplemente contando las antenas externas de la tarjeta. Tenemos que utilizar el valor anunciado por el hardware y el controlador.

    [SOUNDING-DIMENSION-2], [SOUNDING-DIMENSION-3] y [SOUNDING-DIMENSION-4]
    Indican el número de dimensiones de sounding soportadas por el beamformer.

    El sounding es el proceso mediante el que se envían tramas de referencia para que el receptor pueda medir el canal y generar la realimentación utilizada por el beamforming.

    [MU-BEAMFORMER]
    Indica que el punto de acceso puede actuar como beamformer multiusuario.

    MU-MIMO permite que el punto de acceso transmita simultáneamente hacia varios clientes compatibles utilizando diferentes secuencias espaciales.

    No basta con añadir esta flag para obtener MU-MIMO. La tarjeta, el firmware, el controlador y los clientes deben ser compatibles.

    [VHT-TXOP-PS]
    Indica soporte para el modo de ahorro energético VHT TXOP Power Save.

    Este mecanismo permite que una estación reduzca el consumo durante partes de una oportunidad de transmisión VHT en las que no necesita mantener activas todas sus cadenas receptoras.

    [HTC-VHT]
    Indica que la estación puede recibir la variante VHT del campo HT Control.

    Este campo transporta información de control relacionada, entre otras funciones, con determinados mecanismos de adaptación del enlace.

    Longitud máxima A-MPDU

    [MAX-A-MPDU-LEN-EXP0] hasta [MAX-A-MPDU-LEN-EXP7] indican la longitud máxima de agregación A-MPDU que puede recibir la interfaz.

    La longitud se calcula mediante la siguiente fórmula:

    2^(13 + exponente) - 1 octetos

    Por ejemplo:

    EXP0 = 8191 octetos
    EXP1 = 16383 octetos
    EXP2 = 32767 octetos
    EXP3 = 65535 octetos
    EXP4 = 131071 octetos
    EXP5 = 262143 octetos
    EXP6 = 524287 octetos
    EXP7 = 1048575 octetos

    A-MPDU agrupa varias tramas MPDU dentro de una misma transmisión. Esto permite reducir la sobrecarga del acceso al medio sin obligar a retransmitir toda la agregación cuando falla una única MPDU.

    [VHT-LINK-ADAPT2]
    Indica que la estación proporciona información VHT MFB, Modulation Feedback, de manera no solicitada.

    [VHT-LINK-ADAPT3]
    Indica que la estación puede proporcionar información VHT MFB tanto de manera no solicitada como en respuesta a una petición MRQ.

    Estas flags tienen sentido cuando también está habilitada la capacidad [HTC-VHT].

    [RX-ANTENNA-PATTERN]
    Indica que el patrón de las antenas receptoras no cambia durante la asociación.

    [TX-ANTENNA-PATTERN]
    Indica que el patrón de las antenas transmisoras no cambia durante la asociación.

    Estas opciones describen la consistencia del patrón de antena. No son interruptores genéricos para mejorar la cobertura ni la potencia de transmisión.

    Seleccionar el ancho operativo VHT

    Las capabilities VHT describen lo que soporta el dispositivo, pero no seleccionan por sí mismas el ancho de canal con el que funcionará el punto de acceso.

    El parámetro vht_oper_chwidth admite los siguientes valores:

    0 = 20 o 40 MHz
    1 = 80 MHz
    2 = 160 MHz
    3 = 80+80 MHz

    También debemos indicar el centro del segmento mediante vht_oper_centr_freq_seg0_idx.

    Por ejemplo, para utilizar un canal principal 36 dentro de un bloque de 80 MHz centrado en el índice 42:

    hw_mode=a
    channel=36
    
    ieee80211n=1
    ieee80211ac=1
    wmm_enabled=1
    
    ht_capab=[HT40+][SHORT-GI-20][SHORT-GI-40]
    vht_oper_chwidth=1
    vht_oper_centr_freq_seg0_idx=42
    vht_capab=[SHORT-GI-80]

    El índice 42 representa una frecuencia central de 5210 MHz. Aunque no sea un canal primario seleccionable, identifica el centro del bloque formado por los canales 36, 40, 44 y 48.

    Para 80+80 MHz también debemos configurar vht_oper_centr_freq_seg1_idx con el índice central del segundo segmento.

    Los canales realmente disponibles dependen del dominio regulatorio, la tarjeta, el controlador y las restricciones DFS. Debemos configurar siempre el país correcto:

    country_code=ES
    ieee80211d=1
    ieee80211h=1

    Podemos consultar el dominio regulatorio activo mediante:

    iw reg get

    Obligar a utilizar HT o VHT

    Podemos impedir que se conecten clientes que no soporten 802.11n:

    require_ht=1

    También podemos exigir soporte para 802.11ac:

    require_vht=1

    Estas opciones reducen la compatibilidad. Solo deberíamos activarlas cuando sepamos que todos los dispositivos que utilizarán la red soportan el estándar requerido.

    Aislar los clientes WiFi

    El parámetro ap_isolate impide que hostapd reenvíe directamente tramas de nivel 2 entre estaciones asociadas al mismo BSS:

    ap_isolate=1

    Con el valor cero, que es el comportamiento predeterminado, los clientes pueden comunicarse directamente entre sí a través del punto de acceso:

    ap_isolate=0

    Esta opción resulta útil en redes de invitados, hoteles, aulas o redes públicas.

    Debemos tener en cuenta que ap_isolate solamente controla el reenvío interno realizado por el punto de acceso. Si el tráfico sale hacia un bridge o router y vuelve a entrar, puede ser necesario añadir reglas de firewall, separar los clientes mediante VLAN o aplicar aislamiento en el bridge.

    Filtrado mediante direcciones MAC

    El parámetro macaddr_acl controla cómo se utilizan las listas de direcciones MAC.

    Con el valor cero, hostapd acepta las direcciones salvo que aparezcan en el archivo de denegación:

    macaddr_acl=0
    deny_mac_file=/etc/hostapd/hostapd.deny

    Con el valor uno, hostapd rechaza todas las direcciones salvo las incluidas en el archivo de aceptación:

    macaddr_acl=1
    accept_mac_file=/etc/hostapd/hostapd.accept

    Con el valor dos, la decisión puede delegarse en un servidor RADIUS:

    macaddr_acl=2

    Los archivos contienen una dirección MAC por línea:

    00:11:22:33:44:55
    10:20:30:40:50:60
    a0:b1:c2:d3:e4:f5

    Es recomendable utilizar rutas absolutas para que hostapd pueda volver a leer correctamente los archivos cuando recarguemos la configuración.

    El filtrado MAC no sustituye a WPA2 o WPA3. Las direcciones MAC se transmiten por radio y pueden copiarse o falsificarse. Debemos considerarlo únicamente una medida administrativa adicional.

    Interfaz de control de hostapd

    El parámetro ctrl_interface establece el directorio en el que hostapd creará los sockets Unix utilizados para recibir órdenes:

    ctrl_interface=/run/hostapd

    Esta interfaz es utilizada por herramientas como hostapd_cli. Por ejemplo, podemos consultar el estado del punto de acceso mediante:

    hostapd_cli status

    También podemos comprobar si el daemon responde:

    hostapd_cli ping

    La respuesta esperada es:

    PONG

    El parámetro ctrl_interface_group determina qué grupo puede acceder a la interfaz de control:

    ctrl_interface_group=0

    El grupo cero corresponde normalmente a root. También podemos indicar el nombre de un grupo específico:

    ctrl_interface_group=hostapd

    Los miembros de ese grupo podrán utilizar la interfaz de control sin ejecutar necesariamente las herramientas como root.

    Debemos restringir cuidadosamente este acceso, ya que la interfaz de control permite consultar estaciones, desconectar clientes, modificar determinados parámetros y controlar el funcionamiento del punto de acceso.

    La expresión $CONFDIR/hostapd_ctrl que aparece en algunas plantillas no es una ruta universal de hostapd. Puede ser una variable sustituida previamente por un script, un sistema de compilación o una plantilla. En una configuración normal deberíamos utilizar una ruta absoluta real, como:

    ctrl_interface=/run/hostapd

    Capacidades de WiFi 6

    Las opciones ht_capab y vht_capab corresponden a 802.11n y 802.11ac. Para 802.11ax hostapd utiliza ieee80211ax y distintos parámetros HE individuales:

    ieee80211ax=1
    he_su_beamformer=1
    he_su_beamformee=1
    he_mu_beamformer=1
    he_bss_color=1

    No debemos copiar estas opciones sin comprobar antes que el hardware y el controlador las soportan. En muchas tarjetas de consumo el modo cliente funciona correctamente, pero el firmware no implementa todas las funciones necesarias cuando utilizamos la interfaz en modo AP.

    Ejemplo básico para 802.11n en 2,4 GHz

    Una configuración conservadora de 20 MHz puede utilizar:

    interface=wlan0
    driver=nl80211
    
    country_code=ES
    ieee80211d=1
    
    ssid=MiRedWiFi
    hw_mode=g
    channel=1
    
    wmm_enabled=1
    ieee80211n=1
    ht_capab=[SHORT-GI-20]
    
    ap_isolate=1
    
    ctrl_interface=/run/hostapd
    ctrl_interface_group=0

    Ejemplo básico para 802.11ac en 5 GHz

    interface=wlan0
    driver=nl80211
    
    country_code=ES
    ieee80211d=1
    ieee80211h=1
    
    ssid=MiRedWiFi5G
    hw_mode=a
    channel=36
    
    wmm_enabled=1
    ieee80211n=1
    ieee80211ac=1
    
    ht_capab=[HT40+][SHORT-GI-20][SHORT-GI-40]
    
    vht_oper_chwidth=1
    vht_oper_centr_freq_seg0_idx=42
    vht_capab=[SHORT-GI-80]
    
    ap_isolate=1
    
    ctrl_interface=/run/hostapd
    ctrl_interface_group=0

    Este ejemplo no pretende representar todas las capacidades posibles de una tarjeta. Debemos añadir a ht_capab y vht_capab únicamente las flags que aparezcan en la salida de iw list y que sean aceptadas por el controlador cuando la interfaz funciona en modo AP.


    Deja una respuesta