Cómo redirigir entre interfaces de red físicas dentro del puente

Cómo redirigir entre interfaces de red físicas dentro del puente

Tengo una PC en casa con una conexión Ethernet por cable (conectada al enrutador) y una tarjeta wifi. El wifi se configura como punto de acceso (hostapd) y las interfaces de red están puenteadas:

auto enp0s10
iface enp0s10 inet manual

auto wlan0
allow-hotplug wlan0
iface wlan0 inet manual

auto br0
iface br0 inet dhcp
bridge_ports wlan0 enp0s10
netmask 255.255.255.0

Hay algunas iptablesreglas que afectan el tráfico seleccionado que pasa por elwlan0interfaz únicamente, utilizando el --physdev-inselector. Esta configuración funciona como se esperaba.
Lo que estoy tratando de hacer ahora es tener un mecanismo para forzar la ejecución de procesos seleccionados en el dispositivo.sólo enviar tráfico a través wlan0.
Siguiendo una pistaaquíLo intenté:

> sudo ip netns add myNamespace
> sudo ip link set wlan0 netns myNamespace
RTNETLINK answers: Invalid argument 

Lo cual, hasta donde yo sé, significa:

  • que no puedo nominar la interfaz física porque está puenteada
  • No puedo usar un netnsespacio de nombres para lograr mi objetivo

EDITAR: siguiendo la sugerencia a continuación degravedadcombinado con el cliente potencial mencionado anteriormente, probé:

> sudo ip netns show
> sudo ip netns add myNamespace
> sudo ip netns show
myNamespace
> sudo iw phy phy0 set name myNamespace
> sudo ip netns exec myNamespace ip link show
1: lo: <LOOPBACK> mtu 65536 qdisc noop state DOWN mode DEFAULT group default qlen 1
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00

En esta etapa, ¿debería esperar ver alguno de los dos?phy0owlan0listado? El iw phy phy0 set name myNamespacecomando no devuelve ningún mensaje de error pero ninguna interfaz parece haber sido agregada ami espacio de nombres. Como era de esperar, el intento de abrir la interfaz falla:

> sudo ip netns exec myNamespace ifconfig wlan0 192.168.0.10/24 up
SIOCSIFADDR: No such device
wlan0: ERROR while getting interface flags: No such device
wlan0: ERROR while getting interface flags: No such device
SIOCSIFNETMASK: No such device
> sudo ip netns exec myNamespace ifconfig phy0 192.168.0.10/24 up  
SIOCSIFADDR: No such device
phy0: ERROR while getting interface flags: No such device
phy0: ERROR while getting interface flags: No such device
SIOCSIFNETMASK: No such device<br/>

Nuevamente, sospecho que esto se complica por la configuración del puente.

El plan B es crear un usuario/grupo específicamente para esta tarea (llamémoslostráfico inalámbrico) luego utilícelo iptablespara redirigir el tráfico de este usuario awlan0si/cuándo va a serenp0s10.
Aquí es donde me quedo estancado. La regla se vería así:

iptables -t nat -A PREROUTING -m owner --gid-owner wlantraffic -m physdev ! --physdev-in wlan0 -j ???

es decir, "tráfico del grupotráfico inalámbricoesono lo ha hechoentró en el puente porwlan0debe ser desviado haciawlan0"
Los paquetes serán tráfico de Internet estándar.
Mis preguntas son:

  • ¿Es esto una PREROUTINGo una FORWARDregla?
  • Si tuviera que DROPhacer coincidir paquetes, dentro del contexto de un puente, ¿los paquetes "pasarían" a la siguiente interfaz?
  • ¿Cómo especifico elwlan0interfaz como el objetivo?

Respuesta1

No puedo usar un espacio de nombres ntns para lograr mi objetivo

El puente podría ser tu problema; sin embargo:

Las interfaces WLAN son un poco extrañas cuando se trata de espacios de nombres de red. Cada adaptador tiene dos capas: phy (que representa el hardware físico) y netdev (que representa la interfaz de red).

(La razón es que es posible tener múltiples netdevs en el mismo phy, por ejemplo, cliente+AP, o un adaptador Wi-Fi de doble banda podría tener wlan0 y wlan1 funcionando simultáneamente en diferentes redes. Si tiene curiosidad, consulte iw phyqué combinaciones se admiten. para su adaptador.)

Linux actualmente tiene una limitación que elcompletoel dispositivo phy debe moverse a un espacio de nombres; los netdevs individuales no se pueden mover. Para hacer esto, use iw:

iw phy phy0 set netns myNamespace

¿Es esta una regla PREROUTING o FORWARD?

Generalmente todo depende de qué acción (el -jparámetro) se utiliza. Algunas sólo tienen sentido en FORWARD, otras sólo en PREROUTING; algunos solo funcionan en -t nat, otros solo en -t mangle.

Si soltara paquetes coincidentes, dentro del contexto de un puente, ¿los paquetes "caerían" en la siguiente interfaz?

No. Las reglas de iptables son para IP y se procesan antes de que el paquete llegue a la capa de puente. Si el paquete se descarta en la capa IP, desaparece.

información relacionada