web-dev-qa-db-fra.com

Comment puis-je déplacer une interface d'un espace de noms de réseau?

Si je déplace temporairement une interface dans un Netns avec

ip link set eth10 netns myns

ensuite, il n'est plus visible à la racine, ce n'est que dans la myns d'espace de noms.

Comment puis-je le déplacer, quelque chose comme (ceux-ci n'existent évidemment pas):

ip link unset eth10

ou peut-être

ip link set eth10 netns root

ou similaire?

9
deitch

J'ai trouvé une réponse. Bien sûr, vous ne pouvez pas le faire de l'intérieur des Netns. Mais si vous exécutez ip netns exec .... À partir de l'espace de noms de réseau racine, tout fonctionne.

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

Alors ça marche! Il prend le PID (1 dans ce cas) sur lequel nous l'attribuons à être dans le contexte de la commande d'exécution (wrapper) avant de saisir les NETN. Terminé!

12
deitch

Vous pouvez utiliser le ip netns delete fonction. De la page man:

iP [-ALL] NETNS Suppr [Nom] - Supprimer le nom d'un ou plusieurs espaces de noms de réseau

Si le nom est présent dans/var/exécuté/netns, il est souligné et le point de montage est supprimé. S'il s'agit du dernier utilisateur de l'espace de noms de réseau, l'espace de noms de réseau sera libéré et tous les périphériques physiques seront déplacés sur la valeur par défaut, sinon l'espace de noms de réseau persiste jusqu'à ce qu'il n'ait plus d'utilisateurs. IP Netns Suppr Delete peut échouer si le point de montage est utilisé dans un autre espace de noms de montage.

Il ne peut pas être utilisé à toutes fins, mais c'est certainement la voie la plus facile.

5
Dave

Ce qui a fonctionné pour moi basé sur la réponse de De Deitch consiste à exécuter la commande à partir des Netns personnalisés:

ip netns exec myns ip link set eth10 netns 1

4
Shedee