如何将无线连接移动到其他网络命名空间?

Vi.*_*Vi. 10 linux wireless-networking

# ip link set  wlan0 netns 1
RTNETLINK answers: Invalid argument
Run Code Online (Sandbox Code Playgroud)

它适用于通常的以太网。它也适用于专有的 Broadcom“wl”驱动程序。

对于通常的基于 mac80211 的驱动程序如何做到这一点?

小智 14

您需要移动 PHY:

iw phy phy0 set netns 666
Run Code Online (Sandbox Code Playgroud)

其中 666 是在该网络命名空间中运行的某个进程的 pid;对于由iproute2工具(使用ip netns)创建的网络空间,您可以在其中创建一个短期进程并获取其 pid:

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

要将其移回根命名空间:

ip netns exec mynetns iw phy phy0 set netns 1
Run Code Online (Sandbox Code Playgroud)