インターフェイスをネットワーク名前空間から移動するにはどうすればよいですか?


10

インターフェースを一時的にnetnsに移動すると

ip link set eth10 netns myns

その後、名前空間myns内でのみ、ルートには表示されなくなります。

どうすれば元に戻すことができますか(これらは明らかに存在しません)。

ip link unset eth10

多分

ip link set eth10 netns root

または類似?

回答:


13

答えを見つけました。もちろん、netns内からはできません。ただし、ip netns exec ....ルートネットワークの名前空間内から実行すると、すべて機能します。

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

その後、動作します!netnsに入る前に、実行中のコマンド(ラッパー)のコンテキスト内にあるPID(この場合は1)を取得します。できた!


「1」が実際に「ルート」ネットワーク名前空間を参照していることを期待しましょう...
TheDiveO

eth10をデフォルトのネットワーク名前空間に戻します:ip netns exec myns ip link set eth10 netns default
Ted Feng

私のDebian 10システムでは、「デフォルト」は実際に1であるように見えip netns exec testns ip link set tun0 netns 1ますが、「デフォルト」はをもたらしましたError: argument "default" is wrong: Invalid "netns" value
ポール

さらにいじると、これらがIDであることが示されます。ID 2を持つ追加のネームスペースを1つ作成した場合
Paul

5

ip netns delete関数を使用できます。manページから:

ip [-all] netns delete [NAME]-ネットワーク名前空間の名前を削除します

NAMEが/ var / run / netnsに存在する場合は、マウント解除され、マウントポイントが削除されます。これがネットワーク名前空間の最後のユーザーである場合、ネットワーク名前空間は解放され、すべての物理デバイスはデフォルトのデバイスに移動されます。それ以外の場合、ネットワーク名前空間はユーザーがなくなるまで存続します。マウントポイントが別のマウント名前空間で使用されている場合、ip netns deleteが失敗することがあります。

すべての目的に使用できるわけではありませんが、間違いなく最も簡単なルートです。


4

deitchの答えに基づいて私のために働いたのは、カスタムnetnsからコマンドを実行することです。

ip netns exec myns ip link set eth10 netns 1

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.