ネットワークネームスペース内で隔離されたネームスペースを開始する

ネットワークネームスペース内で隔離されたネームスペースを開始する

2つのネットワーク名前空間(ns1とns2)が正常に作成され、veth接続を介して接続されました。それらは互いにうまくpingでき、SSHを介して互いに接続することもできます(Sshdが起動した場合)。

今私が望むのは、ns1(viとしましょう)内で見ることができない、または少なくともns2で修正/終了できないいくつかのプロセスを開始することです。それは可能ですか?

使ってみよう

unshare -p vi

ns1ではまだns2では終了します。グローバル/ネイティブネットワークネームスペースから派生したため、グローバル/ネイティブネットワークネームスペースで終了できることを理解できますが、ns2はns1内のプロセスを終了できません。少なくともそれは私が達成したいものです。どんな助けでも大変感謝します。

答え1

Linux名前空間について知っておくべきことがいくつかあります。

  1. 各名前空間タイプは、特定の項目のみを分離します。たとえば、ネットワーク名前空間はネットワークのみを分離します。
  2. 多くのネームスペースタイプには一種の継承関係があります(ネットワークネームスペースが完全に分離されるのは一般的ではありません)。

ユーザープロセスが互いに見えないようにするには、作業ツールは「pid名前空間」です。

孤立した環境を作成するために、cgroupでさまざまな名前空間タイプを使用するlxcなどを検討することをお勧めします。

答え2

LinuxネットワークネームスペースはLinux PIDネームスペースとは異なり、完全に異なるシステム/オペレーティングシステムリソースセットを分離するため、これを明確に区別する必要があります。

今はその過程を言う。参加するまたは再接続特定のネットワーク名前空間や他の特定のPID名前空間などの名前空間があります。プロセスは常に多くの名前空間に関連付けられていますが、各タイプ(ネットワーク、マウント、PID、ユーザー...)のうちの1つだけが関連付けられています。

「プロセスの終了」について話すとき、これはネットワークネームスペースにはまったく適用されません。ネットワークネームスペースは、IPスタック、ネットワークインターフェイス、アドレス設定、ルーティング設定などの分離を提供します。

プロセスを「見て」殺すことはアクセス権とPIDスペースの問題であるため、これは次のことに関連しています。PID名前空間代わりに。 「See」は以下にも関連がある場合があります。マウントネームスペースそれらを見るとき/proc

関連情報