Como posso mover uma interface para fora de um namespace de rede?


10

Se eu mover uma interface temporariamente para um netns com

ip link set eth10 netns myns

então, não é mais visível na raiz, apenas no espaço de nomes myns.

Como faço para retroceder, algo como (obviamente isso não existe):

ip link unset eth10

ou talvez

ip link set eth10 netns root

ou similar?

Respostas:


13

Eu encontrei uma resposta. Claro, você não pode fazer isso de dentro dos netns. Mas, se você executar a ip netns exec ....partir do namespace da rede raiz, tudo funcionará.

ip netns exec <PID> ip link set eth10 netns 1

Então funciona! Leva o PID (1 neste caso) ao qual o estamos atribuindo no contexto do comando de execução (wrapper) antes de entrar nos netns. Feito!


Vamos torcer para que "1" esteja realmente referenciando o espaço para nome da rede "raiz" ...
TheDiveO

movimento eth10 de volta ao padrão namespace rede: ip netns exec myns IP Link conjunto netns eth10 padrão
Ted Feng

No meu sistema Debian 10, "default" parece realmente 1. ser ip netns exec testns ip link set tun0 netns 1trabalhado, enquanto 'default' resultou em Error: argument "default" is wrong: Invalid "netns" value.
Paul

Mexer ainda mais mostra que esses são IDs. Se você criou um espaço para nome adicional que terá o ID 2.
Paul

5

Você pode usar a ip netns deletefunção Na página do manual:

ip [-all] netns delete [NAME] - exclua o nome do (s) namespace (s) da rede

Se NAME estiver presente em / var / run / netns, ele será desmontado e o ponto de montagem será removido. Se este for o último usuário do espaço para nome da rede, o espaço para nome da rede será liberado e todos os dispositivos físicos serão movidos para o padrão , caso contrário, o espaço para nome da rede persistirá até que não haja mais usuários. O ip netns delete pode falhar se o ponto de montagem estiver em uso em outro namespace de montagem.

Não pode ser usado para todos os fins, mas é definitivamente o caminho mais fácil.


4

O que funcionou para mim com base na resposta de deitch é executar o comando a partir dos netns personalizados:

ip netns exec myns ip link set eth10 netns 1

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.