Come posso spostare un'interfaccia fuori da uno spazio dei nomi di rete?


10

Se sposto temporaneamente un'interfaccia in un netns con

ip link set eth10 netns myns

quindi non è più visibile nella radice, ma solo nello spazio dei nomi myns.

Come posso spostarlo indietro, qualcosa del genere (ovviamente non esistono):

ip link unset eth10

o forse

ip link set eth10 netns root

o simili?

Risposte:


13

Ho trovato una risposta Certo, non puoi farlo dall'interno dei netns. Ma, se esegui ip netns exec ....dallo spazio dei nomi della rete radice, tutto funziona.

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

Quindi funziona! Prende il PID (1 in questo caso) al quale lo stiamo assegnando per essere nel contesto del comando di esecuzione (wrapper) prima di entrare nei netns. Fatto!


Speriamo che "1" stia effettivamente facendo riferimento allo spazio dei nomi di rete "root" ...
TheDiveO

sposta eth10 per tornare allo spazio dei nomi di rete predefinito: ip netns exec myns set di collegamenti ip eth10 netns default
Ted Feng

Sul mio sistema Debian 10 "default" sembra effettivamente essere 1. ip netns exec testns ip link set tun0 netns 1funzionato, mentre "default" ne risulta Error: argument "default" is wrong: Invalid "netns" value.
Paul,

Ulteriore confusione mostra che questi sono ID. Se hai creato uno spazio dei nomi aggiuntivo con ID 2.
Paul,

5

Puoi usare la ip netns deletefunzione. Dalla pagina man:

ip [-all] netns delete [NAME] - elimina il nome di uno o più spazi dei nomi di rete

Se NAME è presente in / var / run / netns viene smontato e il punto di montaggio viene rimosso. Se questo è l'ultimo utente dello spazio dei nomi di rete, lo spazio dei nomi di rete verrà liberato e tutti i dispositivi fisici verranno spostati su quello predefinito , altrimenti lo spazio dei nomi di rete persiste fino a quando non ha più utenti. L'eliminazione di ip netns potrebbe non riuscire se il punto di montaggio è in uso in un altro spazio dei nomi di montaggio.

Non può essere utilizzato per tutti gli scopi, ma è sicuramente il percorso più semplice.


4

Ciò che ha funzionato per me sulla base della risposta di deitch è eseguire il comando dai netns personalizzati:

ip netns exec myns ip link set eth10 netns 1

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.