¿Cómo puedo mover una interfaz fuera de un espacio de nombres de red?

10

Si muevo una interfaz temporalmente a una red con

ip link set eth10 netns myns

entonces ya no es visible en la raíz, solo dentro del espacio de nombres myns.

¿Cómo lo muevo hacia atrás, algo como (estos obviamente no existen):

ip link unset eth10

o quizás

ip link set eth10 netns root

¿o similar?

deitch
fuente

Respuestas:

13

Encontré una respuesta. Claro, no puedes hacerlo desde las redes. Pero, si ejecuta ip netns exec ....desde dentro del espacio de nombres de la red raíz, todo funciona.

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

Entonces funciona! Toma el PID (1 en este caso) al que le estamos asignando que esté en el contexto del comando de ejecución (reiniciador) antes de ingresar a las redes. ¡Hecho!

deitch
fuente
Esperemos que "1" realmente haga referencia al espacio de nombres de la red "raíz" ...
TheDiveO
mueva eth10 para volver al espacio de nombres de red predeterminado: ip netns exec myns conjunto de enlaces ip eth10 netns predeterminado
Ted Feng
En mi sistema Debian 10, "default" parece estar ip netns exec testns ip link set tun0 netns 1funcionando 1. mientras que 'default' resultó en Error: argument "default" is wrong: Invalid "netns" value.
Paul
Más desorden sobre muestra que estos son identificadores. Si ha creado un espacio de nombres adicional que tendrá id 2.
Paul
5

Puedes usar la ip netns deletefunción. Desde la página del manual:

ip [-all] netns delete [NAME] - elimina el nombre de un espacio de nombres de red

Si NAME está presente en / var / run / netns, se desmonta y se elimina el punto de montaje. Si este es el último usuario del espacio de nombres de la red, el espacio de nombres de la red se liberará y todos los dispositivos físicos se moverán al predeterminado ; de lo contrario, el espacio de nombres de la red persistirá hasta que no haya más usuarios. ip netns delete puede fallar si el punto de montaje está en uso en otro espacio de nombres de montaje.

No se puede usar para todos los propósitos, pero definitivamente es la ruta más fácil.

Dave
fuente
4

Lo que funcionó para mí según la respuesta de deitch es ejecutar el comando desde las redes personalizadas:

ip netns exec myns ip link set eth10 netns 1

Shedee
fuente