web-dev-qa-db-ja.com

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

私は単に持つことができますが、例えばsshdchroot環境( "chrootenv")では、その親( "parentenv")とは異なるポートをリッスンします。その環境にIPとホスト名を追加し、 thatIPのポート22をリッスンするsshdを持っています。基本的には、このようなchroot環境をネットワーク内の別個のホストのように動作すること。どうすればこれを達成できますか?それとも、これは [〜#〜] lxc [〜#〜] またはユーザーモードLinux(私は経験が不足しています)の方が適していますか?

5
Tobias Kienzler

通常、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

そして今、あなたはあなたのchrootとIFを持っています。

しかし、次の質問は次のとおりです。Linuxコンテナー(LXC、OpenVZ、VServer)を使用すると、より速く、より簡単になると思いませんか?インターフェイスを備えたchrootはLinuxコンテナとまったく同じものではありませんか?一般的に、セキュリティの問題が問題にならない場合は、それが私のやり方です。

編集:

わかりました、あなたの窮状が見えます。それでも、1つの可能性があります。同じカード上に2つの仮想インターフェイスを作成し、両方がDHCPからIPアドレスを取得していることを確認します。次に、それらの1つにバインドするようにsshを構成します。これは、sshクライアントとsshサーバーの両方で実行できます。クライアントの場合、命令は次のとおりです。

 ssh -b ip.address.tobin.to

サーバーの場合は、命令を使用する必要があります

 ListenAddress ip.address.tobind.to

ファイル/ etc/ssh/sshd_configにあります。このようにして、ホストに1つのインターフェースのみを使用するように強制しました。次に、chroot jailに入り、otherインターフェースを使用します。私はbusybox機能に不安を感じているので、これがうまくいくと断言することはできません。しかし、これが通常のPCのchroot刑務所である場合は機能します。

8
MariusMatutiae

このツール 便利かもしれません:

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

概要

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

新しいシステムホスト名で新しいutsname名前空間を作成し、コマンドを実行します。これは、システムの他の部分から独立したホスト名を持つchrootを作成する場合に特に便利です。

この機能には、CONFIG_UTS_NS = yのLinux2.6.19以降が必要です。

チャームのように機能します。 @MariusMatutiaeによって提案された回答のレシピに対する利点は、namespaceを設定する必要がないことです(vethのe.t.cを追加)。欠点-chrooted環境に個別のIPアドレスを割り当てることができない

0
Serge