2つのネットワーク名前空間(ns1とns2)が正常に作成され、veth接続を介して接続されました。それらは互いにうまくpingでき、SSHを介して互いに接続することもできます(Sshdが起動した場合)。
今私が望むのは、ns1(viとしましょう)内で見ることができない、または少なくともns2で修正/終了できないいくつかのプロセスを開始することです。それは可能ですか?
使ってみよう
unshare -p vi
ns1ではまだns2では終了します。グローバル/ネイティブネットワークネームスペースから派生したため、グローバル/ネイティブネットワークネームスペースで終了できることを理解できますが、ns2はns1内のプロセスを終了できません。少なくともそれは私が達成したいものです。どんな助けでも大変感謝します。
答え1
Linux名前空間について知っておくべきことがいくつかあります。
- 各名前空間タイプは、特定の項目のみを分離します。たとえば、ネットワーク名前空間はネットワークのみを分離します。
- 多くのネームスペースタイプには一種の継承関係があります(ネットワークネームスペースが完全に分離されるのは一般的ではありません)。
ユーザープロセスが互いに見えないようにするには、作業ツールは「pid名前空間」です。
孤立した環境を作成するために、cgroupでさまざまな名前空間タイプを使用するlxcなどを検討することをお勧めします。
答え2
LinuxネットワークネームスペースはLinux PIDネームスペースとは異なり、完全に異なるシステム/オペレーティングシステムリソースセットを分離するため、これを明確に区別する必要があります。
今はその過程を言う。参加するまたは再接続特定のネットワーク名前空間や他の特定のPID名前空間などの名前空間があります。プロセスは常に多くの名前空間に関連付けられていますが、各タイプ(ネットワーク、マウント、PID、ユーザー...)のうちの1つだけが関連付けられています。
「プロセスの終了」について話すとき、これはネットワークネームスペースにはまったく適用されません。ネットワークネームスペースは、IPスタック、ネットワークインターフェイス、アドレス設定、ルーティング設定などの分離を提供します。。
プロセスを「見て」殺すことはアクセス権とPIDスペースの問題であるため、これは次のことに関連しています。PID名前空間代わりに。 「See」は以下にも関連がある場合があります。マウントネームスペースそれらを見るとき/proc
。