ネットワークネームスペース(非)分離?

ネットワークネームスペース(非)分離?

私はLinuxとネットワーキングについて研究し、名前空間を見つけました。記事を読んで設定方法を学んだ後、混乱しました。

システムにアプリケーションがインストールされていて、グローバルネームスペース(ネームスペースなし)で実行している場合は、ホストのIPアドレスを使用してLANからWeb GUIに接続できます。名前空間を作成するときに仮想アダプタを作成したり、他の作業を実行する前に名前空間でアプリケーションを開いたりすると、同じIPを使用してLANから接続できます。

サービスの開始に使用するコマンドは次のとおりです。

sudo ip netns exec blue service *application* start

私が理解したところによると、「ネットワーク」ネームスペースはプロセスを分離する必要があるということです。それでは、私が何を見逃しているのでしょうか?

しかし、私は通常、名前空間に次のディレクティブを使用します。

Linuxネットワークネームスペースの紹介

答え1

それでは、私が何を見逃しているのでしょうか?

あなたが逃しているのは、本質的にネットワークネームスペースをエスケープするserviceことと通信することです。initアプリケーションは、デフォルトではinitシステムと同じネットワーク名前空間で実行されます。

本質的に問題は、アプリケーションデーモンバイナリ(名前空間を維持する)に限定されないことですservice。代わりに、単にUnixドメインソケットを介してパラメータを渡します。さらに、セキュリティコンテナは、このようなことが起こらないようにファイルシステムを隔離します。forkexecinit

私はアプリケーションデーモンバイナリを直接呼び出します(ip netns exec [namespace]もちろん、以下を参照)。または、実際のコンテナソフトウェアを使用するか、他の人がすでにすべてのトリッキーな詳細を解決しました...

関連情報