
# 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 iproute2
herramientas (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
- 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>
; - Active la interfaz wlan0 y veth0, pero no le agregue ninguna dirección;
- Comience
vethify wlan0 veth0
en el espacio de nombres de la red del host. Copiará todo lo capturado en wlan0 a veth0 y viceversa; - Configure la dirección IP y el enrutamiento en el otro espacio de nombres en veth1;
- 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.