Bagaimana saya bisa memindahkan antarmuka dari namespace jaringan?

10

Jika saya memindahkan antarmuka sementara ke jaringan dengan

ip link set eth10 netns myns

maka tidak lagi terlihat di root, hanya di dalam namespace myns.

Bagaimana saya memindahkannya kembali, sesuatu seperti (ini jelas tidak ada):

ip link unset eth10

atau mungkin

ip link set eth10 netns root

atau serupa?

Deitch
sumber

Jawaban:

13

Saya menemukan jawaban. Tentu, Anda tidak dapat melakukannya dari dalam jaringan. Tetapi, jika Anda mengeksekusi ip netns exec ....dari dalam namespace jaringan root, semuanya bekerja.

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

Lalu berhasil! Dibutuhkan PID (1 dalam hal ini) yang kami tetapkan untuk berada dalam konteks perintah eksekusi (pembungkus) sebelum kita memasuki jaringan. Selesai!

Deitch
sumber
Mari kita berharap bahwa "1" sebenarnya mereferensikan namespace jaringan "root" ...
TheDiveO
pindahkan eth10 untuk kembali ke namespace jaringan default: ip netns exec myns ip tautan set eth10 netns default
Ted Feng
Pada sistem 10 Debian saya "default" tampaknya memang 1. ip netns exec testns ip link set tun0 netns 1bekerja, sedangkan 'default' menghasilkan Error: argument "default" is wrong: Invalid "netns" value.
Paul
Lebih lanjut mengacau tentang menunjukkan bahwa ini adalah id. Jika Anda telah membuat satu namespace tambahan yang akan memiliki id 2.
Paul
5

Anda dapat menggunakan ip netns deletefungsi ini. Dari halaman manual:

ip [-semua] jaringan hapus [NAMA] - hapus nama ruang jaringan

Jika NAME ada di / var / run / netns maka umounted dan mount point dihapus. Jika ini adalah pengguna terakhir namespace jaringan, namespace jaringan akan dibebaskan dan semua perangkat fisik akan dipindahkan ke yang default , jika tidak namespace jaringan tetap ada sampai tidak ada lagi pengguna. ip netns delete mungkin gagal jika mount point digunakan di mount namespace lainnya.

Itu tidak dapat digunakan untuk semua tujuan, tapi itu pasti rute termudah.

Dave
sumber
4

Apa yang berhasil bagi saya berdasarkan jawaban deitch adalah menjalankan perintah dari custom netns:

ip netns exec myns ip link set eth10 netns 1

Shedee
sumber