chroot環境に追加のIP /ホスト名を割り当てる方法は?

chroot環境に追加のIP /ホスト名を割り当てる方法は?

たとえば、環境(「chrootenv」)を親環境(「parentenv」)とは異なるポートでリッスンさせることもできますが、sshd環境に追加のIPおよびホスト名があり、リッスンすることがchrootより便利です。sshdそれIPポート22. だから、基本的にchrootネットワーク上の別のホストのように動作するように環境を設定したいと思います。これはどのように達成できますか?それともこれは何ですか?LXCそれとも、ユーザーモードのLinux(私の経験の欠如)がより適していますか?

答え1

通常、chroot はユーザーに自分の IF を付与するのではなく、「権限を制限する」ことです。

しかし、とにかく何かをしたい場合は、新しいネットワークネームスペースでchroot環境を起動できます。紹介を探すここ。次に、上記のガイドで新しいネットワーク名前空間に配置する最後のコマンドは次のとおりです。

 ip netns exec NAME_OF_THE_NET_NS /bin/bash

一般的なコマンドセットに従うことができます。

sudo mount -o bind /proc /pathtochroot/proc
sudo mount -o bind /dev /pathtochroot/dev
sudo mount -o bind /dev/pts /pathtochroot/dev/pts
sudo mount -o bind /sys /pathtochroot/sys
sudo chroot /pathtochroot /bin/bash

これでIFを使ったchrootができました。

しかし、提起される質問は次のとおりです。 Linuxコンテナ(LXC、OpenVZ、VServer)を使用する方が高速で簡単になると思いませんか?インタフェースを持つchrootはLinuxコンテナと同じではありませんか?通常、これはセキュリティが問題にならないときに行うことです。

編集する:

さて、あなたのジレンマを知っています。それでも可能性はあります。同じカードに 2 つの仮想インターフェイスを作成し、両方とも DHCP から IP アドレスを取得することを確認します。次に、そのいずれかにバインドするようにsshを設定します。 SSHクライアントとSSHサーバーの両方に対してこれを行うことができます。クライアントの場合、指示は次のとおりです。

 ssh -b ip.address.tobin.to

そしてサーバーの場合は、ディレクティブを使用する必要があります。

 ListenAddress ip.address.tobind.to

/etc/ssh/sshd_config ファイルにあります。これにより、ホストが1つのインターフェイスのみを使用するように強制できます。それからchroot刑務所に入り、それを使用してください。その他相互作用。私はbusyboxの機能についてよくわからないので、これがうまくいくとは確かに言うことはできません。しかし、これが通常のコンピュータのchroot刑務所であればうまくいくでしょう。

答え2

このツール以下を行うと便利です。

chname は、新しいシステムホスト名を使用してコマンドまたはインタラクティブシェルを実行します。

要約

chnameホスト名[コマンド...]説明

新しいシステムホスト名を使用して新しいutsname名前空間を作成し、コマンドを実行します。これは、システムの残りの部分とは独立したホスト名でchrootを生成するのに特に役立ちます。

この機能を使用するには、Linux 2.6.19以降とCONFIG_UTS_NS = yが必要です。

奇跡的に動作します。 @MariusMatutiaeが提案した答えのレシピに比べて利点は、設定namespace(vethの追加など)が必要ないことです。欠点 -chrooted環境に個々のIPアドレスを割り当てることができない。

関連情報