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

3
# ip link set  wlan0 netns 1
RTNETLINK answers: Invalid argument

Funciona para ethernet usual. Ele também funciona para o driver "wl" broadcom proprietário.

Como fazer isso para o driver baseado em mac80211?

    
por Vi. 03.10.2013 / 19:26

2 respostas

4

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 iproute2 tools (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 voltar ao namespace raiz:

ip netns exec mynetns iw phy phy0 set netns 1
    
por 14.04.2015 / 15:55
0

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

  1. Crie um par de interfaces virtuais, mova uma delas (por exemplo, veth1) para outro espaço de nomes: ip link add type veth ; %código%;
  2. Traga a interface wlan0 e veth0 para cima, mas não adicione nenhum endereço a ela;
  3. Inicie ip link set veth1 netns <some_pid> no namespace da rede do host. Ele irá copiar todos os capturados em wlan0 para veth0 e voltar;
  4. Configure o endereço IP e o roteamento no outro namespace em veth1;
  5. Desativar o descarregamento da soma de verificação para veth1: vethify wlan0 veth0 .

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

    
por 19.10.2013 / 18:07