Teórico: interfaz TAP con interfaz WIFI para padres

Teórico: interfaz TAP con interfaz WIFI para padres

Estoy intentando crear múltiples interfaces TAP de Linux y permitirles enviar/recibir paquetes a través de un único adaptador WIFI. Para todos los efectos, me gustaría que las interfaces TAP actuaran como adaptadores de red completos. Deberían poder solicitar sus propias direcciones DHCP e interactuar en la red local como lo haría cualquier otro adaptador de red.

Logré que esto funcionara con un adaptador Ethernet, pero escuché que WiFi es una bestia diferente. No recuerdo el razonamiento exacto, pero tenía algo que ver con "1 dirección IP por dirección de transmisión de radio".

¿Es posible, utilizando interfaces TAP, esencialmente crear redes en puente a través de una conexión WiFi? ¿Puedo realizar alguna configuración con networkmanager? ¿Alguien puede vincular uno o dos artículos? Me está costando encontrar algo sobre esto.

Respuesta1

Este enlace de Network Engineering SECuatro direcciones de capa 2 en el encabezado de trama 802.11Explica bastante bien la diferencia entre Ethernet y Wifi.

Wifi requiere direcciones MAC adicionales para la comunicación: además de la dirección del remitente (SA) y la dirección de destino (DA), que son las mismas que las MAC de origen y destino de Ethernet, Wifi necesita la dirección del transmisor (TA) y la dirección del receptor (RA) para funcionar: esto hace un total de 4 direcciones MAC. Ya que el caso común es que cuando el cliente (STA) envía, TA = SA y cuando el Punto de Acceso (AP) envía a la STA, DA = RA, normalmente solo se necesitan 3 direcciones, y así se configuran los AP: para usar Sólo 3 direcciones de las 4 posibles.

Un cliente en modo puente significa que arriba TA != SA o DA != RA y se necesitan las 4 direcciones, mientras que el AP está configurado solo para 3. Es por eso que en configuraciones comunes no es posible conectar Wifi. El modo de 4 direcciones debe estar habilitado tanto en el AP como en la STA para que funcione el puente de cliente. Esto generalmente se llamaSistema de distribución inalámbrico (WDS), pero probablemente haya varias implementaciones incompatibles. AP y todas las STA deben utilizar una implementación compatible.

Entonces:

  • si el puente del sistema es el AP, entonces puede conectar wifi sin problemas: eso es lo que hacen todos los AP, usando el modo predeterminado de 3 direcciones.

  • si el sistema que intenta establecer un puente es un cliente simple (STA), no funcionará. Los controladores recientes incluso impedirán configurar la interfaz inalámbrica como puerto puente con este tipo de error:

    # ip link set wlan0 master bridge0
    Error: Device does not allow enslaving to a bridge.
    
  • si puedes configurarambosel AP y el STA en un WDS compatible, por ejemplo, si todos ejecutan Linux con controladores compatibles con mac80211, esto se puede habilitar en el STA con:

    # iw dev wlan0 set 4addr on
    

Entonces puede ser esclavizado:

    # ip link set wlan0 master bridge0
    # ip link show wlan0
    3: wlan0: <BROADCAST,MULTICAST> mtu 1500 qdisc noqueue master bridge0 state DOWN mode DEFAULT group default qlen 1000
    [...]

Se puede encontrar documentación sobre el modo de 4 direcciones con el comando iw en la wiki inalámbrica de Linux:Usando 4 direcciones para AP y modo cliente

La configuración del AP está fuera de alcance aquí. Cuando usashostapd, hay una configuración específica para habilitar:

# WDS (4-address frame) mode with per-station virtual interfaces
# (only supported with driver=nl80211)
# This mode allows associated stations to use 4-address frames to allow layer 2
# bridging to be used.
#wds_sta=1

Todavía existe una solución que permite usar múltiples contenedores o máquinas virtuales simultáneamente con IP separadas a través de una única conexión Wifi en modo predeterminado (modo de 3 direcciones), pero usando solounoDirección MAC (la que se usa como STA): es asínormalmente no es compatible con DHCPque de forma predeterminada se basa en la dirección MAC (a menos que el servidor DHCP acepte la dirección MAC).identificador-cliente-dhcpopción). Se llamaIPVLAN(generalmente para contenedores) y su contraparte TAP (generalmente para VM) se llamaIPVTAP. Cuando se utiliza en modo L2, proporciona lo que parece una interfaz Ethernet estándar.

Para un (simpleredes ipred) contenedor, esto podría usarse así después de haber establecido ya una conexión Wifi en la IP LAN 192.0.2.0/24 con la puerta de enlace 192.0.2.1, en el host usando la interfazwlan0:

# ip netns add testwifi
# ip link add link wlan0 name ipvl0 type ipvlan mode l2
# ip link set dev ipvl0 netns testwifi up
# ip -n testwifi address add 192.0.2.99/24 dev ipvl0
# ip -n testwifi route add default via 192.0.2.1
# ip netns exec testwifi ping -q -c1 8.8.8.8
PING 8.8.8.8 (8.8.8.8) 56(84) bytes of data.

--- 8.8.8.8 ping statistics ---
1 packets transmitted, 1 received, 0% packet loss, time 0ms
rtt min/avg/max/mdev = 5.372/5.372/5.372/0.000 ms

Dudo seriamente que NetworkManager tenga alguna opción relacionada con el modo de 4 direcciones. Como paraIPVLAN/IPVTAPesto tiene que ser compatible con la aplicación de virtualización/contenedor, comoLXCo libvirt (que no parece ser compatible con IPVTAP de forma nativa), en realidad no por NetworkManager.

información relacionada