¿Cómo mover la conexión inalámbrica a otro espacio de nombres de red?

¿Cómo mover la conexión inalámbrica a otro espacio de nombres de red?
# ip link set  wlan0 netns 1
RTNETLINK answers: Invalid argument

Funciona para ethernet habitual. También funciona con el controlador "wl" propietario de broadcom.

¿Cómo hacerlo con el controlador habitual basado en mac80211?

Respuesta1

Necesitas mover el PHY:

iw phy phy0 set netns 666

Donde 666 es el pid de algún proceso que se ejecuta en ese espacio de nombres de red; para espacios de red creados por iproute2herramientas (con ip netns), puede crear un proceso de corta duración allí y obtener su pid:

iw phy phy0 set netns "$(ip netns exec mynetns sh -c '
  sleep 1 >&- & echo "$!"')"

Para devolverlo al espacio de nombres raíz:

ip netns exec mynetns iw phy phy0 set netns 1

Respuesta2

Para wifi, obtenga primero la dirección física de su interfaz (en caso de que tenga más de 1 tarjeta inalámbrica):

iw dev

El resultado será algo como esto:

phy#0
        Interface wlp58s0
                ifindex 3
                wdev 0x1
                ...

Entonces el nombre esphy0

ahora usa eso para asignar tu wifi al espacio de nombres:

# iw phy phy0 set netns name <MyNamespace>

De la ayuda de iw:

    phy <phyname> set netns { <pid> | name <nsname> }
            Put this wireless device into a different network namespace:
                <pid>    - change network namespace by process id
                <nsname> - change network namespace by name from /var/run/netns
                           or by absolute path (man ip-netns)

Respuesta3

Implementé mi propia solución alternativa:vetificar

  1. Cree un par de interfaces virtuales, mueva una de ellas (por ejemplo, veth1) a otro espacio de nombres: ip link add type veth; ip link set veth1 netns <some_pid>;
  2. Active la interfaz wlan0 y veth0, pero no le agregue ninguna dirección;
  3. Comience vethify wlan0 veth0en el espacio de nombres de la red del host. Copiará todo lo capturado en wlan0 a veth0 y viceversa;
  4. Configure la dirección IP y el enrutamiento en el otro espacio de nombres en veth1;
  5. Deshabilite la descarga de suma de comprobación para veth1: ethtool --offload veth1 rx off tx off && ethtool -K veth1 gso off.

Nota: vethify ve todos los paquetes en el espacio de nombres de la red, no solo los de wlan0 y veth0. Agregará latencia y provocará una sobrecarga adicional.

información relacionada