Como mover a conexão sem fio para outro namespace de rede?

Como mover a conexão sem fio para outro namespace de rede?
# ip link set  wlan0 netns 1
RTNETLINK answers: Invalid argument

Funciona para Ethernet normal. Ele também funciona para o driver proprietário "wl" da Broadcom.

Como fazer isso para o driver usual baseado em mac80211?

Responder1

Você precisa mover o PHY:

iw phy phy0 set netns 666

Onde 666 é o pid de algum processo em execução nesse namespace de rede; para netspaces criados por iproute2ferramentas (com ip netns), você pode criar um processo de curta duração e obter seu pid:

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

Para movê-lo de volta para o namespace raiz:

ip netns exec mynetns iw phy phy0 set netns 1

Responder2

Para wifi, obtenha primeiro o endereço físico da sua interface (caso você tenha mais de 1 placa wireless):

iw dev

O resultado será mais ou menos assim:

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

Então o nome éphy0

agora use isso para atribuir seu wifi ao namespace:

# iw phy phy0 set netns name <MyNamespace>

Com a ajuda 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)

Responder3

Implementei minha própria solução alternativa:vetificar

  1. Crie um par de interfaces virtuais, mova uma delas (por exemplo, veth1) para outro namespace: ip link add type veth; ip link set veth1 netns <some_pid>;
  2. Ative a interface wlan0 e veth0, mas não adicione nenhum endereço a ela;
  3. Comece vethify wlan0 veth0no namespace da rede host. Ele copiará tudo capturado em wlan0 para veth0 e vice-versa;
  4. Configure o endereço IP e o roteamento no outro namespace em veth1;
  5. Desative o descarregamento de soma de verificação para veth1: ethtool --offload veth1 rx off tx off && ethtool -K veth1 gso off.

Nota: o vethify vê todos os pacotes no namespace da rede, não apenas os wlan0 e veth0. Isso adicionará latência e causará sobrecarga adicional.

informação relacionada