これは、オンボードIPMI BMCを含むX8DT3マザーボードを備えたSuperMicroサーバーです。この場合、BMCは Winbond WPCM45 )です。多くのDellサーバーがこれを同様のBMCモデルで使用していると思います。
IPMIの一般的な方法は、プライベートでルーティングできないネットワークにそれを分離することです。私たちの場合、すべてのIPMIカードは、外部へのルートがない192.168.1.0/24のプライベート管理LANに接続されています。ラップトップを192.168.1.0/24ネットワークに接続すると、リモートコンソールを含むすべてのIPMI機能が期待どおりに動作することを確認できます。
何らかの暗号化された接続を介して、別のネットワークからすべてのIPMI機能にアクセスする必要があります。
SSHポートフォワーディングを試しました。これはいくつかのサーバーでは問題なく機能しますが、100台近くのサーバーがあり、100台のサーバーで6つのポートを転送するSSHクライアント構成を維持することは現実的ではありません。
だから私は SOCKSプロキシ を試してみると思いました。これは機能しますが、リモートコンソールアプリケーションがシステム全体のプロキシ設定に従っていないようです。
SOCKSプロキシをセットアップしました。詳細なログにより、ネットワークアクティビティ、およびポートが転送されているかどうかを確認できます。
ssh -v -D 3333 [email protected]
SOCKSプロキシを使用するようにシステムを構成します。 JavaがSOCKSプロキシ設定を使用していることを確認します。
SOCKSプロキシは機能しています。 http://192.168.1.100/ でBMCに接続するには、Webブラウザーを使用します。ログイン、サーバーヘルスの表示、マシンの電源のオン/オフなどができます。SSHの詳細なログが有効になっているため、進行状況を確認できます。
ここで注意が必要です。
「Launch Console」ボタンをクリックして、jviewer.jnlp
というファイルをダウンロードします。 JNLPファイル はJava Web Startで開きます。
A Javaウィンドウが開きます。タイトルバーには、タイトルバーに「リダイレクトビューア」と表示されています。「ビデオ」「キーボード」「マウス」などのメニューがあります。これにより、Javaは、プロキシを介してアプリケーションをダウンロードし、アプリケーションを起動できます。
60秒後、アプリケーションがタイムアウトし、単に「ビデオソケットを開くときにエラーが発生しました」と表示されます。これが screenshot です。これが機能した場合、VNCスタイルのウィンドウが表示されます。 SSHログに、ポート5900/5901への接続試行がないことが示されています。これは、Java=アプリケーションがVNCアプリケーションを開始したが、VNCアプリケーションはシステム全体のプロキシ設定を無視するため、リモートホストに接続できないことを示唆しています。
Javaは私のシステム全体のプロキシ設定に従っているようですが、このVNCアプリケーションはそれを無視しているようです。
このVNCアプリケーションがシステム全体のプロキシ設定を使用するように強制する方法はありますか?
VPNが実際の最善策かもしれません。非ローカルトラフィックのみがVPNを通過しなければならないように、ルーターにACLを設定します。非常にシンプルで安全であり、管理も簡単です。
私はこれにsocksプロキシを使用しないことが最善であると考えましたが、代わりにlocalhost IPで必要なすべてのポートを転送します。既存のサービスを回避するために、127.0.0.1とは異なるIPを使用しています。 127.0.0.2を選択し、プロキシの背後にあるサーバーが192.168.1.1であるとすると、これは使用するsshコマンドです。
ssh user @ proxy-server -L127.0.0.2:443:192.168.1.1:443 -L127.0.0.2:5900:192.168.1.1:5900 -L127.0.0.2:5901:192.168.1.1:5901 -L127 .0.0.2:5120:192.168.1.1:5120 -L127.0.0.2:5123:192.168.1.1:5123 -C
次に、 https://127.0.0.2 を参照して、通常どおりKVMを使用します。
転送されたTCPポートは、コントロールとビデオで5900と5901、仮想CDで5120、仮想フロッピーで5123です(後者の2つはテストしていません)。圧縮用に-Cを追加しましたが、送信されたものが圧縮に適しているかどうかはわかりません。
別の、少し快適な(そして理論的にはパフォーマンスが良い)Linuxの方法は、透過的に sshuttle を使用することですiptablesとプロキシサーバー上のTCPインタプリタを使用して、ssh経由ですべてのpython接続を転送します。
sshuttle -r user @ proxy-server 192.168.1.1
ヒント:sshuttleはDebianでパッケージ化されています。
まだ転送できなかったのは、IPMIのCLI接続であるipmitoolに使用できるUDPポート623です。 ありあるいくつか これに関するチュートリアルですが、私にはうまくいきませんでした。とにかく、Java KVMで十分です。