まず、これいいえセキュリティ上の理由から、または本番環境で使用するためのものです。これは、VM(時間とリソースのオーバーヘッド)やLXC(バージョン要件と不要な複雑さ)を使用せずに、比較的低い仕様のワークステーションで他の構成管理システムを使用したいためです。 Chrootは比較的安全ではありませんが、インストールは迅速かつ簡単です。
とにかく:chroot環境と仮想イーサネットインタフェース(eth0:1など)がある場合、chrootのプログラムが常に仮想インタフェースを使用することをどのように保証できますか?
真のネットワーク分離は必要ありません。つまり、chrootの内部に実際のインターフェースは表示されません。私はchrootプログラムがホスト(または他のchroot)とは異なるIPアドレスに応答してPuppetなどのサーバー/クライアント設定を正しく使用できるようにしたいと思います。
ホストシステムはDebian Wheezy x64を実行します。
たぶん私が間違った方向に行っているかもしれません。私が望むのは、複数のchrootを持ち、ホストシステムのホスト名を介して各chrootにアクセスできることです。それは可能ですか?
答え1
Chrootはここでは役に立ちません。ファイル名にのみ影響し、ネットワークやその他の機能には影響しません。
最新バージョンのLinuxでは、環境の特定の側面を徐々に仮想化する方法を提供しています。名前空間。従来のファイル名の仮想化(chrootプロセスはchroot以外のファイルを表示できない)に加えて、chroot
プロセスIDを仮想化することもできます(したがって、PID名前空間内のプロセスは名前空間外のプロセスにシグナルを送信または追跡できません)。 、ユーザー(したがって、ユーザーの名前空間内のユーザー1234は、名前空間の外のユーザー1234とは無関係です)など、あなたは興味がありますネットワークネームスペース、プロセスには独自のネットワークインターフェイス、IPアドレス、ルートなどがあります。
私は読書をお勧めしますMichael Kerriskの優れたLWN記事シリーズ、少なくとも紹介および記事があるべきです。ネットワークネームスペース。
ネットワークネームスペースはカーネル2.6.29(以前のバージョンで部分的に実装可能)から使用されており、RHEL5 / CentOS5を除くすべての最新のディストリビューションで動作します。カーネル3.8以降、ネットワークネームスペースをユーザーネームスペースと組み合わせて、ネームスペース外のルート権限なしでネームスペース内でネットワーク設定を実行することもできます。 wheezyの3.2などの古いカーネルでは、まずホストシステムへのルートアクセスが必要です。ユーザーの名前空間を作成します。ユーザーツールはカーネル機能よりも遅くなるため、現在多くのシステムにはカーネル機能を最大限に活用できるツールはありません。 Debian wheezy が付属unshare
、これは名前空間を作成するのに十分ですが、シェルnsenter
ラッパーが不足しています。setns
ホストの名前空間内で動作します(7月から不安定な状態に入る)。
バラよりLinuxでサブプロセスを「オフライン」(外部ネットワークなし)として実行するコマンドネットワークネームスペースを作成する簡単な例です。スコットローのブログより詳細なチュートリアルがあります。
答え2
回答:かなり広範なGoogle検索でわかっている限り、chrootにネットワークネームスペースがないため、これは不可能です。何らかの方法でchroot環境に独自のIP、ホスト名、FQDNなどを割り当てることはできません。
Chrootは、個々のプログラムやデーモンを保護するのに役立ちます。あらゆる種類の隔離されたテストシステムを作成するのにはほとんど役に立たないようです。