Como consultar e alterar o namespace da rede no linux?

2

Eu queria saber se existe uma maneira de

  1. Consulte o namespace da rede em que o shell atual está
  2. Alterar o namespace de rede atual do shell atual

Eu sei que posso fazer coisas como

sudo ip netns exec <namespace_name> <some command>

para executar um determinado comando em um determinado namespace de rede, mas eu estava pensando em algo como

:~$ sudo query_current_namespace
some_namespace
:~$ sudo change_current_namespace_to other_namespace
:~$ sudo query_current_namespace
other_namespac
:~$ dothings in newnamespace

Assim como mudando para um subdiretório, não precisarei prefixar todos os comandos com sudo ip netns exec <namespace> thingy.

Pesquisando na rede, parece que eu teria que escrever meu próprio programa C, como sugerido nesta postagem do blog . Existe uma ferramenta "padrão" para isso?

Editar: descobri que podia fazer

sudo ip netns exec <namespace> bash

que me dará um shell de root em um novo namespace. Então, quase lá, mas como faço para consultar o namespace atual?

    
por Isaac 19.07.2013 / 09:25

1 resposta

3

Veja a página man:

   ip netns identify PID - Report network namespaces names for process
       This command walks through /var/run/netns and finds all the network
       namespace names for network namespace of the specified process.

Então você faria algo como:

ip netns identify $$
    
por 19.07.2013 / 10:06